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

    ROS2机器人开发书中6.2.3 启动launch后无法修改model参数

    已定时 已固定 已锁定 已移动
    ROS 2相关问题
    ros2 rviz2 launch
    3
    6
    489
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 1
      1286588184
      最后由 编辑

      6.2.3中修改cat获取文件内容为xacro转换格式后,可以正常编译启动launch,但输入修改model参数的指令后,rviz2中的机器人模型并没有变化,显示错误如下(文件路径是我从VScode中点击文件复制的,是正确路径)f277beb0-e5aa-42db-a88a-4dbfb1c1b51e-图片.png
      38c13dc4-0497-4543-afdc-78fecf5d9744-图片.png
      输入指令后
      b4642b17-da3f-40b2-ba64-b1c78ac1cf16-图片.png

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

        在ROS 2中使用launch文件和xacro文件时,如果你尝试在运行时动态修改机器人模型的参数但发现这些修改没有反映在RViz2中,可能是由几个原因导致的。这里有一些步骤和考虑因素可以帮助你解决这个问题:

        1. 确保参数正确设置

        首先,确认你在launch文件中设置的参数是否正确地传递给了xacro文件,并在xacro文件中被正确地使用。xacro文件通过宏和属性来定义URDF或SDF模型,确保这些宏和属性被正确地参数化。

        2. 参数更新时机

        ROS 2中的参数通常是在节点启动时读取的,并在节点运行期间保持不变(除非该节点被设计为监听参数变化并作出响应)。如果你正在尝试通过ros2 param set命令在运行时修改参数,但相关的节点(如加载URDF的节点)没有设计为监听这些参数的变化,那么这些变化就不会反映出来。

        3. 重启相关节点

        如果参数修改确实需要在运行时生效,你可能需要重启那些依赖于这些参数的节点。在ROS 2中,这通常意味着你需要停止并重新启动这些节点,以使新的参数值生效。

        4. 使用动态重新配置(Dynamic Reconfigure)

        如果你的节点支持动态重新配置(Dynamic Reconfigure),你可以使用这种方法来在运行时修改参数。这通常涉及到在你的节点中添加对dynamic_reconfigure的依赖,并定义可以动态更改的参数。

        5. 检查错误和日志

        查看ROS 2的日志文件,看看是否有任何错误或警告消息,这些消息可能会给出为什么参数更改没有生效的线索。你可以使用ros2 topic echo来查看参数服务器的输出,看看参数是否真的被修改了。

        6. RViz2中的显示问题

        确认RViz2是否正确配置为显示更新的模型。有时,即使模型数据已经更新,RViz2的显示也可能因为缓存或其他问题而没有更新。尝试重新加载RViz2配置或完全关闭并重新打开RViz2。

        7. 示例代码和文档

        查看ROS 2的官方文档或社区提供的示例代码,了解如何正确地在运行时修改参数并更新模型显示。

        8. 调试和测试

        逐步简化问题,尝试在一个简单的环境中重现问题,以便更容易地找到问题的根源。

        结论

        总的来说,如果你在尝试在运行时修改ROS 2中的模型参数但发现这些更改没有反映在RViz2中,你需要检查参数是否正确设置、是否正确地传递给了相关节点,并确认这些节点是否设计为监听这些参数的变化。如果节点不支持动态重新配置,你可能需要在修改参数后重启节点。


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

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

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

          @1286588184 兄弟建议看看前面的基础课哈,前面强调了很多次要先 source 改变环境变量,才能找到功能包.

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

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

            @小鱼 修改完代码要重新构建

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

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

              @小鱼 source后出现新的错误了79b0576c-5706-4341-835b-2ceb19b32a92-图片.png

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

                @1286588184 最好不要截图:https://fishros.org.cn/forum/topic/151/提问前必看-不符合要求的问题拒绝回答/1

                你左边的窗口为啥没关,同时启动一个,不然话题会冲突

                另外你给个绝对的目录,相对路径要搞对上下文(这个属于第一章中Linux基础的知识,建议回头复习下:https://www.bilibili.com/video/BV1NE421w72J/?spm_id_from=333.788&vd_source=29a9e639ec58f672c0c5ad9872dbba1c)

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

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