一、服务
服务(services)是节点之间通讯的另一种方式。服务允许节点发送请求(request) 并获得一个响应(response)
(1)rosservice可以很轻松的使用 ROS 客户端/服务器框架提供的服务,提供了很多可以在topic上使用的命令
rosservice list 输出可用服务的信息
rosservice call 调用带参数的服务 rosservice call [service] [args]
例如:rosservice call spawn 2 2 0.2 "小乌龟名字" -- spawn 再生服务,可以再生一个小乌龟
rosservice type 输出服务类型 rosservice type [service]
rosservice find 依据类型寻找服务find services by service type
rosservice uri 输出服务的ROSRPC uri
(2)rosparam 存储并操作ROS 参数服务器上的数据,参数服务器能够存储整型、浮点、布尔、字符串、字典和列表等数据类型
rosparam set 设置参数
rosparam set [param_name] 修改了参数的值,调用清除服务使得修改后的参数生效 rosservice call clear
rosparam get 获取参数 rosparam get [param_name]
rosparam load 从文件读取参数 rosparam load [file_name] [namespace]
rosparam dump 向文件中写入参数 rosparam dump [file_name] --rosparam dump params.yaml
rosparam delete 删除参数
rosparam list 列出参数名
二、rqt_console 和 roslaunch
(1) rqt_console属于ROS日志框架(logging framework)的一部分,用来显示节点的输出信息
rosrun rqt_console rqt_console
rqt_logger_level允许我们修改节点运行时输出信息的日志等级(logger levels)(包括 DEBUG、WARN、INFO和ERROR)rosrun rqt_logger_level rqt_logger_level
日志等级按以下优先顺序排列:Fatal Error Warn Info Debug
(2) roslaunch用来启动定义在launch文件中的多个节点
roslaunch [package] [filename.launch]
<group ns="turtlesim1">
<node pkg="turtlesim" name="sim" type="turtlesim_node"/>
</group>
<group ns="turtlesim2">
<node pkg="turtlesim" name="sim" type="turtlesim_node"/>
</group>
创建两个节点分组并以'命名空间(namespace)'标签来区分,其中一个名为turtulesim1,另一个名为turtlesim2,两个组里面都使用相同的turtlesim节点并命名为'sim'。这样可以同时启动两个turtlesim模拟器而不会产生命名冲突
<node pkg="turtlesim" name="mimic" type="mimic">
<remap from="input" to="turtlesim1/turtle1"/>
<remap from="output" to="turtlesim2/turtle1"/>
</node>
在这里启动模仿节点,并将所有话题的输入和输出分别重命名为turtlesim1和turtlesim2,这样就会使turtlesim2模仿turtlesim1