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。
验证方法
按以下步骤验证工作空间与功能包是否创建成功:
- source工作空间:
source ~/dev_ws/install/setup.bash(每次新终端需执行) - 运行节点:
ros2 run hello_pkg hello_node - 观察输出:终端应打印
Hello ROS2 from dev_ws!日志信息 - 确认功能包可见:另开终端执行
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路径正确)。