以下是一个完整的 launch
文件,其中包括加载 URDF 模型、启动 Gazebo 仿真环境、加载控制器配置、启动差分驱动控制器,以及在 RViz 中显示模型。
1. 确保 URDF 文件
首先,确保你的 URDF 文件(.xacro
文件)已经准备好。假设你的 .xacro
文件位于 my_robot_gazebo/urdf/my_robot.xacro
。
2. 创建 launch 文件
接下来,创建一个 launch
文件来加载 URDF 模型、启动 Gazebo 仿真环境、加载控制器配置、启动差分驱动控制器,并在 RViz 中显示模型。
launch/robot_with_rviz.launch
:
<launch>
<!-- Load URDF -->
<param name="robot_description" command="$(find xacro)/xacro '$(find my_robot_gazebo)/urdf/my_robot.xacro'" />
<!-- Load joint controller configurations from YAML file to parameter server -->
<rosparam file="$(find my_robot_gazebo)/config/diff_drive_controller.yaml" command="load"/>
<!-- Spawn controllers -->
<node name="controller_spawner" pkg="controller_manager" type="spawner" respawn="false" output="screen"
args="diff_drive_controller"/>
<!-- Launch Gazebo -->
<include file="$(find gazebo_ros)/launch/empty_world.launch">
<arg name="paused" value="false"/>
<arg name="use_sim_time" value="true"/>
<arg name="gui" value="true"/>
<arg name="headless" value="false"/>
<arg name="debug" value="false"/>
</include>
<!-- Spawn robot in Gazebo -->
<node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model" respawn="false" output="screen"
args="-urdf -model my_robot -param robot_description"/>
<!-- Launch RViz with a predefined configuration -->
<node name="rviz" pkg="rviz" type="rviz" args="-d $(find my_robot_gazebo)/config/rviz_config.rviz" required="true"/>
<!-- Publish static TF for robot base -->
<node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher">
<param name="publish_frequency" type="double" value="50.0" />
<param name="tf_prefix" value=""/>
</node>
</launch>