1. ROS2环境搭建与工作空间配置
任务目标
在Ubuntu 22.04系统上完成ROS2 Humble的安装与基础环境配置,创建并构建ROS2工作空间,最后通过运行核心节点验证ROS2功能正常。
环境准备
- 操作系统:Ubuntu 22.04 LTS(ROS2 Humble官方支持版本)
- 已配置可用的软件源(建议使用国内镜像加速)
- 具备sudo权限的普通用户
安装ROS2 Humble
依次执行以下命令完成ROS2 Humble的安装:
# 1. 设置编码
sudo apt update && sudo apt install -y locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8
# 2. 添加ROS2软件源
sudo apt install -y software-properties-common curl
sudo add-apt-repository universe
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 -y ros-humble-desktop
# 4. 安装编译工具
sudo apt install -y python3-colcon-common-extensions python3-rosdep
配置环境变量
# 将ROS2环境变量写入bashrc,每次打开终端自动加载
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
# 安装rosdep并初始化(用于后续依赖管理)
sudo rosdep init
rosdep update
创建并构建工作空间
# 创建工作空间目录结构
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws
# 构建工作空间(首次构建仅生成基础配置)
colcon build
# 将工作空间的setup脚本加入环境变量
echo "source ~/ros2_ws/install/setup.bash" >> ~/.bashrc
source ~/.bashrc
验证ROS2核心功能
打开两个终端,分别执行以下命令验证ROS2通信是否正常:
终端1(运行发布者节点):
ros2 run demo_nodes_cpp talker
终端2(运行订阅者节点):
ros2 run demo_nodes_cpp listener
预期输出:终端2持续收到终端1发布的Hello World消息,说明ROS2节点通信正常。
验证工作空间配置
# 检查环境变量是否包含工作空间路径
echo $COLCON_PREFIX_PATH
# 预期输出包含 /home/用户名/ros2_ws/install
# 查看当前ROS2版本
ros2 --version
# 预期输出包含 ros2 version 版本号信息
常见问题排查
- rosdep init失败:若提示网络错误,可尝试
sudo rosdep init --include-eol-distros或检查网络代理设置。 - colcon build无输出:首次构建空工作空间属正常现象,只要无error提示即构建成功。
- talker/listener无法通信:检查两个终端是否都执行了
source /opt/ros/humble/setup.bash,或尝试重启终端使环境变量生效。
通过条件
满足以下全部条件即视为案例完成:
ros2 --version能正常输出版本信息;colcon build在~/ros2_ws目录下无报错执行完成;- talker与listener节点能跨终端正常收发消息;
- 新开终端后
ros2命令可直接使用,无需手动source。