ROS2- 开环与闭环-参数的操作命令-13

开环与闭环

开环控制
机器人按照预先设定的命令执行任务,但并不会对执行过程中的状态进行反馈和调整,
也就是机器人盲目地按照指令执行任务,不考虑实际执行情况是否符合预期。

优点简单易用,适用于一些简单的任务,如基本的运动控制或简单的搬运。
缺点是机器人无法感知执行任务的实际情况,无法自动调整行动,导致执行任务的成功率低,可靠性差。

闭环控制
指机器人通过传感器或其他检测设备获取执行任务过程中的状态信息,
将这些信息反馈给控制系统,从而实现对机器人执行任务过程中的实时控制和调整
闭环控制中,机器人执行任务的过程中会根据反馈信息调整执行动作,确保机器人按照预期的方式完成任务。
能够根据实际情况进行实时调整,提高了机器人执行任务的成功率和可靠性。

闭环控制更加普遍,因为它能够根据反馈信息实时调整机器人的动作,确保机器人按照预期的方式执行任务。
闭环控制还可以帮助机器人适应不同的工作环境,增强机器人的鲁棒性和自适应能力,实现更高效、更精准的控制。
在一些高精度和复杂的应用场景中,闭环控制已经成为机器人控制的标准,比如精密加工、医疗手术、自动驾驶等。

通信方式-Param通信

前面的机器人控制示例中我们,机器人每移动一步休息500ms,
想让机器人休息时间少一些,就需要手动的修改源码减少其值,这非常的不方便。

开发中,会有很多参数和设置后期需要调整的,
如果都放到源码里很难实现动态修改和管理,ROS2为了解决这一问题,提出了参数这一通信机制。

参数通信:
A parameter is a configuration value of a node. You can think of parameters as node settings.

ROS2参数是由键值对组成的
ROS2支持的参数值:
bool 和bool[],布尔类型用来表示开关,比如我们可以控制雷达控制节点,开始扫描和停止扫描。
int64 和int64[],整形表示一个数字,含义可以自己来定义,这里我们可以用来表示李四节点写小说的周期值
float64 和float64[],浮点型,可以表示小数类型的参数值
string 和string[],字符串,可以用来表示雷达控制节点中真实雷达的ip地址
byte[],字节数组,这个可以用来表示图片,点云数据等信息

打开终端
ros2 run turtlesim turtlesim_node

再打开一个终端
ros2 run turtlesim turtle_teleop_key

打开一个终端,运行指令
ros2 param list

详细查看一个参数的信息
ros2 param describe <node_name> <param_name>
ros2 param describe /turtlesim background_b
详细的看到参数的名字,参数的描述,参数的类型,还有对参数的约束,最大值最小值等。

获取参数的值
ros2 param get /turtlesim background_b
运行一下,你会发现结果是255,蓝色进度条打满,再看看r红色和g绿色
ros2 param get /turtlesim background_r
ros2 param get /turtlesim background_g

设置参数
ros2 param set /turtlesim background_r 44
ros2 param set /turtlesim background_g 156
ros2 param set /turtlesim background_b 10

重新启动节点乌龟模拟器依然还是原来的蓝色

参数保存
ros2 param dump <node_name>

ros2 param dump /turtlesim >turtlesim.yaml
cat ./turtlesim.yaml

Ctrl+C关闭乌龟模拟器,然后再重新运行。

ros2 run turtlesim turtlesim_node
模拟器又变成了蓝色了

ros2 param load /turtlesim ./turtlesim.yaml
param的load的方法把参数值恢复

有什么办法一开始就让乌龟模拟器变成绿色?
ros2 run <package_name> <executable_name> --ros-args --params-file <file_name>
ros2 run turtlesim turtlesim_node --ros-args --params-file ./turtlesim.yaml

posted @ 2025-06-10 17:08  jack-chen666  阅读(14)  评论(0)    收藏  举报