ROS2创建 base 包用于其他模块的参数配置和头文件依赖

Demo 背景

  • ROS2项目开发中存在以下需求:有多个包需要读取一些共同的配置项(以txt或者yaml形式存在),且依赖于一些公用的utils工具代码(C++)。
  • Solution: 创建一个 base_config 包来"存放" 配置文件和公用的头文件。
  • gitee address: Gitee/CDale/ShareConfig

项目文件结构介绍以及配置方法

1. 项目所有文件

  • base_config 中存有配置文件和公用的头文件(示例为config1.txt和base_utils.hpp)
  • top 中使用 base_config 中的配置文件和头文件
  • 使用git clone https://gitee.com/CDale/share-config.git

2. base_config配置

  1. CMakeLists
cmake 复制代码
install(DIRECTORY ConfigFiles DESTINATION share/${PROJECT_NAME})  

# 头文件的install 方式和 ConfigFiles 以及launch 不同
# 并不安装到 share下, 而是安装到base_config的根目录下
# 这样才可以通过 find_package 和 include_directories 找到
install(DIRECTORY include DESTINATION )
# 这个也是
ament_export_include_directories(include)

3.top 使用方法

  1. CMakeLists
cmake 复制代码
# 获取 base_config 包的安装路径
find_package(base_config REQUIRED)
include_directories(${base_config_INCLUDE_DIRS})
message("Include dirs: ${base_config_INCLUDE_DIRS}")
  1. pack.xml 添加 base_config 依赖
  2. launch 文件
python 复制代码
# get_package_share_directory 获取 base_config 在 install 文件夹下的路径
# os.path.join 寻找到 config1.txt 的绝对路径,并通过 parameter 传递给 ROS2 node
os.path.join(get_package_share_directory('base_config'),"ConfigFiles","config1.txt")
相关推荐
爱凤的小光25 天前
图漾相机-ROS2-SDK-Ubuntu版本编译(新版本)
ubuntu·ros2
Mr.Winter`1 个月前
轨迹优化 | 基于ESDF的非线性最小二乘法路径平滑(附ROS C++仿真)
人工智能·科技·机器人·自动驾驶·ros·最小二乘法·ros2
bohu831 个月前
亚博microros小车-原生ubuntu支持系列:1 键盘控制
python·ubuntu·ros2·话题通信·microros·亚博
业余敲代码1 个月前
NVIDIA 下 基于Ubuntun20.04下 使用脚本安装 ros2-foxy 和 使用docker安装 ros2-foxy
ubuntu·docker·nvidia·ros2·jstson
bohu831 个月前
ros2笔记-6.5 使用ros2_control驱动机器人
机器人·控制·ros2·gazebo·ros2_control
Mr.Winter`1 个月前
轨迹优化 | 基于贝塞尔曲线的无约束路径平滑与粗轨迹生成(附ROS C++/Python仿真)
人工智能·机器人·自动驾驶·ros·几何学·ros2·轨迹优化
bohu831 个月前
ros2-6.4.4 两轮差速控制机器人(问题解决)
机器人·ros2·gazebo·rviz·二轮差速控制
喵先生!1 个月前
Ubuntu-Install-Ros2
ubuntu·ros2
bohu831 个月前
ros2笔记-6.2 使用urdf创建机器人模型
机器人·建模·ros2·rviz·urdf
bohu831 个月前
ros2笔记-4.3 用C++做一个巡逻海龟
c++·笔记·ros2·服务通信