ROS学习笔记(1)-ROS指令
作者:互联网
ROS kinetic安装:安装
ROS四大要素:节点(node),话题(topic),消息(message),服务(service)。
rosmaster就相当于一个大网管,是所有节点的管理器,ros作为一种分布式的软件框架,而你的主机就是管理者
启动rosmaster:(就相当于进入ros了) 退出就是ctrl+c
roscore
启动了rosmaster
有如下信息需要注意:
PARAMETERS
- /rosdistro: kinetic
- /rosversion: 1.12.14
NODES
auto-starting new master
process[master]: started with pid [7432]
ROS_MASTER_URI=http://ubuntu-Lenovo-Y430P:11311/(这是指运行rosmaster的主机地址)
ros作为一种分布式的软件框架,而rosmaster就有可能分布在某一台主机上面,其他节点就需要知道这个master在什么位置,而这个URI就是告知其他主机rosmaster的位置。
ros常用命令:
常用命令后面可以跟什么命令查看就可以用空格+tab键,比如:
rosnode+空格+tab:
比如rosnode list就可以查看当前rosnode运行程序中的所有节点名字,其他功能自行尝试,
也可以rosrun+功能包名字+tab就可以查看功能包中的所有节点。
tab键是一个很强大的键,它会提示下一步的指令可输入什么,还有自动补全节点名字,比如输入ros,然后空格+tab就会出现ros所有的命令,按rosrun+tab,就会出现后面可跟的功能包名字。特别在ros运行节点时候,可以不用自己打全节点名字,可以打完首字母按tab键就会出来节点名字,同样的在输入文件名时,也是可以自动补全的。
注意,启动roscore,只是说,启动了rosmaster,证明这台主机是rosmaster,而不是后面什么rosrun这样的rosrun指令都在那个启动了roscore的窗口继续输指令,不是的!!!是另外开一个窗口去输入指令。
通过小海龟程序来了解ROS
流程如图
关于节点(node)
rosrun的命令结构:
rosrun+节点所在的功能包名字+节点
这三个指令都需要分别在不同的窗口输入(所以运行一个正常程序就需要开相当多窗口,这就相当麻烦,这也就有了roslaunch文件的存在了~)。
输出的小海龟的位置x,y坐标。
键盘控制小海龟。
运行结果:
通过可视化工具qt工具箱查看这个简单的ROS程序的计算图(即节点关系图)
新开一个窗口,可以通过rqt_+tab键查看rqt有啥功能
打开计算图 :
rqt_graph
这就是这个键盘控制小海龟行走程序的计算图,从图中可以很清楚看出各个节点,话题,服务的关系。
turtlesim就是我们运行小海龟界面的节点
teleop_turtle就是我们运行键盘控制的节点
中间所连接的/turtle1/cmd_vel就是teleop节点发布的的话题,里面包含了乌龟行走速度的信息
而那个rosout节点,是一个所有节点日志储存的地方,我们可以看到所有节点都会发布话题到rosout中去,其中的话题消息就是每个节点的日志信息。
而那个rqt_gui_的那个节点就是这个计算图界面。
而后面两个/turtle1/pose 与 /turtle1/color_sensor就是turtlesim发布的话题,顾名思义都知道哇,pose和color就都是用乌龟的颜色和位置哇。
可以点上面的debug按钮,把一些和现在运行程序无关的节点和话题去掉。
这样就更清晰明了,现在只剩下turtlesim(产生小海龟节点),teleop_turtle(键盘控制节点),/turtle1/cmd_vel(速度控制话题),/turtle1/pose(产生的乌龟位置),/turtle1/color_sensor(产生的乌龟颜色)
也可以用rosnode list查看所有节点
输入
rosnode list
如图:
其实这个时候发现,我们当时运行时候的节点名字和这显示出来的名字不一样,比如运行turtlesim_node显示出来是turtlesim,这就是type name和excuteble name ,后面会说到。
也可以用
rosnode info+节点名字查看节点的具体信息
比如:
可以看到turtlesim节点发布(publicate)的话题,订阅(subscript)了什么话题,提供什么服务(service)。
关于话题(topic)
类似的,节点可以查看,那话题也是可以的。
输入rostopic+list/info/…其他等等(用tab键查看)也就是查看程序中的话题具体信息,和rosnode用法是一样的
比如:
rostopic list查看 所有话题名称
rostopic+info+话题名称
看到该话题的订阅者(subscribers)和发布者(publishers),数据类型。
rostopic echo+话题名,监听话题的消息
比如监听/turtle1/cmd_vel的动态:
海龟静止的时候,话题没有动态消息,当用键盘使得海龟动了起来,该话题就有动态了,显示了海龟运动的线速度和角速度。
自己去发布一个话题的消息
用 rostopic pub+具体话题名 +数据类型(打完话题名后面一直按tab会自动生成)比如发布一个让海龟以x方向2m/s的速度前进:
就会看到小海龟以2m/s的速度前进
但运动一下就停止了,是因为话题指发布一次就没了,我们可以设置一个频率去不断的发布一个话题消息,在pub后跟-r +(频率次数) 比如:
就会看到小海龟一直运动。
关于服务(service)
同样的,服务和话题,节点也有类似的用法,info,list啊,都是有的,就直接rosservice+后面的指令,如图:
服务的信息有哪个节点发布的,服务类型,所需要的参数。同样的,和topic一样,也可以自己发布。
用rosservice+call+服务名+参数,比如:
rosservice call /spawn+参数
就是在(0,3)处再产生一只名为turtle2的乌龟,如图:
这个时候再看一下计算图:
关于rqt工具箱
上面已经说了rqt工具箱的查看计算图的功能,
还有一个常用的功能,rqt_plot
终端输入:rqt_plot
显示:
功能就是把某个话题的具体信息用图表现出来。
比如显示海龟位置x,y坐标变化表示出来,在topic框中输入/就会有话题选择,再点击加号,就可以把话题加进来。
比如显示乌龟1位置变化,选中/turtle1/pose话题,点中那个autoscroll,键盘控制海龟移动,就会有变化,按旁边的暂停就可以将图静止,查看图表:
标签:rqt,turtle1,话题,笔记,rosmaster,指令,tab,ROS,节点 来源: https://blog.csdn.net/lwq123free/article/details/89893387