最近因为看svo的代码,里面用到catkin决定要好好看ros,年前学会基本操作。
基本概念笔记:
1、节点管理器:roscore
2、节点
启动节点 rosrun package-name executable-name
查看节点 rosnode list
注:rosout 节点是一个特殊的节点,通过 roscore 自动启动
查看特定节点的信息 rosnode info node-name
终止节点 rosnode kill node-name
注:终止和重启节点通常不会对其他节点有较大影响;即使节点间正在相互交换消息( message),这些连接也会在节点终止时断开,在节点重启时重新连接。
也可以用ctrl-c终止节点,但是终止的节点仍在rosnode列表中。可以用rosnode cleanup删除列表中无效的节点。
3、软件包
软件包列表rospack list
每个程序包由一个清单文件( 文件名为 package.xml)定义该文件定义关于包的一些细节,包括其名称、 版本、 维护者和依赖关系。
定位软件包
要找到一个软件包的目录,使用 rospack find 命令
rospack find package-name
访问某软件包目录
roscd package-name
查看软件包目录下的文件:
rosls package-name
注:不用说明软件包的位置,直接由包名,ros系统能直接检索到包名所在位置。前提是必须将该路径加到环境设置中去 source /包的目录/devel/setup.bash
4、话题和消息
ros节点之间的通信最重要的是利用消息传递。消息有组织的放在话题里。当一个节点想要分享信息时,它就会发布(publish)消息到对应的一个或者多个话题;当一个节点想要接收信息时,它就会订阅(subscribe)它所需要的一个或者多个话题。
ROS节点管理器负责确保发布节点和订阅节点能找到对方;而且消息是直接地从发布节点传递到订阅节点,中间并不经过节点管理器转交。
查看节点之间的发布-订阅关系 rqt_graph
获取当前活跃的话题 rostopic list
打印消息内容 rostopic echo topic-name
测量发布频率 rostopic hz topic-name
rostopic bw topic-name
查看话题rostopic info topic-name
输出的是消息类型:数据类型理解消息的类型很重要,因为它决定了消息的内容。
查看消息类型rosmsg show message-type-name
常用的两种消息类型
geometry_msgs/Twist
turtlesim/Color
消息类型同样可以包含固定或可变长度的数组(用中括号[]表示)和常量(一般用来解析其他非常量的域)。
用命令行发布消息
rostopic pub –r rate-in-hz topic-name message-type message-content
注意:
和
这两个的区别是,上面的_ _name的意思是覆盖节点名称turtlesim_node,因为不允许节点重名。
多个发表者和多个订阅者可以共享一个话题。
5、问题检查 roswtf
主要参考资料:
http://wiki.ros.org/ROS/Tutorials
机器人操作系统(ROS)浅析