ROS2中的文件结构

文件结构介绍

ROS2中同样将其最小构建单元称为功能包package,与ROS1不同的是,ROS2使用colcon作为package的编译工具,ROS2工作空间(本文中为ros2_ws/目录)的文件结构由四个目录组成,分别是build/、install/、src/、log/。

  1. src/:代码目录,未来编写的代码、脚本,都需要人为的放置到这里;
  2. build/:编译目录,保存编译过程中产生的中间文件;
  3. install/:安装目录,放置编译得到的可执行文件、库文件和脚本;
  4. log/:日志目录,编译和运行过程中,保存各种警告、错误、信息等日志。

功能包package

任何ROS2的代码无论是C++还是Python都要放到package中,这样才能正常的编译和运行。一个package可以编译出来多个目标文件(可执行程序、动态静态库、头文件等等)。

创建一个package需要在ros2_ws/src下,用到ros2 pkg命令,用法是:

ros2 pkg create <package-name> --build-type {cmake,ament_cmake,ament_python} --dependencies <dependencies -name>

其中<package-name>是包名,

--build-type 用来指定该包的编译类型,一共有三个可选项ament_python、ament_cmake、cmake,

--dependencies 指的是这个功能包的依赖,可以依赖多个软件包。

  • 创建ROS2的的C++包:
ros2 pkg create --build-type ament_cmake <package_name>
  • 创建ROS2的的python包:
ros2 pkg create --build-type ament_python <package_name>
  • 例如,新建一个package叫做test_pkg,依赖rclccpp(常用依赖):
ros2 pkg create example_cpp --build-type ament_cmake --dependencies rclcpp

这样就会在当前路径下新建test_pkg软件包,如下图,ros2 pkg完成了软件包的初始化,填充好了CMakeLists.txt和package.xml模板,并且将依赖项填进了这两个文件中。

CMakeLists.txt

CMakeLists.txt的基本语法都还是按照CMake,而colcon在其中加入了少量的宏,总体的结构如下:

cmake_minimum_required() #CMake的版本号 
project()                 #项目名称 
find_package()           #找到编译需要的其他CMake/Catkin package
add_message_files()      #新加宏,添加自定义Message/Service/Action文件
add_service_files()
add_action_files()
generate_message()       #新加宏,生成不同语言版本的msg/srv/action接口
add_library()            #生成库
add_executable()         #生成可执行二进制文件
add_dependencies()       #定义目标文件依赖于其他目标文件,确保其他目标已被构建
ament_target_dependencies()  #新加宏,它将使依赖项的库、头文件和自身的依赖项被正常找到
target_link_libraries()  #链接
install()                 #指定安装规则
ament_package()           #新加宏,安装项目,在CMakeLists.txt文件中的最后一个调用。

colcon提供的ament_package()函数在安装项目时会用到前面编译出来的结果,因此ament_package()语句应放在CMakeLists.txt的最后,安装项目时会在“ROS2工作空间/install/”中新建{PROJECT_NAME}目录,根据install()函数指定的安装规则安装到“ROS2工作空间/install/{PROJECT_NAME}”目录,需要注意的是,ros2 run命令识别可执行程序的目录是“ROS2工作空间/install/{PROJECT_NAME}/lib/{PROJECT_NAME}”目录,因此需要使用ros2 run运行的可执行文件应使用install()函数安装到“lib/{PROJECT_NAME}”目录。

项目安装的结构示例如下图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值