我们跳过ros系统的安装和运行过程,直接进入理论部分。
ros基础概念
ros系统里面的基础框架为:节点、话题、服务和参数
话题和服务是节点之间的两种通讯方式。
话题模型其组成如图所示: 为单向通信
一个节点为发布者(publisher),另一个为订阅者(subscriber)。话题主题为(/example),消息类型为(std_msgs/String)
服务模型如下图所示:为双向通信
一个节点为请求节点(request),另一个为应答节点(response)
节点
一个节点就是ros程序包里面的一个可执行文件。可以通过ros的各种库与其它节点进行通信。节点可以发布/订阅一个话题,也可以提供/使用某种服务
下面介绍几个节点常用命令:
rosnode:显示当前运行的node节点信息
rosnode list:列出活跃的节点
rosnode info + 节点名:返回一个特定节点的信息
rosrun:使用包名直接运行一个包内的节点--- rosrun [package_name] [node_name]
话题
话题就是节点之间的一种通信机制,节点可以发布消息到话题,也可以订阅消息到话题
常用命令:rostopic
rostopic -h:使用帮助选项查看rostopic的子命令
rostopic echo + 话题:可以显示在某个话题上发布的数据
rostopic list:列出所有当前订阅和发布的话题
rostopic type :用来查看所发布话题的消息类型。 使用方式:rostopic type [topic]
rostopic pub:把数据发布到当前某个正在广播的话题上。使用方式:rostopic pub [topic] [msg_type] [args]
rostopic hz:用来查看数据发布的频率。使用方式:rostopic hz [topic]
关于话题之间订阅/发布的消息(msg)也有一些命令用来查看
常用命令:rosmsg
rosmsg:查看消息的详细情况。使用方法:rosmsg show [msg type]. (msg type就是 rostopic type 的结果)
有一些图形工具可以辅助查看:
常用工具 rqt_graph,rqt_plot
rqt_graph:创建一个显示当前系统运行情况的动态图形
rqt_plot:实时显示一个发布到某个话题上的数据变化图形
服务和参数
服务是节点之间的另一种通讯方式。服务允许节点发送一个请求(request)并获得响应(response)
常用命令:rosservice
rosservice list :输出可用服务的信息
rosservice call :调用带参数的服务 。使用方法:rosservice call [service] [args]
rosservice type: 输出服务类型
服务器参数的数据修改常用命令:rosparam
rosparam set:设置参数
rosparam get: 获取参数
rosparam load :从文件读取参数
rosparam dump :向文件中写入参数
rosparam delete :删除参数
rosparam list :列出参数名