鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    视频课程6.5.2节lanuch启动文件发生错误

    已定时 已固定 已锁定 已移动
    ROS 2相关问题
    gazebo报错 yaml格式错误
    3
    3
    358
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • J
      jbarry1985
      最后由 编辑

      按照视频教程一步步操作到这一节,之前都没问题,和源代码反复比对过,但是加入gazebo_ros2_control插件后,启动launch文件报错,报错内容如下:
      [gzserver-2] [INFO] [1731550481.040643708] [gazebo_ros2_control]: Loading parameter files /home/ros_humble/fishros/chapt6/chapt6_ws/install/fishbot_description/share/fishbot_description/config/fishbot_ros2_controller.yaml
      [gzserver-2] [rcutils|error_handling.c:65] an error string (message, file name, or formatted message) will be truncated
      [gzserver-2] [ERROR] [1731550481.041791477] [gazebo_ros2_control]: parser error Couldn't parse parameter override rule: '--param robot_description:=<?xml version="1.0" ?>
      [gzserver-2] <!-- =================================================================================== -->
      [gzserver-2] <!-- | This document was autogenerated by xacro from /home/ros_humble/fishros/chapt6/chapt6_ws/install/fishbot_description/share/fishbot_description/urdf/fishbot/fishbot.urdf.xacro | -->
      [gzserver-2] <!-- | EDITING THIS FILE BY HAND IS NOT RECOMMENDED | -->
      [gzserver-2] <!-- =================================================================================== -->
      [gzserver-2] <robot name="fishbot">
      [gzserver-2] <!-- base_footprint -->
      [gzserver-2] <link name="base_footprint"/>
      [gzserver-2] <link name="base_link">
      [gzserver-2] <!-- 部件的外观描述 -->
      [gzserver-2] <visual>
      [gzserver-2] <!-- 沿着自己几何中心的偏移和旋�, at ./src/rcl/arguments.c:343

      初步怀疑是fishbot_ros2_controller.yaml文件格式有误,但多次调试后仍无效,望指教,万分感谢!

      小鱼小 1 条回复 最后回复 回复 引用 0
      • 小伊小
        机器人小伊
        最后由 编辑

        根据您提供的错误信息,问题似乎出在 fishbot_ros2_controller.yaml 文件中对 robot_description 参数的覆盖规则上。错误提示表明,尝试解析一个 XML 格式的字符串(即 URDF 描述)作为参数时发生了错误,这通常是因为参数格式不正确或者参数传递方式有误。

        问题分析

        1. 参数覆盖错误:错误信息显示,尝试解析的 XML 字符串被错误地格式化为命令行参数(特别是 --param robot_description:=... 部分)。这通常意味着在 launch 文件中,robot_description 参数可能以错误的方式被传递给了 gazebo_ros2_control 插件。

        2. XML 格式:从错误输出看,XML 字符串(即 URDF)被原样输出为命令行参数的一部分,这通常不应该发生。通常,URDF 文件应该被正确加载并解析为二进制数据,然后通过参数服务器传递给 gazebo。

        解决步骤

        1. 检查 launch 文件:

          • 确保 robot_description 参数是通过 <param> 标签正确设置的,而不是通过命令行参数。例如:
            <param name="robot_description" command="$(find xacro)/xacro '$(find fishbot_description)/urdf/fishbot/fishbot.urdf.xacro'" />
            
          • 确保没有使用类似 --param robot_description:=... 的命令行参数传递方式。
        2. 检查 gazebo_ros2_control 插件的启动配置:

          • 在 launch 文件中,检查 gazebo_ros2_control 插件的启动配置,确保它正确地从参数服务器获取 robot_description。
          • 例如,如果使用 <node> 标签启动 gazebo_ros2_control,确保没有错误地将 XML 字符串作为参数直接传递。
        3. 验证 URDF 文件:

          • 确保 fishbot.urdf.xacro 文件是有效的,并且可以被 xacro 正确解析。
          • 你可以单独运行 xacro 命令来检查是否有解析错误:
            xacro '$(find fishbot_description)/urdf/fishbot/fishbot.urdf.xacro'
            
          • 这应该输出一个完整的 URDF XML,没有错误。
        4. 清理和重建:

          • 清理你的工作空间(colcon clean),然后重新构建(colcon build)。
          • 确保所有依赖项都是最新的,特别是 gazebo_ros2_control 和相关 ROS 2 组件。
        5. 重新启动 gazebo:

          • 使用更新后的 launch 文件重新启动 gazebo。

        如果以上步骤仍然无法解决问题,建议检查 gazebo_ros2_control 的文档和社区,看看是否有其他人遇到并解决了类似的问题。此外,确保你的 ROS 2 和 gazebo 版本兼容,并且所有相关组件都正确安装和配置。


        以上为生成回答,仅供参考~

        我是小伊,已接入ChatGpt,所有回复,仅供参考~

        1 条回复 最后回复 回复 引用 0
        • 小鱼小
          小鱼 技术大佬 @jbarry1985
          最后由 编辑

          @jbarry1985 大概率是 yaml 或者 urdf 文件格式问题,可以复制粘贴配套源码中的测试

          新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

          1 条回复 最后回复 回复 引用 0
          • 第一个帖子
            最后一个帖子
          皖ICP备16016415号-7
          Powered by NodeBB | 鱼香ROS