目录
- 写在前面的话
- 问题一:robot_state_publisher 发布机器人信息失败
- 报错一 Error: Error document empty.
- 报错二 .xcaro 文件中有多行注释
- 成功启动
- 问题二:通过 ros2 启动 gazebo 失败
- 成功启动
- 问题三:gazebo 崩溃和无法显示模型
- 问题四: 缺少 robot_description 等话题
- 正确的输出
写在前面的话
本人学习ROS2的进阶,参考视频:ROS2从初级到高级(LEVEL2):使用 URDF 设计自定义机器人,在 Gazebo 中模拟机器人,在视频第6.8节讲了如何通过终端命令在 gazebo 仿真软件中启动机器人,但是我在实验过程中发现了一下问题,总结一下。
问题一:robot_state_publisher 发布机器人信息失败
ros2 run robot_state_publisher robot_state_publisher --ros-args -p robot_description:="$(xacro src/car_urdf/urdf/car_urdf.urdf)"
报错一 Error: Error document empty.
报错说文件错误,原因是"$xacro src/car_urdf/urdf/car_urdf.urdf.xacro"
这个命令写法要加上括号,改成"$(xacro src/car_urdf/urdf/car_urdf.urdf.xacro)"
就可以了。
Error: Error document empty.
at line 100 in ./urdf_parser/src/model.cpp
Failed to parse robot description using: urdf_xml_parser/URDFXMLParser
terminate called after throwing an instance of 'std::runtime_error'
what(): Unable to initialize urdf::model from robot description
[ros2run]: Aborted
报错二 .xcaro 文件中有多行注释
.xcaro 文件中的多行注释有问题,删除后可以解决,注意要重新编译(colcon build)。
成功启动
问题二:通过 ros2 启动 gazebo 失败
通过 ros2 启动 gazebo 失败,终端卡着,gazebo界面没有显示
ros2 launch gazebo_ros gazebo.launch.py
修改环境变量,在.bashrc文件里面加入source /usr/share/gazebo/setup.bash
,编译即可。
sudo gedit ~/.bashrc
source ~/.bashrc
成功启动
问题三:gazebo 崩溃和无法显示模型
运行 gazebo_ros 的 spawn_entity 节点:获取机器人的发布信息
ros2 run gazebo_ros spawn_entity.py -topic robot_description -entity car_urdf
gazebo 崩溃,弹窗显示是否强制退出,这个不用理会,需要等待个4-5分种即可,但是模型加载进来后(可以从gazebo左边窗口的Models下看到已加载的模型),但是在gazebo右边显示的界面却空空如也。
**但是可以通过右键点击模型名称选择View,勾选Collision,可以在右边窗口看到描述的碰撞体。**这说明模型发布
问题四: 缺少 robot_description 等话题
查看话题,没有发现 robot_description 等话题
ros2 topic list
原因有两个可能 robot_state_publisher 话题关闭了,要不就是没有更新环境空间,要在工作空间目录下使用source ./install/setup.sh
命令就可以解决。