ROS2- 参数通信的实现+节点生命周期-17
1 ROS2的参数Param
本质用服务实现的
ros2 service list
启动乌龟模拟器
ros2 run turtlesim turtlesim_node
用于操作节点参数的servive
/turtlesim/describe_parameters
/turtlesim/get_parameter_types
/turtlesim/get_parameters
/turtlesim/list_parameters
/turtlesim/set_parameters
/turtlesim/set_parameters_atomically
服务调用
ros2 service call /turtlesim/list_parameters rcl_interfaces/srv/ListParameters "{prefixes: [],depth: 0}"
names=['background_b', 'background_g', 'background_r','use_sim_time']
ros2 param list可以对比
ROS2的参数操作其实就是通过服务通信方式实现的,
获取参数列表,set和get操作就是调用服务的接口实现的
2 生命周期节点
ROS1中,节点的启动顺序无法被控制,这对整个机器人系统来说是非常危险和不可控的事,
比如说机器人传感器还未启动就开始进行数据的读取
ROS2中提出了生命周期节点的概念,通过生命周期来控制和检测节点状态。
ROS2生命周期节点
利用状态机构成的,状态直接的转换依靠ROS2的通信机制完成
生命周期节点的状态
未配置状态(Unconfigured)
节点开始时的第一个状态,并在出现错误后结束。没有执行,其主要目的是错误恢复。
非活跃状态(Inactivate)
节点持有资源(发布者、监听者等)和配置(参数、内部变量),但什么也不做。 没有执行,没有传输,传入的数据可以保存在缓冲区中,但不能读取, 主要目的是允许重新配置。
活跃状态(Activate)
正常执行。
已完成状态(Finalized)
节点已被销毁。