第1章:MoveIt与ROS2入门

大家好,我是你们这门课的老朋友。咱们今天正式开篇,聊聊机器人操作系统和MoveIt框架。

说实话,我刚开始接触机器人编程那会儿,最头疼的就是底层驱动。每个电机、每个传感器都得自己写通信协议,调试起来简直要命。后来有了ROS,情况才彻底改观。你想想看,一个社区里成千上万的开发者都在用同一套标准,这得多省事。

1.1 机器人操作系统(ROS2)简介

ROS2,全称Robot Operating System 2。它不是真正的操作系统,而是一个分布式通信框架。说白了,就是让机器人身上各个零件能互相说话。

为什么我们要用ROS2而不是ROS1?嗯,这里有个关键点。ROS1设计于2007年,那时候还没多少人考虑实时性和多机器人协作。ROS2基于DDS(数据分发服务)协议,天生支持实时通信、安全认证,而且去掉了中心化的Master节点。我在一个产线项目里就吃过ROS1的亏——Master挂了,整个机器人队全瘫。换成ROS2后,单点故障的问题再没出现过。

核心特性一览:

  • 分布式架构:没有中心节点,节点间点对点通信
  • 实时性支持:可配置QoS策略,满足硬实时需求
  • 跨平台:支持Linux、Windows、macOS
  • 多语言接口:C++、Python、Rust等

1.2 MoveIt框架概述

MoveIt,就是ROS生态里专门做机械臂运动规划的库。我习惯叫它「机械臂的大脑」。你给MoveIt一个目标位姿,它就能算出一串关节角度,让机械臂从A点走到B点,还能避开障碍物。

它的核心组件包括:

  • 运动规划器:OMPL、STOMP、CHOMP等算法库
  • 运动学求解器:正向/逆向运动学计算
  • 碰撞检测:FCL(柔性碰撞库)
  • 场景管理:维护机器人自身和周围物体的状态

我在做汽车焊接工位项目时,遇到过机械臂和夹具干涉的问题。当时就是靠MoveIt的碰撞检测功能,提前在仿真里把路径调好,省了现场反复试错的功夫。

个人经验:刚开始学MoveIt,别急着调参数。先把URDF模型搞对,模型不对后面全是白费力气。

下面这张图,是我自己整理的MoveIt2核心架构。你看一眼,心里有个谱就行。

MoveIt2 核心架构 用户接口(C++ / Python API / RViz插件) MoveIt Core(规划场景、机器人模型、规划器接口) 运动规划器(OMPL / STOMP / CHOMP) 运动学求解器(KDL / TRAC-IK) 碰撞检测(FCL / Bullet) 场景管理(Planning Scene) 硬件接口(ROS2 Control / 自定义驱动) 数据流方向:用户 → 规划 → 碰撞检测 → 硬件

1.3 开发环境搭建

好,理论说完了,咱们动手。环境搭建这块,我踩过的坑比走过的路还多。这次咱们用Ubuntu 22.04 + ROS2 Humble + MoveIt2,这是目前最稳定的组合。

1.3.1 安装Ubuntu 22.04

如果你已经有Ubuntu系统,跳过这步。没有的话,去官网下载22.04 LTS的ISO镜像。我建议用虚拟机先练手,等熟悉了再装双系统。VirtualBox或VMware都行,分配4GB内存、2个CPU核心就够了。

注意:千万别用Ubuntu 24.04!ROS2 Humble官方只支持22.04。我曾经手贱升级过一次,结果依赖全崩,重装了三天。

1.3.2 安装ROS2 Humble

打开终端,按顺序执行以下命令:

# 设置locale
sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8

# 添加ROS2源
sudo apt install software-properties-common
sudo add-apt-repository universe
sudo apt update && sudo apt install curl -y
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

# 安装ROS2 Humble桌面版(包含RViz、demo等)
sudo apt update
sudo apt install ros-humble-desktop

# 安装开发工具
sudo apt install ros-dev-tools

安装完成后,记得把ROS2加到bashrc里:

echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc

验证一下:

ros2 run demo_nodes_cpp talker

如果看到「Hello World」不断输出,恭喜你,ROS2装好了。

1.3.3 安装MoveIt2

MoveIt2的安装分两步:先装二进制包,再装源码(可选)。

二进制安装(推荐新手):

sudo apt install ros-humble-moveit

这条命令会安装MoveIt2的所有核心组件,包括运动规划器、运动学求解器、碰撞检测库等。大概需要下载500MB左右,喝杯咖啡等一会儿。

源码安装(进阶):

如果你需要修改MoveIt2源码,或者想用最新的开发版,可以这样:

mkdir -p ~/moveit2_ws/src
cd ~/moveit2_ws
wget https://raw.githubusercontent.com/ros-planning/moveit2/main/moveit2.repos
vcs import src < moveit2.repos
rosdep install -r --from-paths src --ignore-src --rosdistro humble -y
colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release

我的建议:新手先用二进制包。等你能用MoveIt2完成一次完整的抓取规划后,再考虑源码编译。不然编译报错就能劝退一半人。

1.3.4 验证安装

装完别急着关终端,跑个demo看看:

ros2 launch moveit2_tutorials demo.launch.py

如果看到RViz界面弹出来,中间有个Panda机械臂,说明环境搭建成功了。你可以用鼠标拖拽机械臂末端,看看运动学求解器是不是在实时计算。

嗯,我第一次看到这个界面时,心里还挺激动的。从零开始搭环境,到能拖动机械臂,那种成就感,你试试就知道了。

1.4 本章小结

这一章我们干了三件事:

  • 搞清楚了ROS2和MoveIt2是干什么的
  • 看懂了MoveIt2的架构图
  • 亲手搭好了开发环境

环境搭好,后面的路就好走了。下一章咱们会加载一个真实的机械臂模型,开始第一次运动规划。别急,先把今天的内容消化掉。