启动roscare
$ roscore
获得节点信息:
获得参数跟详细解释:
$ rosnode <param> -h
获取正在运行的节点的相关信息:
$ rosnode list
启动新节点:
$ rosrun turtlesim turtlesim_node
查看节点信息,可以获得很多用于程序调试的信息:
$ rosnode info /turtlesim
输出
--------------------------------------------------------------------------------
Node [/turtlesim]
Publications:
* /rosout [rosgraph_msgs/Log]
* /turtle1/color_sensor [turtlesim/Color]
* /turtle1/pose [turtlesim/Pose]
Subscriptions:
* /turtle1/cmd_vel [unknown type]
Services:
* /clear
* /kill
* /reset
* /spawn
* /turtle1/set_pen
* /turtle1/teleport_absolute
* /turtle1/teleport_relative
* /turtlesim/get_loggers
* /turtlesim/set_logger_level
contacting node http://ubuntu:33525/ ...
Pid: 3209
Connections:
* topic: /rosout
* to: /rosout
* direction: outbound
* transport: TCPROS
使用箭头控制海龟移动指令:
$ rosrun turtlesim turtle_teleop_key
查看节点teleop_turtle信息
ubuntu@ubuntu:~$ rosnode info /teleop_turtle
--------------------------------------------------------------------------------
Node [/teleop_turtle]
Publications:
* /rosout [rosgraph_msgs/Log]
* /turtle1/cmd_vel [geometry_msgs/Twist]
Subscriptions: None
Services:
* /teleop_turtle/get_loggers
* /teleop_turtle/set_logger_level
contacting node http://ubuntu:42629/ ...
Pid: 3349
Connections:
* topic: /rosout
* to: /rosout
* direction: outbound
* transport: TCPROS
* topic: /turtle1/cmd_vel
* to: /turtlesim
* direction: outbound
* transport: TCPROS
使用命令查看主清单:
运行一下命令行使用箭头键查看消息产生时发送的数据:
$ rostopic echo /turtle1/cmd_vel
查看主题发送的消息类型:
$ rostopic type /turtle1/cmd_vel
显示
geometry_msgs/Twist
查看消息字段:
$ rosmsg show geometry_msgs/Twist
已知上述信息,可通过rostopic pub [topic] [msg type] [args]命令直接发布主题:
rostopic pub -r 1 /turtle1/cmd_vel geometry_msgs/Twist '{linear: {x: 2.0, y: 0.0, z: 0.0},angular:{x: 0.0, y: 0.0,z: 2.0}}'
登录谷歌搜索rostopic可以查看详细信息
服务
使用rosservice工具与服务交互
rosservice args/service 输出服务参数
rosservice call/service 根据命令行参数调用服务
rosservice find msg-type 根据服务类型查询服务
rosservice info /service 输出服务信息
rosservice list 列出服务清单
rosservice type/service 输出服务类型
rosservice uri/service 输出ROSRPC URI服务
ubuntu@ubuntu:~$ rosservice list
输出:
/clear
/kill
/reset
/rosout/get_loggers
/rosout/set_logger_level
/rostopic_4742_1536450656570/get_loggers
/rostopic_4742_1536450656570/set_logger_level
/rostopic_4766_1536450738742/get_loggers
/rostopic_4766_1536450738742/set_logger_level
/rostopic_4786_1536450768102/get_loggers
/rostopic_4786_1536450768102/set_logger_level
/rostopic_4803_1536450811800/get_loggers
/rostopic_4803_1536450811800/set_logger_level
/rostopic_4818_1536450851920/get_loggers
/rostopic_4818_1536450851920/set_logger_level
/spawn
/teleop_turtle/get_loggers
/teleop_turtle/set_logger_level
/turtle1/set_pen
/turtle1/teleport_absolute
/turtle1/teleport_relative
/turtlesim/get_loggers
/turtlesim/set_logger_level
查看某个服务类型,例
$ rosservice type /clear
输出
std_srvs/Empty
调用服务,rosservice call [service] [args]命令:
$ rosservice call /clear
执行上边命令之后,turtlesim 窗口中,小海龟移动产生的线条消失
ubuntu@ubuntu:~$ rosservice type /spawn | rossrv show
float32 x
float32 y
float32 theta
string name
---
string name
ubuntu@ubuntu:~$ rosservice type /spawn
turtlesim/Spawn
输入下边命令
ubuntu@ubuntu:~$ rossrv show turtlesim/Spawn
float32 x
float32 y
float32 theta
string name
---
string name
通过这些字段,可以知道如何调用服务.
ubuntu@ubuntu:~$ rosservice call /spawn 3 3 0.2 "new_turtle"
name: "new_turtle"
结果图:
参数服务器使用:
参数服务器存储所有节点均可访问的共享数据,ROS中用来管理参数服务器的工具称为rosparam
rosparam set parameter value 设置参数值
rosparam get parameter 获取参数值
rosparam load file 从文件加载参数
rosparam dump file 将参数保存到一个文件
rosparam delete parameter 删除参数
rosparam list 列出了所有参数名
例如:
ubuntu@ubuntu:~$ rosparam list
输出:
/background_b
/background_g
/background_r
/rosdistro
/roslaunch/uris/host_ubuntu__40827
/rosversion
/run_id
上边的背景(backgrund)是turtlesim节点参数,这些参数可以改变窗口的颜色
读取某个,可使用get参数,
$ rosparam get /background_b
为了设定一个新值可以使用set参数:
ubuntu@ubuntu:~$ rosparam set /background_b 1000
使用rosparam dump [file_name]来保持参数服务器:
$ rosparam dump save.yaml
使用rosparm load [file_name] [namespace]向参数服务器加载新的数据文件:
$ rosparam load load.yaml namespace