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

    与Starting gazebo_ros2_control plugin in namespace: /mbot 的gazebo_ros2_control的命名空间的问题

    已定时 已固定 已锁定 已移动
    ROS 2相关问题
    namespace gazeboros2
    5
    9
    788
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 2
      一桶珠子
      最后由 编辑

      这里需要广大网友的支持,这必将是全人类的进步,问题如下:
      f4eb5703-3a75-4a92-887c-926b285e91e7-image.png
      81729658-f96d-4355-82c5-5b0c054f5e73-image.png
      两个机器人文件,设置了不同的命名空间,可以加载启动,但是gazebo_ros2_control插件总是加载进一个机器人的空间
      37f49bdf-d7fb-43f6-ac52-fc8d18739af9-image.png
      下面问题来了:
      ea23b424-5c2f-433b-adbb-5fb7d45c6512-image.png
      有加载进去了mbot的空间,yaml文件倒是读取的没错,这就导致,机器人二无法被控制。
      你的一小步是人类的一大步,致敬🖖

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

        在使用ROS 2和Gazebo进行机器人仿真时,命名空间(namespace)的使用对于区分不同的机器人实例非常重要。gazebo_ros2_control插件是用来处理机器人控制相关功能的,包括从ROS 2读取控制命令并传递给Gazebo的仿真模型。

        如果你有两个机器人文件,并且每个机器人都设置在不同的命名空间中,那么每个机器人的gazebo_ros2_control插件也应该在相应的命名空间中加载。这样可以确保控制命令被正确地发送到对应的机器人模型。

        以下是一些可能的解决步骤:

        1. 检查YAML配置文件:

          • 确保每个机器人的YAML配置文件(通常用于定义控制器的参数)都放在正确的命名空间中。
          • 使用ros2 launch或ros2 run时,确保YAML文件的路径与机器人的命名空间一致。
        2. 检查启动文件:

          • 检查用于启动Gazebo和gazebo_ros2_control插件的启动文件或launch文件。
          • 确保在启动插件时,使用正确的命名空间参数。
        3. 检查Gazebo模型:

          • 确保Gazebo模型中的插件定义(通常在模型的SDF文件中)也使用了正确的命名空间。
        4. 检查ROS 2节点:

          • 使用ros2 node list查看当前运行的节点,并确认它们是否在正确的命名空间中。
          • 使用ros2 topic list和ros2 topic echo等工具检查控制相关的话题是否在正确的命名空间中发布和订阅。
        5. 检查ROS 2参数:

          • 使用ros2 param list和ros2 param dump检查参数是否设置在了正确的命名空间中。
        6. 使用ROS 2的命名空间功能:

          • 你可以通过命令行参数--ros-args -r __ns:=<your_namespace>来设置ROS 2节点的命名空间。

        如果以上步骤都检查过了还是存在问题,那么可能需要进一步调试或查看gazebo_ros2_control插件的日志输出,看是否有任何错误信息或警告。你也可以尝试简化问题,先只加载一个机器人,确保它的控制功能正常,然后再逐步添加第二个机器人。

        此外,ROS 2和Gazebo的社区和文档是宝贵的资源,可以查阅相关的教程、示例和问答,看看是否有类似的问题和解决方案。最后,如果你认为这是一个bug或者需要更多的帮助,可以考虑在相关的GitHub仓库或ROS 2的论坛中提问。


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

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

        2 1 条回复 最后回复 回复 引用 0
        • 2
          一桶珠子 @小伊
          最后由 编辑

          @小伊 都检查过,也试过,不太行,
          https://github.com/ros-controls/gazebo_ros2_control/issues/127
          这里有git的解决办法,求助

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

            从您提供的链接和描述来看,您似乎遇到了gazebo_ros2_control这个ROS 2包在使用时的一些问题,并且您已经查看过GitHub上的issue #127来寻找解决方案,但似乎并没有找到合适的解决办法。

            在这种情况下,这里有一些步骤和建议可以帮助您进一步诊断和解决问题:

            1. 仔细阅读Issue讨论:

              • 查看issue #127中的讨论,看看其他用户是否遇到了类似的问题,并查看是否有提供有效的解决方案。
              • 注意是否有官方或社区成员提供的建议或修复。
            2. 确保环境配置正确:

              • 确保您的ROS 2环境(包括Gazebo和gazebo_ros2_control包)都是最新版本的,或者至少是稳定且兼容的版本。
              • 验证您的环境变量设置是否正确,比如ROS_DOMAIN_ID、GAZEBO_MODEL_PATH等。
            3. 尝试官方文档和教程:

              • 查阅gazebo_ros2_control的官方文档和教程,看看是否有遗漏的配置步骤或操作。
              • 跟随官方提供的安装和使用指南进行操作,确保每一步都正确无误。
            4. 查看依赖包:

              • 确保所有依赖包都已正确安装且版本兼容。
              • 使用ros2 pkg list和ros2 pkg dependencies <package-name>命令来检查已安装的包和它们的依赖关系。
            5. 查看错误日志:

              • 仔细检查您的终端输出和日志文件,看看是否有具体的错误信息或警告。
              • 根据错误信息,在网上搜索可能的解决方案或寻求帮助。
            6. 提问或评论:

              • 如果您在issue #127中没有找到解决方案,您可以在该issue下留言,描述您遇到的问题和已经尝试过的解决办法。
              • 也可以创建一个新的issue,详细描述您的问题,包括您的环境配置、操作步骤和遇到的错误信息。
            7. 社区支持:

              • 访问ROS 2的官方论坛、邮件列表或相关社区,寻求其他用户的帮助。
              • 在提问时,提供尽可能详细的信息,包括您的环境配置、已尝试的解决方法和错误日志。
            8. 自行调试:

              • 如果可能的话,尝试自行调试代码,查看在哪一步出现了问题。
              • 使用print语句或调试工具来跟踪代码的执行流程。

            请记住,开源社区的支持可能需要一些时间才能得到响应,特别是在项目较为活跃或开发者较忙的情况下。耐心等待并尝试上述建议,通常可以帮助您解决问题或至少缩小问题的范围。


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

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

            1 条回复 最后回复 回复 引用 0
            • 2
              一桶珠子
              最后由 编辑

              为解决,需要遇到相同情况的网友解答

              13933998981 2 条回复 最后回复 回复 引用 0
              • 13933998981
                santidad D.A.Y @2468794426
                最后由 编辑

                @2468794426 我也遇到类似的问题,我仿真的两个ur机械臂,区分为left和right,在需要的部分都添加命名空间。left和right都可以单独启动,但是在同时启动时出现了问题(即便是分别启动在同一仿真环境下)。

                我在github上找到了几个解决方案但是因为对二进制编译和源码编译的不熟悉,我修改后出现了更大的错误。不知道作者有没有找到好的解决方案

                PS:我将两个机械臂写在一个models里面是可以进行控制的,但是我目前的需求是在gazebo中有两个models

                附上我找到的解决方案链接:
                https://github.com/ros-controls/ros2_control/issues/1177
                https://github.com/ros-controls/ros2_control/pull/1391

                1 条回复 最后回复 回复 引用 0
                • 13933998981
                  santidad D.A.Y @2468794426
                  最后由 编辑

                  @2468794426 我昨天重新对源码编译了解了一下,目前将这个问题已经解决。如果您还没有解决该问题,需要我的帮助请与我联系。感谢您的PR,回复不及时请您见谅

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

                    @2468794426 ros2_control 的插件应该同时只能加载一个就可以了,命名空间在yaml文件中设置。

                    另外:https://fishros.org.cn/forum/topic/151/提问前必看-不符合要求的问题拒绝回答

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

                    1 条回复 最后回复 回复 引用 0
                    • 2
                      2118561423 @1393399898
                      最后由 编辑

                      @1393399898 您好,请问您是怎么解决的,我现在也遇到了同样的问题

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