news 2026/10/18 4:15:31

ROS2:Microban 机器人仿真搭建

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ROS2:Microban 机器人仿真搭建

1、系统环境

ROS2-Jazzy + Gazebo

2、项目整体搭建流程

2.1、建立工作空间与包结构

创建 microban_ws 工作空间,建立标准机器人资源包目录:

  • urdf/:机器人模型文件

  • config/:控制器 yaml 配置

  • launch/:仿真启动脚本

  • package.xml:包依赖声明

  • CMakeLists.txt:编译安装规则

2.2、编写核心文件
  • microban.urdf:机器人连杆、关节、传感器、ros2_control 插件

  • controllers.yaml:关节位置控制器、状态广播器配置

  • launch.py:启动 Gazebo、状态发布、机器人生成、桥接、控制器

2.3、依赖安装与编译
  • rosdep 自动安装依赖

  • colcon 编译工作空间

  • source 环境变量启动仿真

3、问题

问题1:colcon build 报错找不到 setup.py

报错原因:package.xml 声明为ament_python包,但本项目是纯资源包(urdf/launch/config),不需要 Python 编译。

解决方法:

  • 将 package.xml 编译类型改为ament_cmake

  • 新建 CMakeLists.txt 实现资源目录安装

问题2:source install/setup.bash 提示不存在

原因:ROS2 Jazzy 新版只生成setup.sh,不再生成 setup.bash。

解决:统一使用:source install/setup.sh

问题3:Gazebo 启动报错 --shadows 参数不存在

原因:Gazebo8(Jazzy 默认)删除了 --shadows 旧参数。

解决:删除 launch 中 --shadows 启动参数。

问题4:ros_gz_bridge No template specialization 桥接失败

原因:Jazzy 桥接语法顺序旧写法颠倒。

正确新格式:/topic@ROS类型@GZ类型

例:/imu@sensor_msgs/msg/Imu@gz.msgs.Imu

问题5:URDF 第770行 noise 标签解析失败

原因:noise 标签未闭合、嵌套错误、非法放置(只能在 IMU 内部)。

解决:

  • 修正标签闭合

  • 或临时删除 noise 块保证模型先跑通

问题6:Gazebo 崩溃:Couldn't parse params-file $(find)

致命核心问题(今天最难的坑)

原因:GZ Sim 插件不支持 ROS 的 $(find) 语法,URDF 中 gz_ros2_control 插件读取 yaml 路径失败,直接导致仿真内核崩溃终止。

临时解决(可跑通仿真):暂时删除 URDF 中的 ros2_control plugin 块、注释 launch 控制器 spawner。

最终根治方案:后续使用绝对路径加载 controllers.yaml。

问题5:RMW 中间件实现未安装

系统环境变量 RMW_IMPLEMENTATION 设置为 rmw_cyclonedds_cpp,但对应的共享库 librmw_cyclonedds_cpp.so 不存在于系统中,导致所有 ROS2 节点无法初始化并崩溃。

错误信息:

failed to load shared library 'librmw_cyclonedds_cpp.so' due to dlopen error: librmw_cyclonedds_cpp.so: cannot open shared object file: No such file or directory

解决方案
方案一:安装 CycloneDDS(推荐)

sudo apt update sudo apt install ros-jazzy-rmw-cyclonedds-cpp # 查看当前 RMW 实现 echo $RMW_IMPLEMENTATION # 验证 ROS2 环境 ros2 doctor --report | grep rmw # 检查已安装的 RMW 包 dpkg -l | grep rmw

安装后重新运行 launch 文件即可。

方案二:切换到默认 RMW 实现
如果不想使用 CycloneDDS,可以切换到 ROS2 默认的 Fast DDS:

# 临时切换(仅当前终端) unset RMW_IMPLEMENTATION # 或 export RMW_IMPLEMENTATION=rmw_fastrtps_cpp # 重新运行 ros2 launch microban microban_gz.launch.py

永久配置(可选)
将 RMW 设置添加到 ~/.bashrc:

# 使用 Fast DDS echo 'export RMW_IMPLEMENTATION=rmw_fastrtps_cpp' >> ~/.bashrc source ~/.bashrc # 或继续使用 CycloneDDS echo 'export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp' >> ~/.bashrc source ~/.bashrc

附加问题:VMware 3D 加速
日志中还出现了 3D 渲染警告:

VMware: No 3D enabled
libEGL warning: egl: failed to create dri2 screen

这可能导致模型渲染异常。如需完整 3D 体验:

关闭虚拟机
VMware 设置 → Display → 启用 Accelerate 3D graphics
分配至少 256MB 显存
重启虚拟机

4、最终成功运行状态

  • Gazebo 正常启动无崩溃

  • URDF 模型解析成功、无 XML 报错

  • robot_state_publisher 正常启动

  • 机器人成功生成在仿真世界

  • 桥接语法错误消除

  • CycloneDDS安装成功

5、后续待完成任务

  1. 修复 ros2_control 绝对路径问题,恢复控制器功能

  2. 优化 URDF 惯性矩阵、增加 dummy_link 消除警告

  3. 恢复 IMU noise 传感器噪声参数

  4. 编写关节控制节点,实现机器人站立、运动控制

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/18 4:12:30

Canvas实战:从零绘制蓝底金星徽章,吃透坐标与路径

Canvas这玩意儿,很多前端新人刚接触时都会觉得,不就是个画图的标签吗?真到自己动手,画个矩形都手抖,更别提画星星了。但你真要能把一面蓝底金星的旗子从零画出来,那些什么坐标运算、绘图路径、像素适配的底…

作者头像 李华
网站建设 2026/10/18 4:07:40

基于Matlab的单模光纤色散分析仿真与色散补偿估算

简介:面向光网络研究者与光通信课程学习者的单模光纤色散分析Matlab程序包,聚焦材料色散与波导色散两大机制,通过设定波长范围与计算间隔,逐点计算对应色散值并绘制总色散、材料色散和波导色散曲线,帮助判断特定波长下…

作者头像 李华
网站建设 2026/10/18 4:06:33

嵌入式软件开发流程:从需求文档到配置审计的落地实践

简介:《嵌入式软件开发流程.doc》是一份围绕嵌入式系统开发流程的实用参考资料,从系统总体设计、硬件基础到软件实现与测试层层递进,适合嵌入式初学者、在校学生以及需要规范开发流程的工程师阅读。压缩包仅含1个doc格式文档,大小…

作者头像 李华
网站建设 2026/10/18 4:06:15

spline-3d-integration - PERFORMANCE

性能与移动端优化 Spline 场景是 WebGL——它们在 GPU 上运行。优化不佳的场景会拉低你的 PageSpeed 得分、在中端设备上卡顿,并消耗移动端电池。把它们当作视频文件而不是图片。 在集成之前——检查场景大小 告诉用户在给你 URL 之前检查场景文件大小。 约 3MB …

作者头像 李华
网站建设 2026/10/18 4:05:31

万能客服22.0.0安装避坑指南:JDK17.0.2+MySQL8.0.33精准适配

简介:聚合客服(万能客服)cy163_customerservice 22.0.0 全开源版安装更新一体包,是一款面向中小企业、开发者及技术团队的轻量级多渠道客服系统解决方案,聚焦解决客户咨询分散、响应滞后、知识复用率低等典型服务痛点。…

作者头像 李华