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 本章知识体系总览

下面这张图,把整个环境搭建的流程串起来了。你可以把它当作一张“地图”,以后遇到问题,回来看看就知道卡在哪一步。

ROS Noetic + MoveIt1 环境搭建流程 Ubuntu 20.04 系统 安装 ROS Noetic 安装 MoveIt1 创建 catkin 工作空间 编译 & 运行 Panda 示例 Rviz 中看到机械臂运动 避坑提醒 系统必须用 Ubuntu 20.04 不要跳过 rosdep init 记得 source 环境变量 验证清单 roscore 能启动 move_group 节点运行 Rviz 显示机械臂模型

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配置之旅了。记住,这一步虽然枯燥,但它是后面所有内容的基础。把这一步走稳,后面你会感谢自己的。