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,或尝试重启终端使环境变量生效。

通过条件

满足以下全部条件即视为案例完成:

  1. ros2 --version 能正常输出版本信息;
  2. colcon build 在 ~/ros2_ws 目录下无报错执行完成;
  3. talker与listener节点能跨终端正常收发消息;
  4. 新开终端后 ros2 命令可直接使用,无需手动source。