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

    ros2 galactic:Could not find ROS middleware implementation 'NOTFOUND'.

    已定时 已固定 已锁定 已移动
    ROS 2相关问题
    ros2 galactic colcon build
    3
    15
    1.8k
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 22356740442
      ”╰+gǒが油メo ╬▍ @小鱼
      最后由 编辑

      @小鱼 docker用的是arm64的 Ubuntu20.04

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

        @2235674044

        @小鱼 在 提问前必看!一定要看!必须看一下! 中说:

        问题一定要描述清楚,终端打印一定复制粘贴,方便回答者检索和引用(你可以在linux系统上打开浏览器进社

        复制粘贴下错误,我检索看看

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

        22356740442 1 条回复 最后回复 回复 引用 0
        • 22356740442
          ”╰+gǒが油メo ╬▍ @小鱼
          最后由 编辑

          @小鱼 Starting >>> village_wang
          --- stderr: village_wang
          CMake Error at /opt/ros/galactic/share/rmw_implementation_cmake/cmake/get_default_rmw_implementation.cmake:60 (message):
          Could not find ROS middleware implementation 'NOTFOUND'. Choose one of the
          following:
          Call Stack (most recent call first):
          /opt/ros/galactic/share/rmw_implementation/cmake/rmw_implementation-extras.cmake:19 (get_default_rmw_implementation)
          /opt/ros/galactic/share/rmw_implementation/cmake/rmw_implementationConfig.cmake:41 (include)
          /opt/ros/galactic/share/rcl/cmake/ament_cmake_export_dependencies-extras.cmake:21 (find_package)
          /opt/ros/galactic/share/rcl/cmake/rclConfig.cmake:41 (include)
          /opt/ros/galactic/share/libstatistics_collector/cmake/ament_cmake_export_dependencies-extras.cmake:21 (find_package)
          /opt/ros/galactic/share/libstatistics_collector/cmake/libstatistics_collectorConfig.cmake:41 (include)
          /opt/ros/galactic/share/rclcpp/cmake/ament_cmake_export_dependencies-extras.cmake:21 (find_package)
          /opt/ros/galactic/share/rclcpp/cmake/rclcppConfig.cmake:41 (include)
          CMakeLists.txt:10 (find_package)


          Failed <<< village_wang [26.0s, exited with code 1]

          Summary: 0 packages finished [30.8s]
          1 package failed: village_wang
          1 package had stderr output: village_wang

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

            @2235674044 应该是galactic版本特有问题,请参考

            • https://github.com/RoboStack/ros-galactic/issues/5
            • https://github.com/micro-ROS/micro_ros_platformio/issues/55

            3d63d282-5d5d-4477-847e-d15abe61e5de-image.png

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

            22356740442 1 条回复 最后回复 回复 引用 0
            • 22356740442
              ”╰+gǒが油メo ╬▍ @小鱼
              最后由 2235674044 编辑

              @小鱼 我重新下载了一下ros2发现可以colcon build了但是run的时候出现了新的问题
              root@90cfb8fcddd4:/home/town_ws# ros2 run village_wang wang2_node
              1675329115.510342 [0] wang2_node: ddsi_udp_create_conn: set IP_MULTICAST_IF failed: Bad Parameter
              [ERROR] [1675329115.546947863] [rmw_cyclonedds_cpp]: rmw_create_node: failed to create domain, error Error

              [rcutils|error_handling.c:108] rcutils_set_error_state()
              This error state is being overwritten:

              'error not set, at /tmp/binarydeb/ros-galactic-rcl-3.1.4/src/rcl/node.c:261'

              with this new error message:

              'rcl node's rmw handle is invalid, at /tmp/binarydeb/ros-galactic-rcl-3.1.4/src/rcl/node.c:413'

              rcutils_reset_error() should be called after error handling to avoid this.
              <<<
              [ERROR] [1675329115.557758259] [rcl]: Failed to fini publisher for node: 1
              terminate called after throwing an instance of 'rclcpp::exceptions::RCLError'
              what(): failed to initialize rcl node: rcl node's rmw handle is invalid, at /tmp/binarydeb/ros-galactic-rcl-3.1.4/src/rcl/node.c:413
              dfea3b28-d70d-4b3d-a784-d3684fcc77ff-image.png

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

                @2235674044 可以看下你怎么建立的docker吗

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

                22356740442 2 条回复 最后回复 回复 引用 0
                • 22356740442
                  ”╰+gǒが油メo ╬▍ @小鱼
                  最后由 编辑

                  @小鱼 docker安装:https://www.runoob.com/docker/ubuntu-docker-install.html 使用里面官方安装脚本自动安装的
                  容器创建:
                  1.安装qemu
                  2.docker run -itd --rm --net=none --platform linux/arm64 ubuntu:20.04 /bin/bash安装ubuntu20.04 arm64版本镜像并创建容器
                  3.容器打包成镜像
                  4.docker run -itd 打包镜像 /bin/bash

                  1 条回复 最后回复 回复 引用 0
                  • 22356740442
                    ”╰+gǒが油メo ╬▍ @小鱼
                    最后由 编辑

                    @小鱼 我发现好像没有这个文件
                    root@90cfb8fcddd4:/home/town_ws# cd /tmp/binarydeb/ros-galactic-rcl-3.1.4/src/rcl/
                    bash: cd: /tmp/binarydeb/ros-galactic-rcl-3.1.4/src/rcl/: No such file or directory
                    root@90cfb8fcddd4:/home/town_ws# cd /tmp/
                    root@90cfb8fcddd4:/tmp# ls
                    root@90cfb8fcddd4:/tmp# cd /
                    root@90cfb8fcddd4:/# find | grep ros-galactic-rcl-3.1.4
                    root@90cfb8fcddd4:/#
                    是不是这个问题,该怎么解决呢

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

                      @2235674044 具体我也不是很清楚

                      @2235674044 在 ros2 galactic:Could not find ROS middleware implementation 'NOTFOUND'. 中说:

                      --net=none

                      把这个改成--net=host看看,另外输入下ip a
                      检查下本地的localhost是否正常

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

                      22356740442 rty813R 2 条回复 最后回复 回复 引用 0
                      • 22356740442
                        ”╰+gǒが油メo ╬▍ @小鱼
                        最后由 2235674044 编辑

                        @小鱼 解决了,是qemu模拟环境问题,放到实际环境下就ok了

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

                          @小鱼 实际上这个问题还是没有解决。我们的场景下确实有需求需要在qemu下使用ROS。这种情况下,还是会报错:ddsi_udp_create_conn: set IP_MULTICAST_IF failed: Bad Parameter。但是经过测试发现,仅cyclonedds会出现这种情况,而fastdds则没有问题。完整的报错如下:

                          1700209913.854902 [0]       main: selected interface "lo" is not multicast-capable: disabling multicast
                          1700209913.862237 [0]       main: ddsi_udp_create_conn: set IP_MULTICAST_IF failed: Bad Parameter
                          [ERROR] [1700209913.866479306] [rmw_cyclonedds_cpp]: rmw_create_node: failed to create domain, error Error
                          
                          >>> [rcutils|error_handling.c:108] rcutils_set_error_state()
                          This error state is being overwritten:
                          
                            'error not set, at /opt/ros/foxy/src/ros2/rcl/rcl/src/rcl/node.c:276'
                          
                          with this new error message:
                          
                            'rcl node's rmw handle is invalid, at /opt/ros/foxy/src/ros2/rcl/rcl/src/rcl/node.c:428'
                          
                          rcutils_reset_error() should be called after error handling to avoid this.
                          <<<
                          [ERROR] [1700209913.873989803] [rcl]: Failed to fini publisher for node: 1
                          
                          小鱼小 1 条回复 最后回复 回复 引用 0
                          • 小鱼小
                            小鱼 技术大佬 @rty813
                            最后由 编辑

                            @rty813 在 ros2 galactic:Could not find ROS middleware implementation 'NOTFOUND'. 中说:

                            1700209913.854902 [0] main: selected interface "lo" is not multicast-capable: disabling multicast
                            1700209913.862237 [0] main: ddsi_udp_create_conn: set IP_MULTICAST_IF failed: Bad Parameter

                            是没有解决,看提示估计因为只有一个 loopback ,且 lo 不支持多播,但关闭多播并没有传递到 ddsi_udp_create_conn 中,导致创建连接时在 lo 上依然启用多播造成失败,可以尝试手动启动 lo 的 多播,指令如下
                            sudo ip link set lo multicast on

                            或者修改 cyclonedds 的代码修复,这个麻烦一些

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

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

                              @小鱼 好像还是qemu的问题。我设置了Multicast on,但是依然报错。
                              eeeec388-2bac-4ec3-94e7-b0a81eab3fc3-image.png
                              52a37585-4269-418e-a8ca-2d79216254d2-image.png
                              我是在x86上运行的armv7的镜像,就会出现这种问题。如果运行的是x86镜像,就正常的。

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