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

    《动手学Moveit2》3.安装Moveit2测试

    已定时 已固定 已锁定 已移动
    机械臂运动规划
    动手学moveit2 moveit2教程
    18
    49
    21.5k
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 小鱼小
      小鱼 技术大佬
      最后由 小鱼 编辑

      3. Moveit2安装

      我们可以直接使用apt安装官方编译好的二进制包,也可以把源代码下载下来自己编译出二进制包,但为了学习方便,也为了第一时间体验新发布的特性(官方二进制比源码总慢半拍),我这里优先带你用源码安装。

      源码安装Moveit2

      准备系统环境

      小鱼是基于Ubuntu22.04,Humble版本的ROS2进行安装的,请你和小鱼保持相同的环境,这样不容易出错。

      当然你如果你不是22.04的Ubuntu,也不用重新安装,用小鱼一键安装里的安装多版本ROS,可以直接帮你创建一个Ubuntu22.04且包含Humble版本ROS2的环境,非常快捷。

      一键安装地址: https://fishros.org.cn/forum/topic/20

      下载moveit2_tutorials和moveit2源码

      下载源码我们用熟悉的git工具就可以完成,将moveit2_tutorials代码下载到指定的工作空间的文件夹,可以用下面的指令

      git clone https://github.com/ros-planning/moveit2_tutorials -b humble --depth 1  moveit2_ws/src/moveit2_tutorials
      

      国内用户实惨,下载过程中你可能会遇到网络问题,不过不要担心,我们找一个代理来用,在原来的地址上加个头https://ghproxy.com/

      git clone https://ghproxy.com/https://github.com/ros-planning/moveit2_tutorials -b humble --depth 1 moveit2_ws/src/moveit2_tutorials
      

      下载完成后你应该可以在moveit2_ws/src/moveit2_tutorials文件夹下看到很多个功能包,代表下载成功。

      下载完成后你在moveit2_ws/src/moveit2_tutorials/目录下可以看到moveit2_tutorials.repos,这个文件里包含了moveit2的及其相关依赖的源码,我们还需要将这些仓库和对应分支的代码克隆下来。

      repositories:
        launch_param_builder:
          type: git
          url: https://github.com/PickNikRobotics/launch_param_builder
          version: main
        moveit2:
          type: git
          url: https://github.com/ros-planning/moveit2
          version: humble
        moveit_resources:
          type: git
          url: https://github.com/ros-planning/moveit_resources
          version: ros2
        moveit_task_constructor:
          type: git
          url: https://github.com/ros-planning/moveit_task_constructor.git
          version: ros2
        moveit_visual_tools:
          type: git
          url: https://github.com/ros-planning/moveit_visual_tools
          version: ros2
        rosparam_shortcuts:
          type: git
          url: https://github.com/PickNikRobotics/rosparam_shortcuts
          version: ros2
        srdfdom:
          type: git
          url: https://github.com/ros-planning/srdfdom.git
          version: ros2
      
      

      一个个克隆太麻烦,ros为我们做好了一个工具-vcs,使用该工具可以自动读取repo文件并克隆其中的代码。

      该工具安装方式如下

      sudo apt install python3-vcstool
      

      安装完后我们可以在src目录(注意是在src目录下)运行指令

      vcs import < moveit2_tutorials/moveit2_tutorials.repos
      

      PS:如果vcs克隆不下来代码可以将repo文件中的https://github.com都加上前缀https://ghproxy.com/。

      克隆成功可以看到下面打印

      fishros@fishros-KLVC-WXX9:~/moveit/moveit2_ws/src$ vcs import < moveit2_tutorials/moveit2_tutorials.repos
      .......
      === ./launch_param_builder (git) ===
      正克隆到 '.'...
      === ./moveit2 (git) ===
      正克隆到 '.'...
      === ./moveit_resources (git) ===
      正克隆到 '.'...
      === ./moveit_task_constructor (git) ===
      正克隆到 '.'...
      === ./moveit_visual_tools (git) ===
      正克隆到 '.'...
      === ./rosparam_shortcuts (git) ===
      正克隆到 '.'...
      === ./srdfdom (git) ===
      正克隆到 '.'...
      

      安装依赖

      ROS2里有一个用于扫描代码的依赖并搜索安装的工具叫rosdep,我们接下来就要用它来扫描源码中所有packages.xml文件里写的依赖。

      又是一个不幸的消息,rosdep检测到依赖的名字后,又到github上搜索依赖项的具体信息,你知道的,github总是有打不开的毛病。

      所以后来小鱼做了个rosdec,国内用户可以用它代替rosdep使用,我们这里先用一键安装rosdepc。

      运行一键安装,选择3即可。

      ---众多工具,等君来用---
      [1]:一键安装:ROS(支持ROS和ROS2,树莓派Jetson)
      [2]:一键安装:github桌面版(小鱼常用的github客户端)
      [3]:一键配置:rosdep(小鱼的rosdepc,又快又好用)
      

      安装完成后你还需要更新一下rosdepc的数据,一句指令即可rosdepc update。

      接着我们就正式开始安装依赖

      cd moveit2_ws/
      rosdepc install --from-path src --ignore-src -r -y
      

      简单介绍下rosdec这句指令,--from-path src src是文件夹的名字,意思说是扫描src文件夹下的源码,--ignore-src不安装已经有源码的依赖,-r表示遇到错误继续装,-y是遇到问题自动回答是。

      # 过程中可以看到rosdepc调用了apt-get进行依赖的安装
      executing command [sudo -H apt-get install -y ros-humble-joint-state-broadcaster]
      # 最后可以看到这句表示成功
      #All required rosdeps installed successfully
      

      编译源码

      编译和ROS2一样,用的是colcon工具,直接上colcon build即可。

      cd moveit2_ws/
      colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release
      

      这里我们给build传递了一个CMake参数--cmake-args -DCMAKE_BUILD_TYPE=Release,告诉CMake我们要编译一个Release版本(Release版本会删掉多余的调试信息,运行起来会更快)。

      最后你应该看到,代表编译成功。

      Finished <<< moveit_setup_app_plugins [2min 17s]                                                               
      [Processing: moveit_setup_controllers, moveit_setup_core_plugins, moveit_setup_srdf_plugins, moveit_task_constructor_visualization]
      [Processing: moveit_setup_controllers, moveit_setup_core_plugins, moveit_setup_srdf_plugins, moveit_task_constructor_visualization]
      [Processing: moveit_setup_controllers, moveit_setup_core_plugins, moveit_setup_srdf_plugins, moveit_task_constructor_visualization]
      Finished <<< moveit_task_constructor_visualization [5min 12s]                                                    
      Finished <<< moveit_setup_core_plugins [4min 3s]                                                 
      [Processing: moveit_setup_controllers, moveit_setup_srdf_plugins]                                  
      Finished <<< moveit_setup_controllers [5min 1s]                                                    
      --- stderr: moveit_setup_srdf_plugins                                                
      /home/fishros/moveit/moveit2_ws/src/moveit2/moveit_setup_assistant/moveit_setup_srdf_plugins/include/moveit_setup_srdf_plugins/rotated_header_view.hpp:0: Note: No relevant classes found. No output generated.
      ---
      Finished <<< moveit_setup_srdf_plugins [5min 14s]
      Starting >>> moveit_setup_assistant
      [Processing: moveit_setup_assistant]                                        
      Finished <<< moveit_setup_assistant [36.7s]                                  
      Starting >>> moveit              
      Finished <<< moveit [0.91s]                              
      Starting >>> moveit2_tutorials
      [Processing: moveit2_tutorials]                                        
      [Processing: moveit2_tutorials]                                            
      Finished <<< moveit2_tutorials [1min 4s]                                    
      
      Summary: 55 packages finished [1h 13min 56s]
        3 packages had stderr output: launch_param_builder moveit_configs_utils moveit_setup_srdf_plugins
      

      当然你也有可能会编译失败,目前一个已知原因是你之前用二进制安装过moveit2,导致的依赖错误,我们这里手动卸载下即可

      sudo apt autoremove ros-humble-moveit*
      

      二进制安装

      sudo apt install ros-humble-moveit*
      

      目前还是推荐你使用编译安装,有些新特性并没有发布,二进制安装版本的Moveit2无法使用。

      测试Demo

      编译或者二进制安装完成,我们就可以通过运行moveit_resource中的demo来进行机械臂运动规划测试。

      打开终端,输入以下指令

      cd moveit2_ws/
      source install/setup.bash
      ros2 launch moveit_resources_panda_moveit_config demo.launch.py
      

      0e854697-8e11-4880-8370-6ae30c492671-image.png

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

      1 条回复 最后回复 回复 引用 0
      • LittleMINGL
        LittleMING
        最后由 小鱼 编辑

        ming@ming-BATTLE:~/moveit2_ws$ colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release
        Starting >>> moveit_common
        Starting >>> moveit_configs_utils
        Starting >>> moveit_resources_prbt_support
        Finished <<< moveit_common [0.27s]                                 
        Starting >>> moveit_core
        --- stderr: moveit_configs_utils                                    
        /usr/lib/python3/dist-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
          warnings.warn(
        ---
        Finished <<< moveit_configs_utils [0.47s]
        Finished <<< moveit_resources_prbt_support [0.53s]
        --- stderr: moveit_core                          
        CMake Error at /usr/share/cmake-3.22/Modules/FindPkgConfig.cmake:603 (message):
          A required package was not found
        Call Stack (most recent call first):
          /usr/share/cmake-3.22/Modules/FindPkgConfig.cmake:825 (_pkg_check_modules_internal)
          CMakeLists.txt:14 (pkg_check_modules)
        
        
        ---
        Failed   <<< moveit_core [0.54s, exited with code 1]
        
        Summary: 3 packages finished [0.98s]
          1 package failed: moveit_core
          2 packages had stderr output: moveit_configs_utils moveit_core
          34 packages not processed
        
        LittleMINGL 小鱼小 2 条回复 最后回复 回复 引用 0
        • LittleMINGL
          LittleMING @LittleMING
          最后由 编辑

          @LittleMING 其他都显示正确,最后colcn build失败

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

            @LittleMING 给你用代码块包裹下,这个错误我在编译的时候也遇到过,原因是你自己apt装过moveit相关的包了,导致依赖错误,请手动卸载掉后重试。

            sudo apt autoremove ros-humble-moveit*
            

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

            LittleMINGL 2 条回复 最后回复 回复 引用 0
            • LittleMINGL
              LittleMING @小鱼
              最后由 编辑

              @小鱼 重新试过了,还是不行
              executing command [sudo -H apt-get install -y ros-humble-joint-state-broadcaster]
              这句话没看到

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

                @小鱼 把build这个文件夹删除后重新来过报错代码还是一样

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

                  @LittleMING 确认下环境,是否有source过ROS2

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

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

                    @小鱼

                    # >>> fishros initialize >>>
                     source /opt/ros/humble/setup.bash 
                    # <<< fishros initialize <<<
                    

                    这是sudo gedit ~/.bashrc里面的内容,应该已经source了

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

                      @LittleMING 看起来是的,目前我也没办法定位出问题,建议你用一下一键安装ROS+Docker创建一个Docker下的ROS2环境,测试没问题后再想办法解决你的系统问题。

                      目前看你给到的错误信息,定位不出具体问题,看不出来哪些包找不到。

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

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

                        @小鱼 你试过在双系统直接安装ros humble吗,还是一直在docker

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

                          @LittleMING 我写教程就是双系统下直接装的,应该是你的一些前置操作造成的。

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

                          1 条回复 最后回复 回复 引用 0
                          • 阿政在路上阿
                            阿政在路上
                            最后由 编辑

                            请问,我是在源码编译安装最后colcon build 出现了问题,在编译的过程中会卡顿然后终端就闪退了,尝试了增大内存和处理器数量,但是还是没解决,请问有其他的办法吗?

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

                              @阿政在路上 在 Colcon编译导致系统卡死问题|CPU100% 或 内存 100% 中说:

                              六核十二线程处理器,使用从哦啦从编译一个比较大的工作空间导致系统卡死。
                              解决办法,限制并行使用的线程数量,比如用6个。
                              colcon build --parallel-workers 6

                              上面的方案在功能包多的空间内存还会爆掉,还有一个办法,那就是不用并行的了(亲测有效)。
                              colcon build --executor sequential

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

                              阿政在路上阿 2 条回复 最后回复 回复 引用 1
                              • 阿政在路上阿
                                阿政在路上 @小鱼
                                最后由 编辑

                                @小鱼 好的,谢谢您,我一会试一下

                                1 条回复 最后回复 回复 引用 0
                                • 阿政在路上阿
                                  阿政在路上 @小鱼
                                  最后由 编辑

                                  @小鱼 尝试了 ,还是闪退了😵😵😵

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

                                    @阿政在路上 你用的什么环境,系统版本,ros2版本,是否使用容器

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

                                    阿政在路上阿 1 条回复 最后回复 回复 引用 0
                                    • 阿政在路上阿
                                      阿政在路上 @小鱼
                                      最后由 编辑

                                      @小鱼 Ubuntu22.04,ros是humble,没有装容器

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

                                        @阿政在路上 虚拟机还是双系统鸭,直接闪退可真烦,你把指令后面加上一个&放后台执行试试

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

                                        阿政在路上阿 11989270601 2 条回复 最后回复 回复 引用 0
                                        • 阿政在路上阿
                                          阿政在路上 @小鱼
                                          最后由 编辑

                                          @小鱼 虚拟机的

                                          1 条回复 最后回复 回复 引用 0
                                          • 笨笨洋笨
                                            笨笨洋
                                            最后由 编辑

                                            虚拟机安装Ubuntu22.04系统,安装ROS2 humble,在安装Moveit2 时,编译源码colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release,最后编译结果显示:

                                            1 package had stderr output: moveit_configs_utils
                                            

                                            这个怎么处理!error.png

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