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

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

    已定时 已固定 已锁定 已移动
    ROS 2相关问题
    ros2 galactic colcon build
    3
    15
    1.8k
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 小鱼小
      小鱼 技术大佬 @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