ROS 2 Python 核心 API 终极速查表

ROS 2 Python 核心 API 终极速查表

① rclpy 顶层函数(系统级:负责启动、关闭、运行)

|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| rclpy.init(args=args) # 【初始化】初始化 ROS 2 通信基础设施和上下文环境 rclpy.create_node('node_name') # 【创建节点】快速创建一个基础的 ROS 2 节点对象 rclpy.spin(node) # 【主循环】让节点持续运行,阻塞并处理各类回调事件 rclpy.spin_once(node) # 【单次轮询】只执行一次回调或等待超时,不无限阻塞 rclpy.spin_until_future_complete() # 【异步等待】执行回调直到指定的 Future 任务完成 rclpy.ok() # 【状态检查】判断 ROS 2 通信环境是否处于正常运行状态 rclpy.shutdown() # 【关闭清理】关闭 ROS 2 通信环境,释放底层资源 |

② Node 内置方法(节点级:节点自身功能,self.xxx() 调用)

|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| # --- 生命周期与基础属性 --- super().init('node_name') # 【父类构造】调用父类 Node 的构造方法,完成节点底层注册 self.get_logger() # 【日志打印】获取日志记录器(支持 info, warn, error 等) self.get_name() # 【获取名称】获取当前节点在 ROS 网络中的名称 self.get_namespace() # 【获取命名空间】获取当前节点的命名空间前缀 self.get_clock() # 【获取时钟】获取节点绑定的时钟对象(支持获取当前时间) self.destroy_node() # 【销毁节点】清理节点占用的底层资源(通常在 finally 块中调用) # --- 定时器 (Timer) --- self.create_timer(period, cb) # 【定时循环】按指定周期(秒)不断触发回调函数 # --- 话题通信 (Topic) --- self.create_publisher() # 【话题发布】创建话题发布者,用于向外发送消息流 self.create_subscription() # 【话题订阅】创建话题订阅者,接收消息并触发回调 # --- 服务通信 (Service) --- self.create_service() # 【服务服务端】创建服务端,接收请求并返回响应 self.create_client() # 【服务客户端】创建客户端,用于发送请求并等待响应 # --- 参数管理 (Parameters) --- self.declare_parameter() # 【声明参数】注册参数并设置默认值(支持命令行覆盖) self.has_parameter() # 【参数检查】判断某个参数是否已经被声明 self.get_parameter() # 【获取参数】获取已声明的参数对象 self.get_parameter_value() # 【获取值对象】从参数对象中提取出 ParameterValue 对象 .integer_value / .string_value #【提取具体值】从ParameterValue对象里取出int / string等具体类型 self.set_parameters() # 【修改参数】在代码内部主动设置/修改参数值 self.add_on_set_parameters_callback() # 【参数回调】设置参数修改前的拦截/验证回调函数 |

消息接口(.msg:用于话题 Topic 传输的数据格式)

|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| std_msgs.msg.String # 【字符串】用于传输简单的文本数据 std_msgs.msg.Int32 # 【整型】用于传输 32 位整数数据 std_msgs.msg.Float64 # 【浮点型】用于传输 64 位浮点数数据 sensor_msgs.msg.Image # 【图像】用于传输相机拍摄的图像数据 sensor_msgs.msg.LaserScan # 【激光雷达】用于传输 360° 激光扫描距离数据 geometry_msgs.msg.Twist # 【速度指令】用于传输线速度和角速度控制指令 |

服务接口(.srv:用于服务 Service 的请求+响应格式)

|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| std_srvs.srv.Trigger # 【通用触发】无参数请求,仅返回成功状态和消息 std_srvs.srv.SetBool # 【设置布尔值】请求设置一个 bool 状态,返回结果 turtlesim.srv.Spawn # 【生成实体】请求在指定坐标生成一只小乌龟 turtlesim.srv.Kill # 【删除实体】请求通过名称删除一只小乌龟 |


核心记忆口诀:

  1. rclpy.xxx():管舞台(系统环境的启动与关闭)
  2. super().init():管出生(节点的底层初始化)
  3. self.xxx():管动作(节点自身的业务与通信)
  4. xxx.msg:管单向广播的"信件"
  5. xxx.srv:管一问一答的"合同"