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

    moveit2 humble的代码编译问题,链接的时候失败了

    已定时 已固定 已锁定 已移动
    机械臂运动规划
    moveit2 编译出错
    2
    3
    624
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • P
      peter_wang
      最后由 编辑

      本地创建一个pkg的时候构建失败了,请大佬们帮忙看一下
      代码就是安装官方教程里hello_moveit的例子,就不贴了: https://moveit.picknik.ai/humble/doc/tutorials/your_first_project/your_first_project.html

      然后在官方的src里创建了个arm_control的包,然后构建是通过的, 路径是这个样子的,可以构建通过,也能跑起来
      └── src
      ├── arm_control
      ├── launch_param_builder
      ├── moveit2
      ├── moveit2_tutorials
      ├── moveit_resources
      ├── moveit_task_constructor
      ├── moveit_visual_tools
      ├── rosparam_shortcuts
      └── srdfdom
      但是我自己创建了一个新的ros的package,单独放了我的这个arm_control的包,一模一样的代码,构建就报错了,我即使又source了moveit2那个文件夹里install/setup.sh也不行
      Starting >>> arm_control
      Consolidate compiler generated dependencies of target arm_control
      [ 50%] Linking CXX executable arm_control
      /usr/bin/ld: /opt/ros/humble/lib/libmoveit_warehouse.so.2.5.5: undefined reference to `warehouse_ros::DatabaseLoader::~DatabaseLoader()'
      collect2: error: ld returned 1 exit status
      gmake[2]: *** [CMakeFiles/arm_control.dir/build.make:355:arm_control] 错误 1
      gmake[1]: *** [CMakeFiles/Makefile2:137:CMakeFiles/arm_control.dir/all] 错误 2
      gmake: *** [Makefile:146:all] 错误 2
      Failed <<< arm_control [0.29s, exited with code 2]

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

        从您提供的错误信息来看,问题出在链接阶段,具体是链接到 libmoveit_warehouse.so 时遇到了未定义的引用。这通常是因为某些必要的库没有被正确链接到您的项目中,或者库之间的依赖关系没有正确解决。以下是一些可能的解决步骤:

        1. 检查 CMakeLists.txt:
          确保您的 CMakeLists.txt 文件中包含了所有必要的依赖项。特别是与 MoveIt 相关的库,如 moveit_warehouse。您需要在 find_package() 中找到并包含 MoveIt 的相关包,并在 target_link_libraries() 中添加必要的库。例如:

          find_package(catkin REQUIRED COMPONENTS
            roscpp
            moveit_core
            moveit_warehouse
            # 其他可能需要的库
          )
          
          catkin_package()
          
          include_directories(
            ${catkin_INCLUDE_DIRS}
          )
          
          add_executable(arm_control src/arm_control.cpp)
          target_link_libraries(arm_control ${catkin_LIBRARIES} moveit_warehouse)
          

          注意:确保 moveit_warehouse 以及其他所有必要的库都被正确地链接。

        2. 检查 MoveIt 和其他依赖的安装:
          确保您已经正确安装了 MoveIt 和所有相关的依赖库。您可以通过运行 sudo apt install ros-humble-moveit-* 来安装所有 MoveIt 相关的包(注意,这里使用了通配符 *,但在实际使用中可能需要更具体地指定需要的包)。

        3. 检查环境变量:
          确保在编译前已经正确设置了 ROS 环境变量。这通常通过运行 source /opt/ros/humble/setup.bash(或者您的 ROS 安装路径)来完成。同时,如果 MoveIt 是在不同的工作空间中安装的,也需要确保那个工作空间的 setup.bash 也被正确 source。

        4. 清理和重新构建:
          有时候,旧的构建文件可能会导致问题。尝试清理您的构建目录(通常是 build 和 devel 目录),然后重新运行 catkin_make 或 colcon build(取决于您使用的构建系统)。

        5. 检查库的版本:
          确保您链接的库版本与您的 ROS 版本和 MoveIt 版本兼容。

        6. 查看 MoveIt 文档和社区:
          如果问题仍然存在,查看 MoveIt 的官方文档和社区论坛可能会有帮助。可能有人遇到过类似的问题,并分享了解决方案。

        7. 使用 ldd 检查库依赖:
          您可以使用 ldd 命令来检查 libmoveit_warehouse.so 的依赖关系,看是否有任何缺失或错误的库链接。

        希望这些步骤能帮助您解决问题!如果问题仍然存在,请提供更多的信息,如完整的 CMakeLists.txt 文件内容等,以便进一步分析。


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

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

        1 条回复 最后回复 回复 引用 0
        • P
          peter_wang
          最后由 编辑

          想明白为啥了,添加了依赖库,搞定...

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