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

    ROS2机器人开发书籍中6.2.4怎么显示出图6-10的效果

    已定时 已固定 已锁定 已移动
    ROS 2相关问题
    ros2机器人开发 书中6.2.4
    3
    5
    232
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • N
      niuniu36
      最后由 编辑

      问题描述:
      根据书上的代码清单6-16 6-17 6-18 6-19 6-20编写代码后,重新构建并运行书P176上所述的display_robot.launch.py及指定模型first_robot.urdf.xacro后,显示结果为书P173的图6-9,于是将first_robot.urdf.xacro改为了fishbot.urdf.xacro,然后就无法在rviz中打开并显示模型

      具体细节和上下文:
      代码均为拷贝您提供的ros2bookcode
      同时参考书籍《ROS2机器人开发》

      base.urdf.xacro
      <?xml version="1.0"?>
      <robot xmlns:xacro="http://www.ros.org/wiki/xacro">

      <xacro:macro name="base_xacro" params="length radius">
          
      
          <link name="base_link">
              <visual>
                  <origin xyz="0 0 0.0" rpy="0 0 0" />
                  <geometry>
                      <cylinder length="${length}" radius="${length}" />
                  </geometry>
                  <material name="blue">
                      <color rgba="0.1 0.1 1.0 0.5"/>
                  </material>
              </visual>
             
          </link>
      
      </xacro:macro>
      

      </robot>

      fishbot.urdf.xacro
      <?xml version="1.0"?>
      <robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="fishbot">
      <xacro:include filename="$(find fishbot_description)/urdf/fishbot/base.urdf.xacro" />
      <!-- 传感器组件 -->
      <xacro:include filename="$(find fishbot_description)/urdf/fishbot/sensor/imu.urdf.xacro" />
      <xacro:include filename="$(find fishbot_description)/urdf/fishbot/sensor/laser.urdf.xacro" />
      <xacro:include filename="$(find fishbot_description)/urdf/fishbot/sensor/camera.urdf.xacro" />

      <xacro:base_xacro length="0.12" radius="0.1" />
      <!-- 传感器 -->
      <xacro:imu_xacro xyz="0 0 0.02" />
      <xacro:laser_xacro xyz="0 0 0.10" />
      <xacro:camera_xacro xyz="0.10 0 0.075" />
      

      </robot>

      尝试过的解决方法:
      将first_robot.urdf.xacro改为了fishbot.urdf.xacro,然后就无法在rviz中打开并显示模型
      e2f9a52d-565d-4e44-aea5-2a5abd567d4e-image.png
      ros2 launch fishbot_description display_robot.launch.py model:=/home/liu/chapt6/chapt6_ws/src/fishbot_description/urdf/fishbot/fishbot.urdf.xacro
      [INFO] [launch]: All log files can be found below /home/liu/.ros/log/2024-09-22-21-11-27-229207-liu-VirtualBox-6648
      [INFO] [launch]: Default logging verbosity is set to INFO
      [ERROR] [launch]: Caught exception in launch (see debug for traceback): executed command failed. Command: xacro /home/liu/chapt6/chapt6_ws/src/fishbot_description/urdf/fishbot/fishbot.urdf.xacro
      Captured stderr output: XML parsing error: mismatched tag: line 19, column 10
      when processing file: /home/liu/chapt6/install/fishbot_description/share/fishbot_description/urdf/fishbot/sensor/camera.urdf.xacro
      included from: /home/liu/chapt6/chapt6_ws/src/fishbot_description/urdf/fishbot/fishbot.urdf.xacro

      Check that:

      • Your XML is well-formed
      • You have the xacro xmlns declaration: xmlns:xacro="http://www.ros.org/wiki/xacro"

      7ea2aa00-e467-4b48-a201-b2f0883f5ae2-image.png

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

        根据您提供的信息和错误日志,问题出现在处理 fishbot.urdf.xacro 文件时,特别是在包含 camera.urdf.xacro 文件时出现了 XML 解析错误。这个错误提示“mismatched tag”,通常意味着在某个 XML 或 XACRO 文件中存在未正确闭合的标签。

        解决步骤

        1. 检查 XML 格式:
          确保所有 XML 和 XACRO 文件都正确闭合了所有标签。这包括 <link>, <visual>, <geometry>, <material> 等所有标签。

        2. 检查 camera.urdf.xacro 文件:
          根据错误日志,问题出现在 camera.urdf.xacro 文件中。请打开这个文件并检查是否有未闭合的标签。特别是查看行 19 附近,因为错误指出是在这里发生的。

          例如,可能的问题包括:

          • <link> 标签没有闭合 (</link>)。
          • <visual>, <geometry>, 或 <material> 标签没有正确闭合。
          • 可能有其他非法的 XML 结构,如缺少结束标签或错误的嵌套。
        3. 验证 XACRO 宏:
          如果 camera.urdf.xacro 使用了 XACRO 宏,请确保这些宏在 base.urdf.xacro 或其他被包含的文件中正确定义,并且也遵循了良好的 XML 格式。

        4. 重新运行 XACRO 并检查输出:
          在命令行中直接运行 XACRO 来查看输出,这可以帮助识别问题:

          xacro /home/liu/chapt6/chapt6_ws/src/fishbot_description/urdf/fishbot/fishbot.urdf.xacro
          

          注意任何可能的错误或警告信息。

        5. 检查文件路径和包含:
          确保所有 XACRO 文件的路径都正确无误,并且所有 xacro:include 语句都指向了正确的文件。

        6. 清理和重建:
          如果之前有过修改,确保清理了旧的构建文件并重新构建了整个工作区:

          colcon build --packages-select fishbot_description
          
        7. 检查 ROS 2 环境:
          确保 ROS 2 环境设置正确,特别是工作空间的路径和 ROS 2 安装路径。

        调试技巧

        • 使用文本编辑器(如 VSCode 或 Sublime Text)的 XML 验证工具来帮助识别格式问题。
        • 在命令行中使用 cat 命令和管道 | 加上 grep 或 less 来查看文件内容,特别是错误指向的行附近的内容。

        通过上述步骤,您应该能够定位并解决导致 XML 解析错误的问题。如果问题仍然存在,可能需要进一步检查所有相关文件和依赖项。


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

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

        1 条回复 最后回复 回复 引用 0
        • N
          niuniu36
          最后由 编辑

          Ubuntu22.04 VirtualBox ROS2 Humble

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

            @niuniu36 在 ROS2机器人开发书籍中6.2.4怎么显示出图6-10的效果 中说:

            Captured stderr output: XML parsing error: mismatched tag: line 19, column 10

            代码有写错的地方

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

            N 1 条回复 最后回复 回复 引用 0
            • N
              niuniu36 @小鱼
              最后由 编辑

              @小鱼 已解决,谢谢~

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