matlab中ros工具箱,第1章 初识MATLAB-ROS工具箱——1.8 访问ROS参数服务器

1.8 访问ROS参数服务器

1.8.1 引言

本例程将探索如何在ROS参数服务器上增加和恢复参数,参数服务器和ROS管理节点运行在相同的设备上。参数通常在ROS网络中全局都是可用的,并且可以存储静态数据例如配置参数。支持的数据类型包括字符串、整型数、双精度、逻辑和单元阵列。预备知识:1.2开始使用ROS和1.3连接到ROS网络。

1.8.2 创建参数树

在MATLAB中启动ROS管理节点和参数服务器。

rosinit

Initializing ROS master on http://bat5136glnxa64.mathworks.com:11311/.

Initializing global node /matlab_global_node_8332 with NodeURI http://bat5136glnxa64:60770/

创建参数树对象与参数服务器进行交互,参数树可让用户与参数服务器进行交互,并提供函数,例如“set”,“get”,“del”,“has”和“search”。由于我们在本例中启动一个新的参数服务器,因此目前没有存储任何参数。

ptree = rosparam

ptree =

ParameterTree with properties:

AvailableParameters: {}

1.8.3 增加新参数

使用参数名“ROBOT_IP”设定机器人的IP地址参数值。使用“has”函数,检查是否存在相同名称的参数。

has(ptree,'ROBOT_IP')

ans =

0

“has”返回0(false)作为输出,这说明当前在参数服务器中没有名称为“ROBOT_IP”的参数。使用“set”函数,增加指定机器人IP地址的参数到参数服务器。

set(ptree,'ROBOT_IP','192.168.1.1');

set(ptree, '/myrobot/ROBOT_IP','192.168.1.100');

现在,所有连接到当前ROS管理节点的节点,都能够使用“ROBOT_IP”参数,用户还可以为参数指定命名空间,例如此处的“/myrobot/ROBOT_IP”参数的命名空间是“/myrobot”。设定参数的不同数据类型:

set(ptree,'MAX_SPEED',1.5);

在“set”函数中使用单元阵列,为机器人设定全局坐标参数{x,y,z}:

set(ptree, '/myrobot/ROBOT_NAME','TURTLE');

set(ptree, '/myrobot/MAX_SPEED',1.5);

set(ptree, '/newrobot/ROBOT_NAME','NEW_TURTLE');

1.8.4 获得参数值

当用户想用连接到机器人时,可以从“ROBUT_IP”参数获得机器人的IP地址,用于连接到该机器人。总共有两个名称为“ROBOT_IP”的参数,用户仅需要“myrobot”下的地址。用户可用“get”函数,获得该参数值:

robotIP = get(ptree, '/myrobot/ROBOT_IP')

robotIP =

192.168.1.100

1.8.5 获得所有参数列表

检查“AvailableParameters”的属性,可以获得存储在参数服务器上的所有参数列表,该列表包含了用户在上述章节增加的参数:

plist = ptree.AvailableParameters

plist =

'/MAX_SPEED'

'/ROBOT_IP'

'/goal'

'/myrobot/MAX_SPEED'

'/myrobot/ROBOT_IP'

'/myrobot/ROBOT_NAME'

'/newrobot/ROBOT_NAME'

1.8.6 修改已有参数

用户还可用“set“函数修改参数值。注意,参数的修改是不可逆的,因为参数服务器会用新的值覆盖参数。用户可以使用“has”函数验证参数是否已经存在。修改“MAX_SPEED”参数:

set(ptree, 'MAX_SPEED', 1.0);

对参数进行修改的数值可以与之前分配的数据类型不同,例如,“MAX_SPEED”的数据类型是双精度,现在可以设置“MAX_SPEED”参数为字符串。

set(ptree, 'MAX_SPEED', 'none');

1.8.7 删除参数

用户可以使用“del”函数从参数服务器中删除参数。删除“goal”参数:

del(ptree, 'goal');

使用“has”函数检查“goal”参数是否已经成功删除:

has(ptree, 'goal')

ans =

0

返回0(false),意味着“goal”参数已经从参数服务器中删除。

1.8.8 搜索参数

使用“search”指令所有包含“myrobot”的参数:

results = search(ptree, 'myrobot')

results =

'/myrobot/MAX_SPEED'    '/myrobot/ROBOT_IP'    '/myrobot/ROBOT_NAME'

1.8.9 关闭ROS网络

关闭ROS网络并删除全局节点。

rosshutdown

Shutting down global node /matlab_global_node_8332 with NodeURI http://bat5136glnxa64:60770/

Shutting down ROS master on http://bat5136glnxa64.mathworks.com:11311/.

1.8.10 下一步

1.9 rosbag Logfiles的使用。(下回分解)

将来,有关应用例程,参阅开始使用Gazebo和仿真的TurtleBot或开始使用实际的TurtleBot示例。(持续发布)

转自公众号:

Robot404

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值