写在前面
以下是ROS仿真软件Gazebo和AirSim的使用教程整理:
1、Gazebo
Gazebo官方使用教程:https://gazebosim.org/docs/latest/getstarted/
Gazebo实践项目教程:https://github.com/bunchofcoders/basic_bocbot
2、AirSim
AirSim官方使用教程:https://microsoft.github.io/AirSim/airsim_tutorial_pkgs/
一、Gazebo仿真教程
1. 环境安装与配置
-
安装ROS-Gazebo接口包:确保已安装必要的ROS插件包,例如:
sudo apt install ros-<distro>-gazebo-ros-pkgs ros-<distro>-gazebo-msgs ros-<distro>-gazebo-plugins ros-<distro>-gazebo-ros-control
这些包提供了Gazebo与ROS通信的接口、传感器插件和控制模块。
-
模型下载与路径配置:
下载Gazebo模型库并设置环境变量:cd ~/.gazebo/ git clone https://github.com/osrf/gazebo_models models rm -rf models/.git # 删除.git目录避免冲突 echo 'export GAZEBO_MODEL_PATH=~/your_model_path:$GAZEBO_MODEL_PATH' >> ~/.bashrc source ~/.bashrc
2. 机器人模型构建
-
使用Xacro定义模型:在URDF/Xacro文件中定义机器人结构、传感器及插件。例如激光雷达配置:
<sensor type="ray" name="rplidar"> <update_rate>5.5</update_rate> <ray> <scan> <horizontal> <samples>360</samples> <min_angle>-3</min_angle> <max_angle>3</max_angle> </horizontal> </scan> </ray> <plugin filename="libgazebo_ros_laser.so"> <topicName>/scan</topicName> <frameName>laser</frameName> </plugin> </sensor>
需通过
<xacro:include>
整合模型文件。 -
添加Gazebo控制器:
在模型文件中插入gazebo_ros_control
插件,以支持ROS控制器:<plugin name="gazebo_ros_control" filename="libgazebo_ros_control.so"> <robotNamespace>/robot_namespace</robotNamespace> </plugin>
3. 启动仿真与可视化
-
加载仿真环境:通过Launch文件启动Gazebo和机器人模型:
<launch> <include file="$(find gazebo_ros)/launch/empty_world.launch"> <arg name="world_name" value="your_world_file.world"/> </include> <node name="spawn_urdf" pkg="gazebo_ros" type="spawn_model" args="-urdf -model robot_name -param robot_description"/> </launch>
支持加载不同预置环境(如
empty_world
、turtlebot3_house
)。 -
RViz可视化:
在RViz中添加LaserScan
或Camera
话题(如/scan
或/camera/image
),并配置坐标系。
4. 控制与调试
- 键盘控制:使用
teleop_twist_keyboard
发布速度指令:ros2 run teleop_twist_keyboard teleop_twist_keyboard --ros-args -r __ns:=/robot_namespace
- 查看节点与话题:
通过ros2 node list
和ros2 topic list
监控通信状态,例如激光数据带宽分析:ros2 topic bw /scan # 查看激光数据带宽
二、AirSim仿真教程
1. 环境安装
- AirSim与ROS包编译:
从源码编译airsim_ros_pkgs
,并指定GCC版本(需≥8):cd AirSim/ros catkin build airsim_tutorial_pkgs -DCMAKE_C_COMPILER=gcc-8 -DCMAKE_CXX_COMPILER=g++-8 source devel/setup.bash
2. 配置文件设置
- 修改
settings.json
:
配置传感器参数(如相机、激光雷达)并保存至~/Documents/AirSim/
:{ "Vehicles": { "Drone1": { "Sensors": { "LidarSensor1": { "SensorType": 6, "NumberOfChannels": 16 } } } } }
3. 启动仿真与ROS集成
- 运行示例:加载预置无人机模型并启动ROS节点:
roslaunch airsim_tutorial_pkgs front_stereo_and_center_mono.launch
- 数据可视化:在RViz中订阅话题(如
/airsim_node/Drone1/lidar/LidarSensor1
)显示点云数据。
4. Gazebo模型导入AirSim
- 模型转换:将Gazebo的URDF/SDF模型转换为AirSim支持的格式,需调整材质和碰撞属性,并通过虚幻引擎导入。
三、关键区别与适用场景
特性 | Gazebo | AirSim |
---|---|---|
物理引擎 | 基于ODE/Bullet,适合机器人动力学仿真 | 基于虚幻引擎,侧重视觉渲染与环境交互 |
传感器支持 | 激光雷达、RGB-D、IMU等传统传感器 | 高精度相机、激光雷达,支持深度学习框架 |
应用场景 | 工业机器人、自动驾驶(地面车辆) | 无人机、计算机视觉研究 |
ROS集成 | 原生支持ROS1/ROS2,插件丰富 | 需通过airsim_ros_pkgs 桥接,依赖ROS1 |
四、常见问题
- Gazebo模型加载失败:检查URDF文件中的
<gazebo>
标签及插件路径,确保环境变量正确。 - AirSim编译错误:确认GCC版本≥8,并重新编译ROS包。
- 传感器数据缺失:在RViz中检查话题名称与坐标系是否匹配。