ROS2入门(一)——节点、包、编译工作空间
1、节点与功能包
1.1 概念
- 节点是指完成某种模块化功能的可执行程序,例如:负责控制轮子转动的节点,负责从相机获取数据的节点,负责将相机数据进行预处理的节点…
- 节点之间需要进行通信。ROS2提供话题(Topics)、服务(Services、动作(Action)和参数(Parameters)四种通信方式。
- 节点启动命令格式:
ros2 run <package_name> <executable_name>
启动package_name包下的名为executable_name的节点;一个节点必须存在于一个功能包中,但是一个功能包可以有0、1或者许多节点。
1.2 节点相关的CLI(Command Line Interface)
- 启动节点:
ros2 run <package_name> <executable_name>
- 查看节点列表:
ros2 node list
- 查看节点信息:
ros2 node info <node_name>
- 运行时设置节点参数:
ros2 run example_parameters_rclcpp parameters_basic --ros-args -p rcl_log_level:=10
2、工作空间(Workspace)与功能包(Package)
2.1 概念阐述
工作空间可以类比于VS中的SolutionDir,是一个目录,包含build、install、log、src四个子文件夹,src保存源码。
功能包可以理解为存节点的地方,在ROS2中根据编译方式的不同,可以分为:
- ament_python,适用于python程序
- cmake,适用于C++
- ament_cmake,适用于C++程序,是cmake的增强版
2.2 功能包相关的CLI(Command Line Interface)
- 创建名为package_name功能包:
ros2 pkg create <package-name> --build-type {cmake,ament_cmake,ament_python} --dependencies <依赖名字>
- 列出package_name功能包下的可执行文件:
ros2 pkg executables <package_name>
- 列出所有包的名称:
ros2 pkg list
- 输出名为package_name的包所在路径的前缀:
ros2 pkg prefix <package-name>
- 列出名为package_name的包的信息:
ros2 pkg xml package_name
3、构建工具Colcon
- ROS2默认安装没有Colcon工具,输入
sudo apt-get install python3-colcon-common-extensions
安装。 - 编译指定包:
colcon build --packages-select YOUR_PKG_NAME
- 不编译测试单元:
colcon build --packages-select YOUR_PKG_NAME --cmake-args -DBUILD_TESTING=0
- 使用符号链接而不是复制文件,
colcon build --symlink-install
以动态链接库为例,会在install目录中使用符号链接,指向build目录下生成的库文件(如 *.so),从而加快迭代速度。没有该选项,则两个目录都会有该库文件。
4、实操
参见小鱼