ROS学习笔记(1)-ROS指令

ROS kinetic安装:安装
ROS四大要素:节点(node),话题(topic),消息(message),服务(service)。
rosmaster就相当于一个大网管,是所有节点的管理器,ros作为一种分布式的软件框架,而你的主机就是管理者

启动rosmaster:(就相当于进入ros了) 退出就是ctrl+c
roscore
ROS学习笔记(1)-ROS指令_第1张图片
启动了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常用命令:
ROS学习笔记(1)-ROS指令_第2张图片
常用命令后面可以跟什么命令查看就可以用空格+tab键,比如:
rosnode+空格+tab:

比如rosnode list就可以查看当前rosnode运行程序中的所有节点名字,其他功能自行尝试,
也可以rosrun+功能包名字+tab就可以查看功能包中的所有节点。
tab键是一个很强大的键,它会提示下一步的指令可输入什么,还有自动补全节点名字,比如输入ros,然后空格+tab就会出现ros所有的命令,按rosrun+tab,就会出现后面可跟的功能包名字。特别在ros运行节点时候,可以不用自己打全节点名字,可以打完首字母按tab键就会出来节点名字,同样的在输入文件名时,也是可以自动补全的。
注意,启动roscore,只是说,启动了rosmaster,证明这台主机是rosmaster,而不是后面什么rosrun这样的rosrun指令都在那个启动了roscore的窗口继续输指令,不是的!!!是另外开一个窗口去输入指令。

通过小海龟程序来了解ROS

流程如图
ROS学习笔记(1)-ROS指令_第3张图片

关于节点(node)

rosrun的命令结构:
rosrun+节点所在的功能包名字+功能包可执行文件

这三个指令都需要分别在不同的窗口输入(所以运行一个正常程序就需要开相当多窗口,这就相当麻烦,这也就有了roslaunch文件的存在了~)。
在这里插入图片描述
输出的小海龟的位置x,y坐标。
ROS学习笔记(1)-ROS指令_第4张图片
键盘控制小海龟。

运行结果:
ROS学习笔记(1)-ROS指令_第5张图片

通过可视化工具qt工具箱查看这个简单的ROS程序的计算图(即节点关系图)
新开一个窗口,可以通过rqt_+tab键查看rqt有啥功能
在这里插入图片描述
打开计算图 :
rqt_graph
ROS学习笔记(1)-ROS指令_第6张图片
这就是这个键盘控制小海龟行走程序的计算图,从图中可以很清楚看出各个节点,话题,服务的关系。
turtlesim就是我们运行小海龟界面的节点
teleop_turtle就是我们运行键盘控制的节点
中间所连接的/turtle1/cmd_vel就是teleop节点发布的的话题,里面包含了乌龟行走速度的信息
而那个rosout节点,是一个所有节点日志储存的地方,我们可以看到所有节点都会发布话题到rosout中去,其中的话题消息就是每个节点的日志信息。
而那个rqt_gui_的那个节点就是这个计算图界面。
而后面两个/turtle1/pose 与 /turtle1/color_sensor就是turtlesim发布的话题,顾名思义都知道哇,pose和color就都是用乌龟的颜色和位置哇。
可以点上面的debug按钮,把一些和现在运行程序无关的节点和话题去掉。
ROS学习笔记(1)-ROS指令_第7张图片
这样就更清晰明了,现在只剩下turtlesim(产生小海龟节点),teleop_turtle(键盘控制节点),/turtle1/cmd_vel(速度控制话题),/turtle1/pose(产生的乌龟位置),/turtle1/color_sensor(产生的乌龟颜色)
也可以用rosnode list查看所有节点
输入
rosnode list

如图:
在这里插入图片描述
其实这个时候发现,我们当时运行时候的节点名字和这显示出来的名字不一样,比如运行turtlesim_node显示出来是turtlesim,这就是type name和excuteble name ,后面会说到。
也可以用
rosnode info+节点名字查看节点的具体信息
比如:
ROS学习笔记(1)-ROS指令_第8张图片
可以看到turtlesim节点发布(publicate)的话题,订阅(subscript)了什么话题,提供什么服务(service)。

关于话题(topic)

类似的,节点可以查看,那话题也是可以的。
输入rostopic+list/info/…其他等等(用tab键查看)也就是查看程序中的话题具体信息,和rosnode用法是一样的
比如:
rostopic list查看 所有话题名称
ROS学习笔记(1)-ROS指令_第9张图片
rostopic+info+话题名称
ROS学习笔记(1)-ROS指令_第10张图片
看到该话题的订阅者(subscribers)和发布者(publishers),数据类型。

rostopic echo+话题名,监听话题的消息
比如监听/turtle1/cmd_vel的动态:
ROS学习笔记(1)-ROS指令_第11张图片
海龟静止的时候,话题没有动态消息,当用键盘使得海龟动了起来,该话题就有动态了,显示了海龟运动的线速度和角速度。
自己去发布一个话题的消息
用 rostopic pub+具体话题名 +数据类型(打完话题名后面一直按tab会自动生成)比如发布一个让海龟以x方向2m/s的速度前进:
ROS学习笔记(1)-ROS指令_第12张图片
就会看到小海龟以2m/s的速度前进
但运动一下就停止了,是因为话题指发布一次就没了,我们可以设置一个频率去不断的发布一个话题消息,在pub后跟-r +(频率次数) 比如:
ROS学习笔记(1)-ROS指令_第13张图片
就会看到小海龟一直运动。

关于服务(service)

同样的,服务和话题,节点也有类似的用法,info,list啊,都是有的,就直接rosservice+后面的指令,如图:
ROS学习笔记(1)-ROS指令_第14张图片
服务的信息有哪个节点发布的,服务类型,所需要的参数。同样的,和topic一样,也可以自己发布。
用rosservice+call+服务名+参数,比如:

rosservice call /spawn+参数
在这里插入图片描述
就是在(0,3)处再产生一只名为turtle2的乌龟,如图:
ROS学习笔记(1)-ROS指令_第15张图片
这个时候再看一下计算图:

ROS学习笔记(1)-ROS指令_第16张图片

关于rqt工具箱

上面已经说了rqt工具箱的查看计算图的功能,
还有一个常用的功能,rqt_plot
终端输入:rqt_plot
显示:

ROS学习笔记(1)-ROS指令_第17张图片
功能就是把某个话题的具体信息用图表现出来。
比如显示海龟位置x,y坐标变化表示出来,在topic框中输入/就会有话题选择,再点击加号,就可以把话题加进来。
比如显示乌龟1位置变化,选中/turtle1/pose话题,点中那个autoscroll,键盘控制海龟移动,就会有变化,按旁边的暂停就可以将图静止,查看图表:

ROS学习笔记(1)-ROS指令_第18张图片

你可能感兴趣的:(ROS学习)