当前位置: 首页 > web >正文

ROS2学习(4)------ROS2工作空间介绍

  • 操作系统: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
http://www.xdnf.cn/news/6782.html

相关文章:

  • Vue3基础学习(中)
  • 高标准农田灌区信息化赋能粮食产能提升
  • 二维数组以及C99中的变长数组(如何在VS2022中使用苹果的clang编译器)
  • 智慧灌区信息化节水灌溉系统解决方案
  • 基于 nvitop+Prometheus+Grafana 的物理资源与 VLLM 引擎服务监控方案
  • 【Python】EAFP?请求原谅比请求允许容易?
  • 小白学编程之——深入理解Java线程的完整生命周期
  • 研华服务器ASMB-825主板无法识别PCIE-USB卡(笔记本)
  • 5.10品牌日|电商院徐一帆解读:中国企业如何迈向全球品牌
  • 根据用户ID获取所有子节点数据或是上级直属节点数据
  • DiT中的 Adaptive Layer Normalization (adaLN) 讲解
  • 代码随想录算法训练营 Day48 单调栈Ⅱ 接雨水Like
  • 第三十三节:特征检测与描述-Shi-Tomasi 角点检测
  • 【记录】Windows|竖屏怎么调整分辨率使横竖双屏互动鼠标丝滑
  • 基于matlab的D2D 功率控制仿真
  • 【Boost搜索引擎】构建Boost站内搜索引擎实践
  • Tor推出Oniux新工具:为Linux应用提供网络流量匿名化
  • 将 Element UI 表格元素导出为 Excel 文件(处理了多级表头和固定列导出的问题)
  • DAY 28 类的定义
  • 安全生产调度管理系统的核心功能模块
  • 数学复习笔记 15
  • Ubuntu安装Nginx详细示例
  • mobile预览
  • 初识仓颉编程语言:高效、简洁与创新的编程选择
  • Unity3D 游戏编程内存优化技巧
  • 在MYSQL中导入cookbook.sql文件
  • Java线程池(Thread Pool)性能优化解析
  • 基于摩尔信使MThings的Modbus协议转换效率优化实践
  • 原生小程序+springboot+vue+协同过滤算法的音乐推荐系统(源码+论文+讲解+安装+部署+调试)
  • 报表控件stimulsoft教程:如何在报表和仪表板中创建热图