MoveIt2是基于ROS2的机器人操作平台,其集成了运动规划,操作,3D感知,运动学,控制和导航方面的最新技术与一体。
接着我们来简单看下Moveit2的框架如图2-1所示
简单的可以将图2-1拆分为以下几个部分:
其中规划流水线,通过调用规划接口产生轨迹,之后进行碰撞检测,若不通过则继续规划,直到产生一条无碰撞的轨迹。
Moveit2提供三个默认的规划流水线的实现。
Moveit2提供了两种实现
我们可以直接使用apt安装官方编译好的二进制包,也可以把源代码下载下来自己编译出二进制包,但为了学习方便,也为了第一时间体验新发布的特性(官方二进制比源码总慢半拍),我这里优先带你用源码安装。
小鱼是基于Ubuntu22.04,Humble版本的ROS2进行安装的,请你和小鱼保持相同的环境,这样不容易出错。
当然你如果你不是22.04的Ubuntu,也不用重新安装,用小鱼一键安装里的安装多版本ROS,可以直接帮你创建一个Ubuntu22.04且包含Humble版本ROS2的环境,非常快捷。
一键安装地址:https://fishros.org.cn/forum/topic/20
下载源码我们用熟悉的git工具就可以完成,将Moveit2代码下载到指定的工作空间的文件夹,可以用下面的指令
git clone https://github.com/ros-planning/moveit2.git moveit2_ws/src/moveit2
国内用户实惨,下载过程中你可能会遇到网络问题,不过不要担心,我们找一个代理来用,在原来的地址上加个头
git clone https://ghproxy.com/https://github.com/ros-planning/moveit2.git moveit2_ws/src/moveit2
下载完成后你应该可以在moveit2_ws/src/moveit2文件夹下看到很多个功能包,代表下载成功。
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版本会删掉多余的调试信息,运行起来会更快)。
最后你应该看到,代表编译成功。
Summary: 38 packages finished [13min 22s]
当然你也有可能会编译失败,目前一个已知原因是你之前用二进制安装过moveit2,导致的依赖错误,我们这里手动卸载下即可
sudo apt autoremove ros-humble-moveit*
sudo apt install ros-humble-moveit
目前还是推荐你使用编译安装,有些新特性并没有发布,二进制安装版本的Moveit2无法使用。