1. 仿真环境搭建:Ubuntu与ROS2的安装、Gazebo与MoveIt2的安装、仿真环境验证
各位同学,咱们正式开始。做机械臂仿真,第一步就是把“地基”打牢。说白了,就是装系统、装ROS2、装Gazebo和MoveIt2。这一步要是出问题,后面所有联调都白搭。我见过太多人卡在环境上,一卡就是两三天,心态直接崩了。
所以这一章,我会把每一步拆开揉碎了讲。你跟着我的节奏走,基本不会踩坑。
1.1 为什么选Ubuntu + ROS2?
你可能要问:为什么非得用Ubuntu?Windows不行吗?
嗯,理论上可以,但实操起来你会想砸电脑。ROS2对Linux的支持最原生,社区里99%的包都是为Ubuntu写的。我个人习惯用Ubuntu 22.04 LTS,搭配ROS2 Humble,这是目前最稳的组合。
| 组件 | 推荐版本 | 说明 |
|---|---|---|
| 操作系统 | Ubuntu 22.04 LTS | 长期支持,兼容性好 |
| ROS2 | Humble Hawksbill | 2022年LTS版本,稳定 |
| Gazebo | Gazebo Classic 11 | 与ROS2 Humble官方适配 |
| MoveIt2 | Humble分支 | 直接从源码或二进制安装 |
1.2 Ubuntu 22.04 安装要点
装系统这事,我默认你已经有基础了。但有几个坑我得提前说:
- 磁盘分区:至少给Ubuntu留80GB。别问我为什么,ROS2 + Gazebo + 各种依赖装完,30GB就没了。我刚开始做项目时只分了40GB,结果装到一半磁盘满了,那叫一个尴尬。
- 网络配置:安装时连上网络,让系统自动更新。不然后面装ROS2时缺依赖,你会疯的。
- 显卡驱动:如果你用NVIDIA显卡,装完系统后先装驱动。Gazebo的渲染需要GPU加速,没驱动的话画面卡成PPT。
1.3 ROS2 Humble 安装
ROS2的安装其实很套路化。官方文档写得很清楚,但我还是把核心步骤列出来,方便你对照。
# 1. 设置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
# 2. 添加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 $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
# 3. 安装ROS2 Humble桌面版
sudo apt update
sudo apt install ros-humble-desktop
# 4. 安装开发工具
sudo apt install ros-dev-tools
# 5. 设置环境变量
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
装完之后,验证一下:
ros2 run demo_nodes_cpp talker
# 再开一个终端
ros2 run demo_nodes_py listener
如果能看到talker和listener在通信,恭喜你,ROS2装好了。
1.4 Gazebo与MoveIt2安装
Gazebo和MoveIt2是仿真的两大核心。Gazebo负责物理环境,MoveIt2负责运动规划。两者配合,才能让机械臂在虚拟世界里动起来。
1.4.1 安装Gazebo Classic 11
# 安装Gazebo
sudo apt install gazebo11
sudo apt install libgazebo11-dev
# 安装ROS2与Gazebo的桥梁
sudo apt install ros-humble-gazebo-ros2-control
sudo apt install ros-humble-gazebo-ros2-pkgs
装完后,终端输入 gazebo,如果能弹出窗口,就算成功。
1.4.2 安装MoveIt2
MoveIt2的安装有两种方式:二进制安装和源码编译。我建议新手用二进制安装,省时间。
# 二进制安装MoveIt2
sudo apt install ros-humble-moveit
# 安装MoveIt2的Gazebo插件
sudo apt install ros-humble-moveit-ros-planning-interface
sudo apt install ros-humble-moveit-planners-ompl
sudo apt install ros-humble-moveit-simple-controller-manager
验证MoveIt2是否装好:
ros2 launch moveit2_tutorials demo.launch.py
如果能看到Rviz2界面里出现一个机械臂模型,说明MoveIt2可以正常工作了。
1.5 仿真环境验证
所有东西都装完了,怎么知道它们能不能协同工作?我准备了一个简单的验证流程。
1.5.1 启动Gazebo并加载一个空世界
gazebo --verbose
在Gazebo里,你应该能看到一个空荡荡的仿真世界。如果画面卡顿,检查一下显卡驱动。
1.5.2 启动MoveIt2并连接Gazebo
这里我们用一个简单的示例包来测试:
# 创建一个测试工作区
mkdir -p ~/test_ws/src
cd ~/test_ws/src
git clone https://github.com/ros-planning/moveit2_tutorials.git
cd ..
colcon build --symlink-install
source install/setup.bash
# 启动MoveIt2 + Gazebo联合仿真
ros2 launch moveit2_tutorials gazebo_demo.launch.py
如果一切顺利,你会看到:
- Gazebo里出现一个机械臂模型
- Rviz2里出现同样的机械臂,并且可以拖动规划
- 在Rviz2里规划一个运动,Gazebo里的机械臂会跟着动
1.6 整体架构图
下面这张图展示了我们搭建的仿真环境各组件之间的关系。你看一眼,心里就有数了。
1.7 常见问题与解决
装环境的过程中,你大概率会遇到一些问题。我把最常见的几个列出来:
| 问题 | 原因 | 解决方法 |
|---|---|---|
| Gazebo启动后黑屏 | 显卡驱动未安装或OpenGL版本过低 | 安装NVIDIA驱动,或更新Mesa库 |
| colcon build报错 | 缺少依赖包 | 运行 rosdep install --from-paths src --ignore-src -r -y |
| MoveIt2无法加载机器人模型 | URDF/SRDF路径配置错误 | 检查 robot_description 参数是否指向正确的URDF文件 |
| Gazebo与MoveIt2通信失败 | ROS2命名空间不匹配 | 确保Gazebo中的机器人命名空间与MoveIt2配置一致 |