1、Gazebo仿真环境搭建:安装Gazebo、ROS与Gazebo的接口配置、验证仿真环境是否正常
好,咱们直接进入正题。
Gazebo仿真环境搭建,说白了就是给你的机械臂找个“虚拟训练场”。你想想看,真机调试一次成本多高?撞了、摔了、电机烧了,都是真金白银的教训。我刚开始做机器人那会儿,就吃过这个亏——直接在实体上跑算法,结果一个参数没调好,机械臂直接撞到限位,咔的一声,齿轮崩了。从那以后,我再也不敢跳过仿真这一步。
1.1 安装Gazebo——别选错版本
Gazebo的版本和ROS版本是绑定的。我个人习惯用ROS Noetic + Gazebo 11,这个组合最稳。
安装命令很简单,一行搞定:
sudo apt install gazebo11 gazebo11-common gazebo11-plugin-base
装完之后,验证一下:
gazebo --version
如果看到类似 Gazebo multi-robot simulator, version 11.x.x 的输出,说明装好了。
gazebo worlds/empty.world。如果界面能正常打开,没有报错,那基本稳了。
1.2 ROS与Gazebo的接口配置——这一步最容易翻车
ROS和Gazebo之间通信,靠的是一个叫 gazebo_ros_pkgs 的包。这个包负责把ROS的话题、服务、动作等映射到Gazebo里。
安装命令:
sudo apt install ros-noetic-gazebo-ros-pkgs ros-noetic-gazebo-ros-control
嗯,这里要注意:gazebo_ros_control 这个包是专门用来控制关节的,如果你要做机械臂抓取,这个包必须装。
配置完成后,检查一下环境变量:
echo $GAZEBO_MODEL_PATH
echo $GAZEBO_PLUGIN_PATH
如果这两个变量是空的,说明你的环境没配好。我遇到过好几次这种情况,后来发现是 ~/.bashrc 里没加source语句。
正确的做法是在 ~/.bashrc 末尾加上:
source /usr/share/gazebo-11/setup.sh
source 了Gazebo和ROS的setup文件。顺序是:先source ROS,再source Gazebo。
1.3 验证仿真环境是否正常——跑一个简单的测试
环境搭好了,怎么知道它能不能用?我一般用三步验证法:
- 启动ROS核心:
roscore - 启动Gazebo世界:
roslaunch gazebo_ros empty_world.launch - 查看话题列表:
rostopic list
如果一切正常,你应该能看到类似这样的输出:
/clock
/gazebo/link_states
/gazebo/model_states
/gazebo/parameter_descriptions
/gazebo/parameter_updates
/gazebo/set_link_state
/gazebo/set_model_state
/rosout
/rosout_agg
/tf
看到 /clock 和 /gazebo/model_states 这两个话题,就说明ROS和Gazebo已经成功握手了。
roslaunch 启动后Gazebo界面一片空白,没有任何模型。后来发现是 GAZEBO_MODEL_PATH 没设置对,导致Gazebo找不到模型文件。解决办法是在启动前手动设置:export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:/usr/share/gazebo-11/models
1.4 核心知识体系——一张图看懂
下面这张图,是我自己总结的Gazebo仿真环境搭建的核心逻辑。你照着这个流程走,基本不会出大问题。
1.5 总结一下
Gazebo仿真环境搭建,其实就三步:装Gazebo、配接口、跑验证。每一步都有坑,但只要你按照我上面说的来,基本一次过。
我个人觉得,最容易被忽略的就是环境变量配置。很多人装完Gazebo和ROS,直接就开始写代码,结果发现话题收不到、模型加载不出来,折腾半天才发现是环境变量没设对。嗯,这个坑我踩过,所以特意提醒你。
可可精品资料库