2、ROS与MoveIt环境搭建:ROS Noetic安装与配置、MoveIt1安装、工作空间创建与编译测试
说实话,环境搭建这一步,劝退了很多人。
我见过不少同学,代码写得挺溜,结果卡在安装上,折腾两天连个节点都跑不起来。其实没那么玄乎,只要把几个关键点踩实了,后面就顺了。
这一章,咱们就把ROS Noetic和MoveIt1的环境,从头到尾捋一遍。
2.1 为什么选ROS Noetic + MoveIt1?
你可能会问:现在都202x年了,为啥不直接上ROS2?
我的回答很直接:MoveIt1在ROS Noetic上最成熟、最稳定。我在项目里做过对比,MoveIt1的OMPL规划器、碰撞检测库FCL,在Noetic上跑得最顺。很多工业机械臂的官方驱动,至今还在维护Noetic版本。
说白了,咱们学的是抓取参数配置,不是折腾底层通信。用Noetic能让你把精力放在核心内容上,少踩坑。
核心结论:ROS Noetic(Ubuntu 20.04) + MoveIt1,是当前机械臂抓取开发最稳妥的组合。ROS2的MoveIt2虽然新,但文档和社区资源还不够全,不适合入门。
2.2 安装ROS Noetic
嗯,这里要注意:系统必须是Ubuntu 20.04,别用22.04硬装,会出各种依赖冲突。我当初就犯过这个傻,折腾了一下午。
2.2.1 添加软件源与密钥
打开终端,一行一行来:
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt install curl
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
sudo apt update
2.2.2 安装完整桌面版
我个人习惯装desktop-full,一步到位,省得后面缺包:
sudo apt install ros-noetic-desktop-full
这个过程大概10-20分钟,取决于网速。你可以去泡杯咖啡。
2.2.3 初始化rosdep
rosdep是用来解决依赖的,必须配好:
sudo rosdep init
rosdep update
注意:如果sudo rosdep init报错说“已存在”,说明你之前装过ROS。直接执行rosdep update就行。我曾经遇到过rosdep update超时,那是因为网络问题,换个时间段或挂个代理就好了。
2.2.4 设置环境变量
把ROS环境变量写进.bashrc,这样每次打开终端自动加载:
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
验证一下:
roscore
如果能看到类似started core service [/rosout]的信息,恭喜你,ROS Noetic装好了。
2.3 安装MoveIt1
ROS装好之后,MoveIt1就是一条命令的事:
sudo apt install ros-noetic-moveit
这个包会帮你把MoveIt1的核心组件、规划器、可视化插件都装上。我建议再装几个常用的工具包:
sudo apt install ros-noetic-moveit-visual-tools ros-noetic-moveit-commander
小技巧:装完之后,可以跑一下MoveIt1自带的demo来验证:roslaunch moveit_setup_assistant setup_assistant.launch。如果能弹出图形界面,说明MoveIt1安装成功。
2.4 创建工作空间
工作空间是ROS项目的“家”。我习惯用catkin_ws这个名字:
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin_make
第一次编译会生成devel和build两个文件夹。记得把工作空间的环境变量也加进去:
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
验证一下:
echo $ROS_PACKAGE_PATH
如果输出里包含/home/你的用户名/catkin_ws/src,就对了。
2.5 编译测试:跑一个简单的MoveIt示例
光装完不算完,得跑起来才算数。咱们用MoveIt官方提供的Panda机械臂示例来测试:
sudo apt install ros-noetic-panda-moveit-config
roslaunch panda_moveit_config demo.launch
如果一切正常,你会看到Rviz界面里出现一个Franka Panda机械臂。你可以用拖拽的方式,给机械臂拖一个目标位姿,然后点“Plan & Execute”,看它动起来。
我第一次看到机械臂在仿真里动起来的时候,还挺激动的。你想想看,一个虚拟的机械臂,按照你给的路径,流畅地抓取、移动,那种成就感,很实在。
常见问题:如果Rviz里看不到机械臂模型,或者报No planning service available,多半是MoveIt1的规划器没启动。检查一下终端里有没有move_group节点的输出。如果没有,重新执行roslaunch panda_moveit_config demo.launch,注意看报错信息。
2.6 本章知识体系总览
下面这张图,把整个环境搭建的流程串起来了。你可以把它当作一张“地图”,以后遇到问题,回来看看就知道卡在哪一步。
2.7 常见问题与避坑指南
| 问题现象 | 可能原因 | 解决办法 |
|---|---|---|
roscore 启动失败,端口被占用 |
之前有roscore进程没关 | killall -9 roscore 或重启终端 |
catkin_make 报错找不到包 |
工作空间没source | 执行 source ~/catkin_ws/devel/setup.bash |
| Rviz里没有机械臂模型 | MoveIt配置没加载 | 检查 roslaunch panda_moveit_config demo.launch 是否完整运行 |
rosdep update 超时 |
网络问题 | 换源或挂代理,或者手动下载rosdep文件 |
我的经验:如果你在安装过程中遇到任何E: Unable to locate package的错误,先执行sudo apt update,再重新安装。很多时候只是软件源缓存没更新。
好了,环境搭好了,咱们就可以开始真正的MoveIt配置之旅了。记住,这一步虽然枯燥,但它是后面所有内容的基础。把这一步走稳,后面你会感谢自己的。