- 操作系统:ubuntu22.04
- IDE:Visual Studio Code
- 编程语言:C++11
- ROS版本:2
ROS 2(Robot Operating System 2)工作空间是开发和管理ROS 2软件包的主要方式。它提供了一个结构化的环境,使得开发者可以轻松地创建、修改、编译和运行他们的ROS 2项目。以下是关于ROS 2工作空间的详细介绍:
工作空间结构
一个典型的ROS 2工作空间目录结构如下所示:
ros2_ws/
├── src/ # 源代码目录
│ ├── package1/
│ │ ├── CMakeLists.txt
│ │ ├── package.xml
│ │ └── scripts/ # 或其他子目录存放源文件
│ └── package2/
│ └── ...
├── build/ # 编译生成的中间文件存放目录
├── install/ # 安装后的文件存放目录
└── log/ # 日志文件存放目录
-
src/:这是放置所有你的ROS 2软件包的地方。每个软件包通常包含package.xml(定义包的元信息)、CMakeLists.txt(构建配置文件),以及相关的源代码、资源和脚本。
-
build/:当你使用colcon工具来编译你的工作空间时,生成的中间文件会被放置在这个目录中。这些文件包括编译器输出的目标文件、库文件等。
-
install/:编译完成后,最终的可执行文件、库文件和其他资源将被安装到这个目录下。你可以通过source install/setup.bash(或其他shell对应的脚本)来设置当前shell会话中的环境变量,从而能够找到并运行你编译好的ROS 2节点。
-
log/:某些情况下,如使用ros2 launch命令启动多个节点时,日志信息可能会被保存在这个目录下。
创建一个新的工作空间
要开始一个新的ROS 2项目,你需要首先创建工作空间的根目录,并在其中创建src目录用于存放软件包:
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
然后,你可以根据需要添加自己的ROS 2软件包。例如,使用ros2 pkg create命令创建一个新的ROS 2包:
ros2 pkg create my_package --build-type ament_cmake --dependencies rclcpp std_msgs
这将在src目录下创建一个名为my_package的新包,并自动为你生成基本的CMakeLists.txt和package.xml文件。
编译工作空间
完成软件包的创建或修改后,你需要编译整个工作空间。使用colcon作为构建工具:
cd ~/ros2_ws
colcon build
如果只想编译特定的包,可以使用如下命令:
colcon build --packages-select my_package
设置环境
每次打开新的终端窗口时,都需要重新source你的工作空间的setup脚本,以便更新环境变量,使系统能够识别新安装的软件包。你可以这样做:
source ~/ros2_ws/install/setup.bash
为了简化这一过程,可以在你的.bashrc文件中添加上述命令,这样每次启动新的终端时都会自动执行。
运行节点
一旦完成了工作空间的编译和环境设置,就可以运行你的ROS 2节点了。例如,如果你有一个名为talker的节点,可以通过以下命令运行它:
ros2 run my_package talker