gazebo_ros包是gazebo软件和ROS软件交互的bridge!
一、ROS如何打开gazebo?
1.新建luanch文件调用empty.world,间接打开gazebo软件,设置GUI为true!
2.roslaunch启动对应的luanch文件
二、ROS如何把机器人模型放入gazebo中?
1.新建luanch文件调用empty.world,间接打开gazebo软件,设置GUI为true!
2.launch文件中调用gazebo_ros包,使用spwan节点加载URDF或SDF机器人模型
3.roslaunch启动对应的luanch文件
三、如何让gazbo加载URDF模型?
1.gazebo无法直接加载URDF模型,必须使用ROS才能让gazebo加载URDF模型
2.新建luanch文件调用empty.world,间接打开gazebo软件,设置GUI为true!
3.launch文件中调用gazebo_ros包,使用spwan节点加载URDF模型
4.roslaunch启动对应的luanch文件
四、如何让gazbo加载SDF模型?
4.1 gazebo直接加载
1.新建文件夹和model.config文件
2.model.config文件包含机器人sdf文件
3.打开gazebo,添加文件夹路径,加载机器人
4.2 通过ROS加载
1.新建luanch文件调用empty.world,间接打开gazebo软件,设置GUI为true!
2.launch文件中调用gazebo_ros包,使用spwan节点加载SDF机器人模型
3.roslaunch启动对应的luanch文件
五、附录
5.1 ROS打开gazebo的launch文件
<launch>
<!-- 启动Gazebo -->
<include file="$(find gazebo_ros)/launch/empty_world.launch">
<arg name="world_name" value="your_world.world"/> <!-- 指定你的世界文件, 如果使用默认世界, 这行可以省略 -->
<arg name="paused" value="false"/> <!-- 启动时是否暂停仿真 -->
<arg name="use_sim_time" value="true"/> <!-- 使用仿真时间 -->
<arg name="gui" value="true"/> <!-- 是否启动Gazebo GUI -->
<arg name="headless" value="false"/> <!-- 是否为无头模式,对于服务器部署很有用 -->
<arg name="debug" value="false"/> <!-- 是否启动GDB调试 -->
</include>
</launch>
5.2 ROS把机器人模型放入gazebo中
<launch>
<!-- 加载机器人的URDF到参数服务器 -->
<param name="robot_description" command="$(find xacro)/xacro.py '$(find your_package_name)/urdf/your_robot_model.urdf.xacro'" />
<!-- 启动Gazebo -->
<include file="$(find gazebo_ros)/launch/empty_world.launch">
<arg name="world_name" value="your_world.world"/> <!-- 指定你的世界文件, 如果使用默认世界, 这行可以省略 -->
<arg name="paused" value="false"/> <!-- 启动时是否暂停仿真 -->
<arg name="use_sim_time" value="true"/> <!-- 使用仿真时间 -->
<arg name="gui" value="true"/> <!-- 是否启动Gazebo GUI -->
<arg name="headless" value="false"/> <!-- 是否为无头模式,对于服务器部署很有用 -->
<arg name="debug" value="false"/> <!-- 是否启动GDB调试 -->
</include>
<!-- 启动Gazebo中的ROS控制器管理器 -->
<node name="spawn_urdf" pkg="gazebo_ros" type="spawn_model" args="-urdf -model my_robot -param robot_description" respawn="false"/>
</launch>
5.3 gazbo加载URDF模型
<launch>
<!-- 启动Gazebo -->
<include file="$(find gazebo_ros)/launch/empty_world.launch">
<arg name="world_name" value="your_world.world"/> <!-- 指定你的世界文件, 如果使用默认世界, 这行可以省略 -->
<arg name="paused" value="false"/> <!-- 启动时是否暂停仿真 -->
<arg name="use_sim_time" value="true"/> <!-- 使用仿真时间 -->
<arg name="gui" value="true"/> <!-- 是否启动Gazebo GUI -->
<arg name="headless" value="false"/> <!-- 是否为无头模式,对于服务器部署很有用 -->
<arg name="debug" value="false"/> <!-- 是否启动GDB调试 -->
</include>
<!-- 启动Gazebo中的ROS控制器管理器 -->
<node name="spawn_urdf" pkg="gazebo_ros" type="spawn_model" args="-urdf -model my_robot -file /path/your/model.urdf" respawn="false"/>
</launch>
5.4 gazbo通过ROS加载SDF模型
<launch>
<!-- 启动Gazebo -->
<include file="$(find gazebo_ros)/launch/empty_world.launch">
<arg name="world_name" value="your_world.world"/> <!-- 指定你的世界文件, 如果使用默认世界, 这行可以省略 -->
<arg name="paused" value="false"/> <!-- 启动时是否暂停仿真 -->
<arg name="use_sim_time" value="true"/> <!-- 使用仿真时间 -->
<arg name="gui" value="true"/> <!-- 是否启动Gazebo GUI -->
<arg name="headless" value="false"/> <!-- 是否为无头模式,对于服务器部署很有用 -->
<arg name="debug" value="false"/> <!-- 是否启动GDB调试 -->
</include>
<!-- 启动Gazebo中的ROS控制器管理器 -->
<node name="spawn_urdf" pkg="gazebo_ros" type="spawn_model" args="-sdf -model my_robot -file /path/your/model.sdf" respawn="false"/>
</launch>