可以直接使用apt安装官方编译好的二进制包,也可以把源代码下载下来自己编译,本文是通过源码编译安装的Moveit2。
这里写目录标题
- 1.二进制安装
- 2.源码编译安装
-
- [2.1 源码下载和准备](#2.1 源码下载和准备)
- [2.2 更新本地的 ROS 2 Humble 软件源](#2.2 更新本地的 ROS 2 Humble 软件源)
- [2.3 安装编译前需要的一些依赖](#2.3 安装编译前需要的一些依赖)
- [2.4 源码编译](#2.4 源码编译)
- [2.5 demo验证](#2.5 demo验证)
- 3.编译过程中的错误
-
- [3.1 --- stderr: moveit_servo CMake Error at CMakeLists.txt:54 (find_package):By not providing "Findcontrol_toolbox.cmake" in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by "control_toolbox", but CMake did not find one.](#3.1 --- stderr: moveit_servo CMake Error at CMakeLists.txt:54 (find_package):By not providing "Findcontrol_toolbox.cmake" in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by "control_toolbox", but CMake did not find one.)
- [3.2 /home/zzw/project/moveit2_ws/src/moveit_task_constructor/core/src/task.cpp:47:10: fatal error: scope_guard/scope_guard.hpp: No such file or directory 47 | #include <scope_guard/scope_guard.hpp>](#include <scope_guard/scope_guard.hpp>)
1.二进制安装
通过apt安装
bash
sudo apt install ros-humble-moveit
2.源码编译安装
2.1 源码下载和准备
PS: 下载源码的过程建议科学上网
- 下载
moveit2_tutorials
bash
git clone https://github.com/ros-planning/moveit2_tutorials -b humble --depth 1 moveit2_ws/src/moveit2_tutorials
下载完成后可以在moveit2_ws/src/moveit2_tutorials文件夹下看到很多个功能包,代表下载成功

- 安装
vcs自动读取repo文件并克隆其中的代码
bash
sudo apt install python3-vcstool
- 通过
moveit2_tutorials.repos下载其他的源码包
安装完后我们可以在src目录(注意是在src目录下)运行指令
bash
vcs import < moveit2_tutorials/moveit2_tutorials.repos
这个过程较慢,运行过程中会看到src文件夹下会多了其他的源码包,因为 moveit2 的包较大所以过程比较慢,静静等待。(如果实在太慢可以去相应的源码包下面去看有没有文件,没有的话可以手动克隆并切换到相应的分支,参考 moveit2_tutorials.repos 中的URL和branch)

2.2 更新本地的 ROS 2 Humble 软件源
- 更新本地的 ROS 2 Humble 软件源
首先确保 /etc/apt/sources.list.d/ros2.list 中配置的是正确的 ROS 2 Humble 源(适配 Ubuntu 22.04)
bash
# 查看当前 ROS 2 源配置
cat /etc/apt/sources.list.d/ros2.list
# 正确的配置应为(针对 Ubuntu 22.04 + Humble):
# jammy 是 Ubuntu 22.04 的代号,Humble 对应 jammy
deb [arch=amd64 signed-by=/etc/apt/trusted.gpg.d/ros.gpg] https://mirrors.aliyun.com/ros2/ubuntu jammy main
# 若配置错误,重新添加源,删除旧的源配置(如果有误)
sudo rm /etc/apt/sources.list.d/ros2.list
2.3 安装编译前需要的一些依赖
- 安装编译前需要的一些依赖
bash
rosdepc update
cd moveit2_ws/
rosdepc install --from-path src --ignore-src -r -y
# --from-path src src是文件夹的名字,意思说是扫描src文件夹下的源码,--ignore-src不安装已经有源码的依赖,-r表示遇到错误继续装,-y是遇到问题自动回答是
小鱼文档中说看到如下的内容表示成功,实际我在编译时因为没有更新本地的 ROS 2 Humble
软件源,所以报错了不少,但这不影响下面继续编译,编译的时候报错说缺什么库再去安装就行,问题不大。
2.4 源码编译
- 编译源码
编译和ROS2一样,用的是colcon工具,直接上colcon build即可
bash
cd moveit2_ws/
# 下面的指令多了--executor sequential
colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release --executor sequential
PS: 实际我在本地编译时,电脑总是会卡住死机,猜测是colcon 编译时CPU 负载过高,这里选择单线程编译
编译成功如下:
bash
zzw@zzw-ThinkBook:~/project/moveit2_ws$ colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release --executor sequential
Starting >>> launch_param_builder
Finished <<< launch_param_builder [0.40s]
Starting >>> moveit_common
Finished <<< moveit_common [0.10s]
Starting >>> moveit_msgs
Finished <<< moveit_msgs [0.34s]
Starting >>> moveit_resources_fanuc_description
Finished <<< moveit_resources_fanuc_description [0.08s]
Starting >>> moveit_resources_panda_description
Finished <<< moveit_resources_panda_description [0.10s]
Starting >>> moveit_resources_pr2_description
Finished <<< moveit_resources_pr2_description [0.10s]
Starting >>> moveit_resources_prbt_support
Finished <<< moveit_resources_prbt_support [0.09s]
Starting >>> rosparam_shortcuts
Finished <<< rosparam_shortcuts [0.16s]
Starting >>> srdfdom
Finished <<< srdfdom [0.27s]
Starting >>> moveit_configs_utils
Finished <<< moveit_configs_utils [0.41s]
Starting >>> moveit_resources_fanuc_moveit_config
Finished <<< moveit_resources_fanuc_moveit_config [0.07s]
Starting >>> moveit_resources_panda_moveit_config
Finished <<< moveit_resources_panda_moveit_config [0.09s]
Starting >>> moveit_task_constructor_msgs
Finished <<< moveit_task_constructor_msgs [0.29s]
Starting >>> rviz_marker_tools
Finished <<< rviz_marker_tools [0.12s]
Starting >>> moveit_core
Finished <<< moveit_core [0.41s]
Starting >>> moveit_resources
Finished <<< moveit_resources [0.10s]
Starting >>> chomp_motion_planner
Finished <<< chomp_motion_planner [0.19s]
Starting >>> moveit_resources_prbt_ikfast_manipulator_plugin
Finished <<< moveit_resources_prbt_ikfast_manipulator_plugin [0.16s]
Starting >>> moveit_ros_occupancy_map_monitor
Finished <<< moveit_ros_occupancy_map_monitor [0.19s]
Starting >>> moveit_simple_controller_manager
Finished <<< moveit_simple_controller_manager [0.18s]
Starting >>> pilz_industrial_motion_planner_testutils
Finished <<< pilz_industrial_motion_planner_testutils [0.19s]
Starting >>> moveit_chomp_optimizer_adapter
Finished <<< moveit_chomp_optimizer_adapter [0.18s]
Starting >>> moveit_planners_chomp
Finished <<< moveit_planners_chomp [0.22s]
Starting >>> moveit_plugins
Finished <<< moveit_plugins [0.13s]
Starting >>> moveit_ros_control_interface
Finished <<< moveit_ros_control_interface [0.20s]
Starting >>> moveit_ros_planning
Finished <<< moveit_ros_planning [0.30s]
Starting >>> moveit_kinematics
Finished <<< moveit_kinematics [0.20s]
Starting >>> moveit_planners_ompl
Finished <<< moveit_planners_ompl [0.23s]
Starting >>> moveit_ros_perception
Finished <<< moveit_ros_perception [0.25s]
Starting >>> moveit_ros_robot_interaction
Finished <<< moveit_ros_robot_interaction [0.22s]
Starting >>> moveit_ros_warehouse
Finished <<< moveit_ros_warehouse [0.25s]
Starting >>> moveit_visual_tools
Finished <<< moveit_visual_tools [0.31s]
Starting >>> moveit_ros_benchmarks
Finished <<< moveit_ros_benchmarks [0.22s]
Starting >>> moveit_ros_move_group
Finished <<< moveit_ros_move_group [0.24s]
Starting >>> moveit_resources_prbt_moveit_config
Finished <<< moveit_resources_prbt_moveit_config [0.15s]
Starting >>> moveit_ros_planning_interface
Finished <<< moveit_ros_planning_interface [0.30s]
Starting >>> moveit_hybrid_planning
Finished <<< moveit_hybrid_planning [0.38s]
Starting >>> moveit_resources_prbt_pg70_support
Finished <<< moveit_resources_prbt_pg70_support [0.12s]
Starting >>> moveit_ros_visualization
Finished <<< moveit_ros_visualization [0.76s]
Starting >>> moveit_servo
Finished <<< moveit_servo [0.30s]
Starting >>> moveit_ros
Finished <<< moveit_ros [0.16s]
Starting >>> moveit_setup_framework
Finished <<< moveit_setup_framework [0.28s]
Starting >>> pilz_industrial_motion_planner
Finished <<< pilz_industrial_motion_planner [0.28s]
Starting >>> moveit_planners
Finished <<< moveit_planners [0.19s]
Starting >>> moveit_setup_app_plugins
Finished <<< moveit_setup_app_plugins [0.42s]
Starting >>> moveit_setup_controllers
Finished <<< moveit_setup_controllers [0.46s]
Starting >>> moveit_setup_core_plugins
Finished <<< moveit_setup_core_plugins [0.35s]
Starting >>> moveit_setup_srdf_plugins
Finished <<< moveit_setup_srdf_plugins [0.35s]
Starting >>> moveit_runtime
Finished <<< moveit_runtime [0.21s]
Starting >>> moveit_setup_assistant
Finished <<< moveit_setup_assistant [0.32s]
Starting >>> moveit_task_constructor_core
Finished <<< moveit_task_constructor_core [0.37s]
Starting >>> moveit
Finished <<< moveit [0.26s]
Starting >>> moveit_task_constructor_capabilities
Finished <<< moveit_task_constructor_capabilities [0.27s]
Starting >>> moveit_task_constructor_visualization
Finished <<< moveit_task_constructor_visualization [0.52s]
Starting >>> moveit2_tutorials
Finished <<< moveit2_tutorials [0.35s]
Starting >>> moveit_task_constructor_demo
Finished <<< moveit_task_constructor_demo [0.34s]
Summary: 56 packages finished [14.4s]
2.5 demo验证
编译或者二进制安装完成,我们就可以通过运行moveit_resource中的demo来进行机械臂运动规划测试。
打开终端,输入以下指令
bash
cd moveit2_ws/
source install/setup.bash
ros2 launch moveit_resources_panda_moveit_config demo.launch.py

bash
ros2 launch moveit2_tutorials demo.launch.py rviz_config:=panda_moveit_config_demo_empty.rviz
点击 Add > MotionPlanning就会出现一个机械臂的模型

3.编译过程中的错误
3.1 --- stderr: moveit_servo CMake Error at CMakeLists.txt:54 (find_package):By not providing "Findcontrol_toolbox.cmake" in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by "control_toolbox", but CMake did not find one.
在上面的2.3节中说了可能有一些依赖没安装,这会导致最后 colcon build 时会报一些错,可以根据缺什么库就安装什么包来解决。
bash
zzw@zzw-ThinkBook:~/project/moveit2_ws$ colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release
Starting >>> moveit_resources_panda_description
Starting >>> moveit_common
Starting >>> moveit_msgs
Starting >>> moveit_resources_pr2_description
Starting >>> srdfdom
Starting >>> launch_param_builder
Starting >>> moveit_resources_fanuc_description
Starting >>> moveit_resources_prbt_support
Starting >>> rosparam_shortcuts
Finished <<< moveit_common [0.18s]
Starting >>> rviz_marker_tools
Finished <<< moveit_resources_panda_description [0.20s]
Starting >>> moveit_resources_panda_moveit_config
Finished <<< moveit_resources_pr2_description [0.22s]
Finished <<< moveit_resources_fanuc_description [0.22s]
Starting >>> moveit_resources_fanuc_moveit_config
Finished <<< moveit_resources_prbt_support [0.23s]
Finished <<< rosparam_shortcuts [0.29s]
Finished <<< srdfdom [0.30s]
Finished <<< moveit_msgs [0.31s]
Starting >>> moveit_task_constructor_msgs
Finished <<< rviz_marker_tools [0.14s]
Finished <<< moveit_resources_fanuc_moveit_config [0.10s]
Finished <<< moveit_resources_panda_moveit_config [0.14s]
Starting >>> moveit_core
Starting >>> moveit_resources
Finished <<< moveit_resources [0.05s]
Finished <<< launch_param_builder [0.47s]
Starting >>> moveit_configs_utils
Finished <<< moveit_core [0.30s]
Starting >>> moveit_ros_occupancy_map_monitor
Starting >>> moveit_simple_controller_manager
Starting >>> moveit_resources_prbt_ikfast_manipulator_plugin
Starting >>> chomp_motion_planner
Starting >>> pilz_industrial_motion_planner_testutils
Finished <<< moveit_task_constructor_msgs [0.35s]
Finished <<< moveit_resources_prbt_ikfast_manipulator_plugin [0.09s]
Finished <<< moveit_simple_controller_manager [0.10s]
Finished <<< moveit_ros_occupancy_map_monitor [0.11s]
Starting >>> moveit_plugins
Starting >>> moveit_ros_control_interface
Finished <<< chomp_motion_planner [0.12s]
Starting >>> moveit_planners_chomp
Starting >>> moveit_chomp_optimizer_adapter
Finished <<< pilz_industrial_motion_planner_testutils [0.13s]
Finished <<< moveit_plugins [0.06s]
Finished <<< moveit_chomp_optimizer_adapter [0.08s]
Finished <<< moveit_ros_control_interface [0.11s]
Finished <<< moveit_planners_chomp [0.11s]
Finished <<< moveit_configs_utils [0.42s]
Starting >>> moveit_ros_planning
Finished <<< moveit_ros_planning [0.29s]
Starting >>> moveit_kinematics
Starting >>> moveit_ros_warehouse
Starting >>> moveit_planners_ompl
Starting >>> moveit_ros_robot_interaction
Starting >>> moveit_ros_perception
Starting >>> moveit_visual_tools
Finished <<< moveit_kinematics [0.15s]
Starting >>> moveit_ros_move_group
Finished <<< moveit_ros_robot_interaction [0.17s]
Finished <<< moveit_ros_warehouse [0.19s]
Starting >>> moveit_ros_benchmarks
Finished <<< moveit_ros_perception [0.20s]
Finished <<< moveit_ros_move_group [0.20s]
Starting >>> moveit_resources_prbt_moveit_config
Finished <<< moveit_resources_prbt_moveit_config [0.58s]
Starting >>> moveit_resources_prbt_pg70_support
Finished <<< moveit_resources_prbt_pg70_support [0.63s]
Finished <<< moveit_visual_tools [19.4s]
Finished <<< moveit_planners_ompl [21.3s]
Starting >>> moveit_ros_planning_interface
Finished <<< moveit_ros_benchmarks [22.1s]
Finished <<< moveit_ros_planning_interface [17.9s]
Starting >>> moveit_ros_visualization
Starting >>> pilz_industrial_motion_planner
Starting >>> moveit_hybrid_planning
Starting >>> moveit_servo
--- stderr: moveit_servo
CMake Error at CMakeLists.txt:54 (find_package):
By not providing "Findcontrol_toolbox.cmake" in CMAKE_MODULE_PATH this
project has asked CMake to find a package configuration file provided by
"control_toolbox", but CMake did not find one.
Could not find a package configuration file provided by "control_toolbox"
with any of the following names:
control_toolboxConfig.cmake
control_toolbox-config.cmake
Add the installation prefix of "control_toolbox" to CMAKE_PREFIX_PATH or
set "control_toolbox_DIR" to a directory containing one of the above files.
If "control_toolbox" provides a separate development package or SDK, be
sure it has been installed.
---
Failed <<< moveit_servo [0.58s, exited with code 1]
Aborted <<< moveit_hybrid_planning [1.35s]
Aborted <<< pilz_industrial_motion_planner [1.56s]
Aborted <<< moveit_ros_visualization [1.97s]
Summary: 37 packages finished [42.5s]
1 package failed: moveit_servo
3 packages aborted: moveit_hybrid_planning moveit_ros_visualization pilz_industrial_motion_planner
1 package had stderr output: moveit_servo
15 packages not processed
安装 ros-humble-control-toolbox 后重新编译
bash
sudo apt install -y ros-humble-control-toolbox
3.2 /home/zzw/project/moveit2_ws/src/moveit_task_constructor/core/src/task.cpp:47:10: fatal error: scope_guard/scope_guard.hpp: No such file or directory 47 | #include <scope_guard/scope_guard.hpp>
报错的意思是找不到文件:#include <scope_guard/scope_guard.hpp>
实际去看了下源码包里面,确实scope_guard目录下是空的:

通过moveit2_tutorials.repos找到moveit_task_constructor仓库的URL,实际查看下源码仓库里面有没有,是本来就没有还是克隆的时候漏了。


是通过子仓库链接的,既然没有下载,那就把相应的scope_guard克隆到指定的地方,注意commit id要一致。
参考:
1.https://moveit.ai/install-moveit2/binary/
2.https://moveit.picknik.ai/humble/doc/tutorials/tutorials.html
3.https://fishros.org.cn/forum/topic/395/动手学moveit2-3-安装moveit2测试