小鱼 ROS 2 新书上线!点击链接查看, 新书配套视频点击链接查看。
提问前必看的发帖注意事项—— 提问前必看!不符合要求的问题拒绝回答!!
社区使用指南—如何添加标签修改密码
《动手学Moveit2》3.安装Moveit2测试
-
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
-
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
-
@LittleMING 其他都显示正确,最后colcn build失败
-
@LittleMING 给你用代码块包裹下,这个错误我在编译的时候也遇到过,原因是你自己apt装过moveit相关的包了,导致依赖错误,请手动卸载掉后重试。
sudo apt autoremove ros-humble-moveit*
-
@小鱼 重新试过了,还是不行
executing command [sudo -H apt-get install -y ros-humble-joint-state-broadcaster]
这句话没看到 -
@小鱼 把build这个文件夹删除后重新来过报错代码还是一样
-
@LittleMING 确认下环境,是否有source过ROS2
-
# >>> fishros initialize >>> source /opt/ros/humble/setup.bash # <<< fishros initialize <<<
这是sudo gedit ~/.bashrc里面的内容,应该已经source了
-
@LittleMING 看起来是的,目前我也没办法定位出问题,建议你用一下一键安装ROS+Docker创建一个Docker下的ROS2环境,测试没问题后再想办法解决你的系统问题。
目前看你给到的错误信息,定位不出具体问题,看不出来哪些包找不到。
-
@小鱼 你试过在双系统直接安装ros humble吗,还是一直在docker
-
@LittleMING 我写教程就是双系统下直接装的,应该是你的一些前置操作造成的。
-
请问,我是在源码编译安装最后colcon build 出现了问题,在编译的过程中会卡顿然后终端就闪退了,尝试了增大内存和处理器数量,但是还是没解决,请问有其他的办法吗?
-
@阿政在路上 在 Colcon编译导致系统卡死问题|CPU100% 或 内存 100% 中说:
六核十二线程处理器,使用从哦啦从编译一个比较大的工作空间导致系统卡死。
解决办法,限制并行使用的线程数量,比如用6个。
colcon build --parallel-workers 6上面的方案在功能包多的空间内存还会爆掉,还有一个办法,那就是不用并行的了(亲测有效)。
colcon build --executor sequential -
@小鱼 好的,谢谢您,我一会试一下
-
@小鱼 尝试了 ,还是闪退了
-
@阿政在路上 你用的什么环境,系统版本,ros2版本,是否使用容器
-
@小鱼 Ubuntu22.04,ros是humble,没有装容器
-
@阿政在路上 虚拟机还是双系统鸭,直接闪退可真烦,你把指令后面加上一个&放后台执行试试
-
@小鱼 虚拟机的
-
虚拟机安装Ubuntu22.04系统,安装ROS2 humble,在安装Moveit2 时,编译源码colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release,最后编译结果显示:
1 package had stderr output: moveit_configs_utils
这个怎么处理!