1. 课程导论与环境准备:ROS与URDF概述、Ubuntu系统安装、ROS Noetic安装、工作空间创建、课程项目介绍
1.1 这门课到底要做什么?
先聊聊这门课的定位。你想想看,市面上讲ROS的书和视频不少,但大多停留在「跑个turtlebot仿真」或者「让机械臂动一动」的层面。真正到了企业里,你要面对的是:怎么把真实的URDF模型集成到完整的机器人系统中?怎么处理传感器数据、规划路径、控制执行器?
我当年刚入行时,踩过一个大坑。公司买了个六轴协作臂,厂家给了URDF文件,我直接丢进ROS里,结果模型歪歪扭扭,关节限位全不对。后来花了整整一周才搞清楚——URDF里的坐标系定义和实际硬件差了90度。嗯,从那以后我就明白了,URDF不只是个「3D模型文件」,它是整个机器人系统的数字骨架。
这门课一共30章,我们会从零开始,一步步搭建一个完整的ROS+URDF机器人系统。今天先搞定环境,后面才能跑得起来。
1.2 ROS与URDF:它们到底是什么关系?
先简单说清楚两个核心概念。
ROS(Robot Operating System),说白了就是一个「机器人操作系统框架」。它不是真正的操作系统,而是一个分布式通信框架。你写一个节点发数据,另一个节点收数据,中间靠话题(Topic)、服务(Service)、动作(Action)来沟通。我习惯把ROS比作「机器人的神经系统」——各个模块之间通过它来传递信息。
URDF(Unified Robot Description Format),则是用来描述机器人物理结构的XML文件。它定义了机器人的连杆(link)、关节(joint)、几何形状、惯性参数、碰撞模型等等。你可以把URDF理解成「机器人的身份证」——ROS通过它才知道你的机器人长什么样、能怎么动。
它们的关系是这样的:
核心逻辑:URDF告诉ROS「我是什么」,ROS告诉URDF「你要怎么动」。两者缺一不可。
举个例子。你写一个导航程序,ROS需要知道机器人的外形尺寸才能做碰撞检测;你写一个运动规划器,ROS需要知道关节限位才能生成合法轨迹。这些信息都来自URDF。所以,URDF的质量直接决定了整个机器人系统的可靠性。
1.3 知识体系总览
下面这张图,是我个人习惯用来给学员展示的课程知识结构。你可以先扫一眼,有个整体印象。
1.4 环境准备:Ubuntu系统安装
ROS Noetic 官方只支持 Ubuntu 20.04。别想着在Windows上硬跑,我试过,坑多到怀疑人生。老老实实装双系统或者虚拟机。
注意:如果你用虚拟机,务必给至少4GB内存和2个CPU核心。否则后面编译ROS包时,你会等到怀疑人生。
安装步骤其实很简单:
- 从Ubuntu官网下载20.04 LTS镜像
- 制作启动U盘(推荐用Rufus或balenaEtcher)
- BIOS里关闭Secure Boot,从U盘启动
- 分区时建议:
/给30GB,/home给剩余空间,swap给8GB - 安装完成后,先跑
sudo apt update && sudo apt upgrade -y
我个人习惯装完系统后,第一时间装几个必备工具:
sudo apt install -y vim git curl wget net-tools
1.5 ROS Noetic 安装
ROS的安装流程其实很固定。我当年第一次装的时候,照着官方Wiki一步步来,结果卡在 rosdep init 那一步——网络问题。后来发现换个源就好了。
这里直接给标准流程:
# 1. 添加ROS软件源
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
# 2. 添加密钥
sudo apt install curl
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
# 3. 更新并安装完整桌面版
sudo apt update
sudo apt install ros-noetic-desktop-full -y
# 4. 初始化rosdep
sudo rosdep init
rosdep update
# 5. 设置环境变量
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
# 6. 安装构建工具
sudo apt install python3-rosinstall python3-rosinstall-generator python3-wstool build-essential -y
小技巧:如果 sudo rosdep init 报网络错误,可以试试 sudo apt install python3-rosdep 后再执行。我曾经在客户现场遇到过,换了手机热点才搞定。
装完后验证一下:
roscore
如果看到类似 started core service [/rosout] 的日志,恭喜你,ROS跑起来了。
1.6 创建工作空间
工作空间(Workspace)是ROS项目的组织方式。说白了,就是一个文件夹,里面按固定结构放代码。
标准流程:
# 创建目录结构
mkdir -p ~/ros_ws/src
cd ~/ros_ws
# 编译空工作空间
catkin_make
# 设置工作空间环境变量
echo "source ~/ros_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
验证工作空间是否生效:
echo $ROS_PACKAGE_PATH
如果输出里包含 /home/你的用户名/ros_ws/src,就对了。
关键点:每次新建终端,都要 source 工作空间的 setup.bash。我习惯把它写进 ~/.bashrc,省得每次手动敲。
1.7 课程项目介绍
这门课会贯穿一个完整的项目——四轮差速移动机器人。为什么选这个?因为它是ROS里最经典的平台,导航、SLAM、控制都能练到。
项目会包含这些模块:
| 模块 | 内容 | 对应章节 |
|---|---|---|
| URDF建模 | 车身、轮子、传感器支架的link/joint定义 | 第2-5章 |
| 传感器集成 | 激光雷达、IMU、里程计的URDF配置 | 第6-9章 |
| 仿真环境 | Gazebo仿真器搭建、物理参数调优 | 第10-14章 |
| 导航系统 | 地图构建、路径规划、避障 | 第15-22章 |
| 运动控制 | 差速模型解算、PID控制、速度平滑 | 第23-27章 |
| 集成部署 | Launch文件组织、参数服务器、多机通信 | 第28-30章 |
你想想看,学完这30章,你不仅能写出完整的URDF模型,还能把它跑在仿真里,甚至部署到真车上。这才是真正的「集成部署」能力。
1.8 本章小结
今天我们把地基打好了:
- 理解了ROS和URDF的核心关系
- 装好了Ubuntu 20.04 + ROS Noetic
- 创建了第一个工作空间
- 清楚了整个课程的项目脉络
嗯,环境准备这一步看着简单,但千万别跳过。我见过太多学员后面编译报错,回头发现是ROS没装全或者工作空间没source。磨刀不误砍柴工,把这一步走稳了,后面才能跑得快。