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配置
- CMakeLists
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 使用方法
- CMakeLists
# 获取 base_config 包的安装路径
find_package(base_config REQUIRED)
include_directories(${base_config_INCLUDE_DIRS})
message("Include dirs: ${base_config_INCLUDE_DIRS}")
- pack.xml 添加 base_config 依赖
- launch 文件
os.path.join(get_package_share_directory('base_config'),"ConfigFiles","config1.txt")