Halo,这里是Ppeua。平时主要更新C语言,C++,数据结构算法…感兴趣就关注我吧!你定不会失望。
相较于之前的通信模型,参数服务器是最为简单的。在之前的模型中,ROSMASTER都是扮演一个帮二者连接在一起的桥梁。
而在参数服务器中:ROSMASTER变为了一个存储消息的容器,供使用者自行完成增删查改的操作.
其设计仅为存储非二进制的简单数据,若需要高性能操作,建议采用其他通信方式.
容器中可存储的参数类型:
set_param有点类似hash:若参数服务器中无这个值,则增加,若有则修改为最新的值
import rospy
rospy.init_node("param")
#设置整形
rospy.set_param("p_int",10)
#设置浮点型
rospy.set_param("p_double",3.14)
#设置bool值
rospy.set_param("p_bool",True)
#设置string
rospy.set_param("p_string","hello python")
#设置List
rospy.set_param("p_list",["hello","haha","xixi"])
#设置字典
rospy.set_param("p_dict",{"name":"hulu","age":8})
常用的有以下几个函数:
radius2=rospy.get_param_cached("radius_p",0.5)
radius=rospy.get_param("radius_p",0.5)
names=rospy.get_param_names()
for name in names:
print(name)
flag1=rospy.has_param("radius_p")
if flag1:
print("存在")
else :
print("不存在")
key=rospy.search_param("radius_p")
print(key)
较为简单就不演示用法了,之后会有一个实战项目涉及
会使用到之前配置使用的话题通信与服务通信.
使用这些命令可以在机器人运行时动态的查看各节点之间的关系及消息载体:
我们先启动下之前配置好的自定义msg的sub与pub节点,具体配置可以查看这篇文章话题通信案例
rosrun lesson2 demo02_pub.py
rosrun lesson2 demo02_sub.py
rosnode ping 测试到节点的连接状态
rosnode ping /person_pub
rosnode list 列出活动节点
rosnode list
rosnode info 打印节点信息
ronode info /person_pub
ronode info /person_sub
这里打印出了发送与接受节点的信息,包含了以下内容:
合理的使用可以更方便理清节点间的关系
rosnode kill /sub_person
kill了订阅节点先启动上方使用的两个节点
直接在终端中输入rostopic可以查看所有可以使用的指令
rostopic list 显示当前在使用的所有话题
rostopic list
例如这里使用的话题是/che
rostopic echo扮演接收方的工作,可以在屏幕上打印出话题信息
rostopic echo topic
例如这里可以验证发布方的信息是否正确
rostopic info/type两个用处相同,显示话题通信的消息类型,其中info包含了type类型
rostopic info topic
例如这里使用的是Person msg消息类型
rostopic find 寻找使用某消息类型的话题
rostopic find lesson2/Person
例如这里寻找使用lesson2/Person消息类型的话题是什么
rostopic pub 向某一话题发布消息
rostopic pub topic
例如这里向订阅节点发布信息
rosmsg是用于显示有关 ROS消息类型的 信息的命令行工具
也与上方相同,可以直接输入rosmsg就会显示出可用指令
rosmsg show / info列出当前消息类型中包含的具体类型
rosmsg show msg
rosmsg package列出某个包下的所有消息
rosmsg package pack
列出来turtlesim里的所有消息类型
rosmsg packages列出包含某消息的功能包
rosmsg package pack
用来查询相关服务信息
我们先启动下之前配置好的自定义srv的server与client节点,具体配置可以查看这篇文章
rosrun lesson3_srv demo01_client.py
rosrun lesson3_srv demo01_server.py
rosservice call调用服务
这里调用/sum2 tab补齐 传入两个参数
rosservice call /sum2
rosservice args查看srv消息具体参数
rosservice args /sum2
其余使用方法和上面相同
rosrun turtlesim turtlesim_node
rosparam set设置具体参数数值
rosparam set 参数类型
rosparam get获得具体参数数值
rosparam delete删除参数
rosparam load将参数加载到磁盘中
rosparam dump从磁盘中加载参数