第2章 · ROS与MoveIt环境搭建
说实话,环境搭建是很多人入门时最头疼的一步。我见过不少同学卡在依赖冲突上,一卡就是半天。但换个角度想——把地基打牢,后面跑起仿真来才顺风顺水。这一章我们就来把 ROS Noetic 和 MoveIt 装好,再建个工作空间跑个测试。
▲ 本章知识脉络:从系统准备到跑通第一个测试
2.1 ROS Noetic 安装与配置
我个人的习惯是——用 Ubuntu 20.04 装 ROS Noetic,这是目前最稳定的组合。你想想看,Noetic 是 ROS1 的长期支持版,2025 年才 EOL,现在用正合适。
打开终端,先把源配好:
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
然后安装桌面完整版(包含 RViz、仿真器、各种库):
sudo apt install ros-noetic-desktop-full
sudo rosdep init && rosdep update
最后把环境变量写进 bashrc,这样每次开终端就不用再 source 了:
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
验证一下:roscore 能正常启动就说明 ROS 核心装好了。嗯,这里要注意——如果 roscore 报端口冲突,八成是之前有残留进程,killall -9 roscore rosmaster 清一下就好。
2.2 MoveIt 安装与依赖
MoveIt 的安装其实比想象中简单。官方提供了 metapackage,一行命令搞定:
sudo apt install ros-noetic-moveit
但别急着高兴——我建议额外装几个常用插件,不然后面做运动学配置时会缺胳膊少腿。比如:
ros-noetic-moveit-visual-tools—— RViz 辅助显示ros-noetic-moveit-commander—— Python 接口ros-noetic-moveit-ros-planning-interface—— C++ 规划接口
你可以一口气装完:
sudo apt install ros-noetic-moveit-visual-tools ros-noetic-moveit-commander ros-noetic-moveit-ros-planning-interface
apt install ros-noetic-moveit 就开干,结果发现缺少 OMPL 规划器插件,导致运动规划一直失败。后来排查半天,其实只要装 ros-noetic-ompl 就行。所以建议把 ros-noetic-moveit 依赖的所有包都检查一遍,或者直接用 ros-noetic-moveit-full。
另外,如果你打算用 Gazebo 做仿真,别忘了:
sudo apt install ros-noetic-gazebo-ros-pkgs ros-noetic-gazebo-ros-control
2.3 工作空间创建与测试
工作空间是 ROS 项目的“工地”。我习惯用 catkin_tools 来管理,比原生的 catkin_make 更直观。装一下:
sudo apt install python3-catkin-tools
然后创建并初始化:
mkdir -p ~/moveit_ws/src
cd ~/moveit_ws
catkin init
为了验证 MoveIt 是否正常工作,我们拉一个官方的示例包:
cd ~/moveit_ws/src
git clone https://github.com/ros-planning/moveit_tutorials.git -b master
cd ~/moveit_ws
rosdep install --from-paths src --ignore-src -r -y
catkin build
编译完成后,source 一下:
source ~/moveit_ws/devel/setup.bash
roslaunch moveit_tutorials demo.launch,如果能看到 RViz 界面里出现一个 Panda 机械臂,并且可以拖拽拖动——恭喜,环境搭建成功了!
这里有个小坑——如果你在虚拟机里跑,记得给虚拟机至少分配 4GB 内存,不然 RViz 加载模型时会卡死。我当年用 2GB 内存的虚拟机,等模型加载等了五分钟……后来直接换了物理机。
2.4 避坑指南 & 个人经验
- Python 版本:ROS Noetic 只支持 Python 3,别再用 Python 2 的脚本了。我见过有人把 ROS Kinetic 的脚本直接拿过来用,结果报错一堆。
- 网络问题:
rosdep update如果超时,试试挂代理或者换国内源。我在公司内网经常遇到,后来直接配了raw.githubusercontent.com的 hosts。 - 工作空间覆盖:如果你之前装过其他 ROS 版本,记得检查
~/.bashrc里有没有多个source语句,避免冲突。
说白了,环境搭建就是“细心 + 耐心”。按照上面的步骤走,一般不会出大问题。如果真遇到奇怪的报错,别慌——把错误信息复制到搜索引擎,八成能找到答案。我自己也经常这么干。