注:以下内容为鱼香肉丝ROS2课程的内容整理,详细内容可查看其的课程内容。
什么是节点
节点的主要作用是订阅和发布话题、使用服务、配置参数和执行动作等。
其中的话题(topic)、服务(service)、参数(parameter)和动作(action)是ROS2的四大核心通信机制。
怎么用Python编写节点
直接编写步骤
① 新建文件ros2_python_node.py,并编写如下内容
python
import rclpy
from rclpy.node import Node
def main():
rclpy.init()
node = Node("python_node")
node.get_logger().info('hello')
rclpy.spin(node)
rclpy.shutdown()
if __name__=="__main__":
main()
上述代码中:
**rclpy:**ROS2提供的Python版本客户端库
Node:rclpy库的node模块中的类
rclpy.init():为通信分配资源
**node = Node("python_node"):**实例化Node类
**node.get_logger().info('hello'):**通过node实例调用get_logger()获取日志记录器,并使用日志记录器的info方法输出"hello"
**rclpy.spin(node):**启动节点node,然后不断循环检查node是否接收到了新的话题数据等事件
**rclpy.shutdown():**清理分配的资源,确认节点是否关闭
② 使用Python执行节点
在终端中输入以下指令即可运行。
python
python3 ros2_python_node.py
然后可以使用以下指令查看目前的节点列表,注意需要新开一个终端。
python
ros2 node list
关于ros日志函数的解读:
打印日志的函数:node.get_logger().info('')、node.get_logger().warn('')......
可以有不同的配置
其输出是

第一列:表示不同的配置,info、warn之类的
第二列:表示时间戳,表示的是从1970年到现在的时间
第三列:表示节点的名字
第四列:表示打印的内容
日志的格式可以通过修改环境变量RCUTILS_CONSOLE_OUTPUT_FORMAT来修改
使用功能包组织Python节点
功能包:ROS2中用于组织和管理节点的工具,可以直接使用ROS2提供的构建指令对节点进行编译和安装。具体步骤为:
① 在终端中创建功能包
python
ros2 pkg create demo_python_pkg --build-type ament-python --license Apache-2.0
ros2 pkg create:ROS2命令行工具pkg模块下用于创建功能包的命令
demo_python_pkg:功能包的名字
--build-type ament_python:表示指定功能包的构建类型为ament_python
--license Apache-2.0:用于声明功能包的开源协议
② 在功能包中编写代码文件
编写位置:在demo_python_pkg/demo_python_pkg下新建一个python文件python_node.py
在文件中输入以下内容:
python
import rclpy
from rclpy.node import Node
def main():
rclpy.init()
node = Node("python_node")
node.get_logger().info('hello')
rclpy.spin(node)
rclpy.shutdown()
注意上述代码中去除了调用主函数的代码
功能包中调用主函数的方式是:告诉功能包main函数的位置,也就是接下来这步
③ 注册python节点
注册位置:demo_python_pkg/setup.py
此处的setup.py是python中常用的构建配置文件
注册内容:

注意注册时最后的逗号!
④ 添加依赖声明
由于代码中使用了rclpy库,所以需要在ROS2功能包的清单文件"package.xml"下添加依赖信息
添加位置:demo_python_pkg/package.xml
添加内容:<depend>rclpy</depend>

此处的package.xml为**元数据清单文件,**该文件对软件包的属性、状态及外部依赖关系进行了形式化定义。
⑤ 构建功能包
构建位置:该文件目录下的终端
输入命令:colcon build
Colcon:会在当前目录下扫描功能包,并创建与功能包同级的三个子目录
此时文件夹中会多出三个文件夹:
**Build:**构建过程中的中间文件
**Install:**构建结构的文件夹,该文件可以直接复制给别人使用,colcon build命令会在该文件夹中复制一个功能包demo_python_pkg,其中有python_node等可执行文件
**Log:**日志文件
⑥ 设置环境变量
位置:该文件目录下的终端
输入命令:source install/setup.bash
用来自动修改需要修改的环境变量,此环境变量只对当前终端有效,如果切换终端需要重新设置
⑦ 运行节点
位置:该文件目录下的终端
输入命令:ros2 run demo_python_pkg python_node
注意,此处运行的文件是install目录下的文件