一.节点
1.什么是节点
先看一下官方的定义,ROS2中每一个节点也是只负责一个单独的模块化的功能(比如一个节点负责控制车轮转动,一个节点负责从激光雷达获取数据、一个节点负责处理激光雷达的数据、一个节点负责定位等等)
说简单一点就是可以把每个节点看作一个细胞,每个细胞都有不同的功能。
那么不同的节点之间,也就是需要交互的。ROS2其实已经为我们准备好了四种交互的方式:
- 话题-topics
- 服务-services
- 动作-Action
- 参数-parameters
这些后面再详细说。
2.怎么启动一个节点呢?
运行节点(常用):
ros2 run <包名字> <可执行文件名字>
那么还有什么关于节点的命令呢?
查看节点列表(常用):
ros2 node list
查看节点信息(常用):
ros2 node info <节点名>
重映射节点名称:
ros2 run turtlesim turtlesim_node --ros-args --remap __node:=my_turtle
运行节点时设置参数:
ros2 run example_parameters_rclcpp parameters_basic --ros-args -p rcl_log_level:=10
二.功能包与工作空间
一个工作空间下可以有多个功能包,一个功能包可以有多个节点存在。
那么如何来创建一个工作空间和功能包
1、创建工作空间catkin_ws
#创建目录
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
#初始化文件夹
catkin_init_workspace
#src文件中创建了一个 CMakeLists.txt 的文件,目的是告诉系统,这个是ROS的工作空间。
2、编译工作空间
#需要在整个工作目录下编译
#编译完成后,会出现build 和 devel两个文件夹
cd ~/catkin_ws/
catkin_make
#生成install文件夹
catkin_make install
3、设置环境变量
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
#查看当前环境变量
echo $ROS_PACKAGE_PATH
4、创建功能包
#std_msgs:包含常见消息类型,标准消息库
#roscpp:使用C++实现ROS各种功能
#rospy:使用python实现ROS各种功能
#test_pkg就是其中一个功能包,还可以下载其他功能包
cd ~/catkin_ws/src
catkin_create_pkg test_pkg std_msgs roscpp rospy
5.编译功能包
cd ~/catkin_ws
catkin_make
到这里就创建好了一个工作空间和功能包。
下面是一些常用的关于功能包和可执行文件的命令:
列出所有可执行文件:
ros2 pkg executables
列出turtlesim
功能包的所有可执行文件:
ros2 pkg executables turtlesim
列出所有的包:
ros2 pkg list
输出某个包所在路径的前缀:
ros2 pkg prefix <package-name>
列出包的清单描述文件:
每一个功能包都有一个标配的manifest.xml文件,用于记录这个包的名字,构建工具,编译信息,拥有者,干啥用的等信息。
通过这个信息,就可以自动为该功能包安装依赖,构建时确定编译顺序等
如turtlesim的描述
ros2 pkg xml turtlesim