2. 创建ROS2工作空间

任务目标

在Ubuntu 22.04 + ROS2 Humble环境中,从零创建一个名为dev_ws的ROS2工作空间,并在其中新建一个功能包hello_pkg,完成编译并验证功能包可被ROS2环境发现。

环境准备

确保已安装ROS2 Humble并完成环境配置。若尚未安装,执行以下命令(已安装可跳过):

sudo apt update
sudo apt install ros-humble-desktop python3-colcon-common-extensions
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc

创建并编译工作空间

工作空间采用标准ROS2布局:src目录存放源码,build、install、log目录由编译工具自动生成。执行以下命令创建目录结构并编译空工作空间:

mkdir -p ~/dev_ws/src
cd ~/dev_ws
colcon build

编译完成后,install/setup.bash文件即生成。后续每次使用该工作空间前需source此文件。

创建功能包

在src目录下使用ROS2命令行工具创建C++功能包hello_pkg:

cd ~/dev_ws/src
ros2 pkg create --build-type ament_cmake --node-name hello_node hello_pkg

该命令自动生成package.xml、CMakeLists.txt、src/hello_node.cpp及节点源文件。为验证编译链路,编辑src/hello_node.cpp,替换为以下最小可执行节点:

#include "rclcpp/rclcpp.hpp"

int main(int argc, char * argv[])
{
  rclcpp::init(argc, argv);
  auto node = std::make_shared<rclcpp::Node>("hello_node");
  RCLCPP_INFO(node->get_logger(), "Hello ROS2 from dev_ws!");
  rclcpp::shutdown();
  return 0;
}

编译功能包

回到工作空间根目录,重新编译整个工作空间:

cd ~/dev_ws
colcon build --packages-select hello_pkg

编译成功后,install/hello_pkg目录下会生成可执行文件hello_node。

验证方法

按以下步骤验证工作空间与功能包是否创建成功:

  1. source工作空间:source ~/dev_ws/install/setup.bash(每次新终端需执行)
  2. 运行节点:ros2 run hello_pkg hello_node
  3. 观察输出:终端应打印Hello ROS2 from dev_ws!日志信息
  4. 确认功能包可见:另开终端执行ros2 pkg list | grep hello_pkg,应输出hello_pkg

若第3步日志正常打印且第4步能查询到功能包,则说明工作空间创建、功能包编译及环境配置全部正确。

常见问题

  • colcon命令找不到:安装python3-colcon-common-extensions后重新打开终端。
  • 编译报找不到rclcpp头文件:确认已source ROS2环境(source /opt/ros/humble/setup.bash)。
  • 运行时报找不到功能包:检查是否已source当前工作空间的install/setup.bash,且当前终端处于dev_ws目录或任意位置均可(只要source路径正确)。