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

    动手4.3.2报错

    已定时 已固定 已锁定 已移动 已解决
    综合问题
    cmake ros2
    4
    16
    1.4k
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 5051060355
      looking。 @小鱼
      最后由 505106035 编辑

      @小鱼
      消息定义文件如下:

      # 直接使用ROS2原始的数据类型
      string content
      # 图像消息,调用sensor_msgs下的Image类型
      sensor_msgs/Image image
      

      cmake.txt如下:

      cmake_minimum_required(VERSION 3.5)
      project(village_interfaces)
      
      # Default to C99
      if(NOT CMAKE_C_STANDARD)
        set(CMAKE_C_STANDARD 99)
      endif()
      
      # Default to C++14
      if(NOT CMAKE_CXX_STANDARD)
        set(CMAKE_CXX_STANDARD 14)
      endif()
      
      if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
        add_compile_options(-Wall -Wextra -Wpedantic)
      endif()
      
      # find dependencies
      find_package(ament_cmake REQUIRED)
      #添加对sensor_msgs的
      find_package(sensor_msgs REQUIRED)
      find_package(rosidl_default_generators REQUIRED)
      #添加消息文件和依赖
      rosidl_generate_interfaces(${PROJECT_NAME}
        #---msg---
        "msg/Novel.msg"
        DEPENDENCIES sensor_msgs
       )
       
      # uncomment the following section in order to fill in
      # further dependencies manually.
      # find_package(<dependency> REQUIRED)
      
      if(BUILD_TESTING)
        find_package(ament_lint_auto REQUIRED)
        # the following line skips the linter which checks for copyrights
        # uncomment the line when a copyright and license is not present in all source files
        #set(ament_cmake_copyright_FOUND TRUE)
        # the following line skips cpplint (only works in a git repo)
        # uncomment the line when this package is not in a git repo
        #set(ament_cmake_cpplint_FOUND TRUE)
        ament_lint_auto_find_test_dependencies()
      endif()
      
      ament_package()
      
      

      目录结构如下:

      (pytorch) l@l-GF63-Thin-9SC:~/桌面/town_ws/village_interfaces$ tree
      .
      ├── CMakeLists.txt
      ├── include
      │   └── village_interfaces
      ├── msg
      │   └── Novel.msg
      ├── package.xml
      └── src
      
      4 directories, 3 files
      
      
      小鱼小 1 条回复 最后回复 回复 引用 0
      • 5051060355
        looking。
        最后由 编辑

        此回复已被删除!
        1 条回复 最后回复 回复 引用 0
        • 小鱼小
          小鱼 技术大佬 @505106035
          最后由 编辑

          @505106035 复制粘贴你的代码我做了一下测试,编译没问题,除了packages.xml需要增加一个

          <member_of_group>rosidl_interface_packages</member_of_group>
          

          增加完后

          <?xml version="1.0"?>
          <?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
          <package format="3">
            <name>village_interfaces</name>
            <version>0.0.0</version>
            <description>TODO: Package description</description>
            <maintainer email="fishros@foxmail.com">pear</maintainer>
            <license>TODO: License declaration</license>
          
            <buildtool_depend>ament_cmake</buildtool_depend>
          
            <test_depend>ament_lint_auto</test_depend>
            <test_depend>ament_lint_common</test_depend>
            <member_of_group>rosidl_interface_packages</member_of_group>
            <export>
              <build_type>ament_cmake</build_type>
            </export>
          </package>
          
          

          你可以试试

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

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

            @小鱼 确认上下文有ros2环境,试试colcon build指令(不加packages-select)

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

            5051060355 2 条回复 最后回复 回复 引用 0
            • 5051060355
              looking。 @小鱼
              最后由 编辑

              @小鱼 不行。还是同样的报错。难道是我用的ubuntu18.04配置的ros2-eloquent这个版本和教程不一样?我看那个一键安装的ros2的脚本就只有到eloquent这个版本

              小鱼小 2 条回复 最后回复 回复 引用 0
              • 5051060355
                looking。 @小鱼
                最后由 编辑

                @小鱼
                如下:

                (pytorch) l@l-GF63-Thin-9SC:~/桌面/town_ws$ ros2
                usage: ros2 [-h] Call `ros2 <command> -h` for more detailed usage. ...
                
                ros2 is an extensible command-line tool for ROS 2.
                
                optional arguments:
                  -h, --help            show this help message and exit
                
                Commands:
                  action     Various action related sub-commands
                  component  Various component related sub-commands
                  daemon     Various daemon related sub-commands
                  doctor     Check ROS setup and other potential issues
                  interface  Show information about ROS interfaces
                  launch     Run a launch file
                  lifecycle  Various lifecycle related sub-commands
                  msg        Various msg related sub-commands
                  multicast  Various multicast related sub-commands
                  node       Various node related sub-commands
                  param      Various param related sub-commands
                  pkg        Various package related sub-commands
                  run        Run a package specific executable
                  security   Various security related sub-commands
                  service    Various service related sub-commands
                  srv        Various srv related sub-commands
                  topic      Various topic related sub-commands
                  wtf        Use `wtf` as alias to `doctor`
                
                  Call `ros2 <command> -h` for more detailed usage.
                

                运行colcon build:

                (pytorch) l@l-GF63-Thin-9SC:~/桌面/town_ws$ colcon build
                Starting >>> village_interfaces
                Starting >>> village_li
                Starting >>> village_wang
                Finished <<< village_wang [0.47s]                                                                                         
                --- stderr: village_interfaces                                                         
                CMake Error at /opt/ros/eloquent/share/rosidl_cmake/cmake/rosidl_generate_interfaces.cmake:240 (list):
                  list index: 1 out of range (-1, 0)
                Call Stack (most recent call first):
                  CMakeLists.txt:24 (rosidl_generate_interfaces)
                
                
                CMake Error at /opt/ros/eloquent/share/rosidl_generator_cpp/cmake/rosidl_generator_cpp_generate_interfaces.cmake:57 (message):
                  Target dependency
                  '/town_ws/build/village_interfaces/rosidl_adapter/village_interfaces/msg/Novel.idl'
                  does not exist
                Call Stack (most recent call first):
                  /opt/ros/eloquent/share/ament_cmake_core/cmake/core/ament_execute_extensions.cmake:48 (include)
                  /opt/ros/eloquent/share/rosidl_cmake/cmake/rosidl_generate_interfaces.cmake:286 (ament_execute_extensions)
                  CMakeLists.txt:24 (rosidl_generate_interfaces)
                
                
                ---
                Failed   <<< village_interfaces [0.60s, exited with code 1]
                Aborted  <<< village_li [0.82s]                     
                
                Summary: 1 package finished [0.97s]
                  1 package failed: village_interfaces
                  1 package aborted: village_li
                  1 package had stderr output: village_interfaces
                

                还是一样的报错,就说cmake的错,

                CMake Error at /opt/ros/eloquent/share/rosidl_cmake/cmake/rosidl_generate_interfaces.cmake:240 (list):
                  list index: 1 out of range (-1, 0)
                Call Stack (most recent call first):
                  CMakeLists.txt:24 (rosidl_generate_interfaces)
                

                简直头疼,不知道什么毛病。

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

                  @505106035 版本问题有很大可能,你用的版本已经停止维护有一段时间了。

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

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

                    @505106035 ubuntu18上没有foxy版本,只有ubuntu20才支持

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

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

                      @小鱼 我用win电脑装了个vm配置了u20。装的ros2-rolling就好使。醉了

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

                        @505106035 ROS2前几个版本更新的很快,所以差异比较大

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

                        1 条回复 最后回复 回复 引用 0
                        • 小鱼小 小鱼 将这个主题标记为已解决,在
                        • 7513651667
                          吉
                          最后由 编辑

                          此回复已被删除!
                          1 条回复 最后回复 回复 引用 0
                          • 7513651667
                            吉
                            最后由 751365166 编辑

                            @小鱼 鱼哥,我的系统版本是22.04.3,ROS版本是humble,和上面的问题有点类似,但感觉不太一样,应该怎么解决??

                            列表回复: 动手4.3.2报错

                            liu@liu-virtual-machine:~/桌面$ git clone https://github.com/fishros/fishbot.git -b v1.0.0 --depth=1
                            fatal: destination path 'fishbot' already exists and is not an empty directory.
                            liu@liu-virtual-machine:~/桌面$ 
                            liu@liu-virtual-machine:~/桌面$ cd fishbot
                            liu@liu-virtual-machine:~/桌面/fishbot$ rosdep install --from-paths src --ignore-src -y  -r # 安装依赖
                            #All required rosdeps installed successfully
                            liu@liu-virtual-machine:~/桌面/fishbot$ colcon build
                            Starting >>> fishbot_bringup
                            Starting >>> fishbot_cartographer
                            Finished <<< fishbot_cartographer [0.19s]                                
                            Starting >>> fishbot_description
                            Finished <<< fishbot_bringup [0.28s]
                            Starting >>> fishbot_interfaces
                            --- stderr: fishbot_interfaces                                    
                            CMake Error at /opt/ros/humble/share/rosidl_cmake/cmake/rosidl_generate_interfaces.cmake:240 (list):
                              list index: 1 out of range (-1, 0)
                            Call Stack (most recent call first):
                              CMakeLists.txt:29 (rosidl_generate_interfaces)
                            
                            
                            CMake Error at /opt/ros/humble/share/rosidl_generator_c/cmake/rosidl_generator_c_generate_interfaces.cmake:69 (message):
                              Target dependency
                              '/fishbot/build/fishbot_interfaces/rosidl_adapter/fishbot_interfaces/srv/FishBotConfig.idl'
                              does not exist
                            Call Stack (most recent call first):
                              /opt/ros/humble/share/ament_cmake_core/cmake/core/ament_execute_extensions.cmake:48 (include)
                              /opt/ros/humble/share/rosidl_cmake/cmake/rosidl_generate_interfaces.cmake:286 (ament_execute_extensions)
                              CMakeLists.txt:29 (rosidl_generate_interfaces)
                            
                            
                            ---
                            Failed   <<< fishbot_interfaces [0.44s, exited with code 1]
                            Aborted  <<< fishbot_description [0.56s]
                            
                            Summary: 2 packages finished [1.20s]
                              1 package failed: fishbot_interfaces
                              1 package aborted: fishbot_description
                              2 packages had stderr output: fishbot_description fishbot_interfaces
                              1 package not processed
                            
                            ganyuanzhenG 1 条回复 最后回复 回复 引用 0
                            • ganyuanzhenG
                              Elysia 技术大佬 @751365166
                              最后由 编辑

                              @751365166 尽量避免路径中出现中文,这会产生很多未定义行为。(ROS开发者可不会想到你会输入除英文以外的路径哈哈

                              我难道就没有一段英勇,美好而又虚幻的过去……幸运地写在金叶片上?

                              7513651667 1 条回复 最后回复 回复 引用 1
                              • 7513651667
                                吉 @ganyuanzhen
                                最后由 编辑

                                @ganyuanzhen 我懂了!!!感谢,问题出在,我应该新建一个英文名称的文件夹,然后在新建文件中运行终端命令!而不应该直接在桌面运行终端。

                                liu@liu-virtual-machine:~/ROS$ git clone https://github.com/fishros/fishbot.git -b v1.0.0 --depth=1
                                Cloning into 'fishbot'...
                                remote: Enumerating objects: 84, done.
                                remote: Counting objects: 100% (84/84), done.
                                remote: Compressing objects: 100% (69/69), done.
                                remote: Total 84 (delta 21), reused 46 (delta 7), pack-reused 0
                                Receiving objects: 100% (84/84), 332.98 KiB | 422.00 KiB/s, done.
                                Resolving deltas: 100% (21/21), done.
                                liu@liu-virtual-machine:~/ROS$ cd fishbot
                                liu@liu-virtual-machine:~/ROS/fishbot$ rosdep install --from-paths src --ignore-src -y  -r # 安装依赖
                                #All required rosdeps installed successfully
                                liu@liu-virtual-machine:~/ROS/fishbot$ colcon build
                                Starting >>> fishbot_bringup
                                Starting >>> fishbot_cartographer
                                Finished <<< fishbot_cartographer [0.53s]                           
                                Starting >>> fishbot_description
                                Finished <<< fishbot_description [0.57s]                            
                                Starting >>> fishbot_interfaces
                                Finished <<< fishbot_interfaces [7.94s]                                 
                                Starting >>> fishbot_navigation2
                                Finished <<< fishbot_navigation2 [0.63s]                                 
                                Finished <<< fishbot_bringup [13.5s]                       
                                
                                Summary: 5 packages finished [13.9s]
                                
                                1 条回复 最后回复 回复 引用 0
                                • 第一个帖子
                                  最后一个帖子
                                皖ICP备16016415号-7
                                Powered by NodeBB | 鱼香ROS