ROS学习笔记
学习古月居ros21讲笔记
第一章 ROS命令行工具的使用
目录
一、各命令介绍
1.roscore
启动rosMaster(rosMaster是所有节点的管理器)
roscore
2.rosrun
运行一个节点 后面接两个参数 一个是功能包节点 一个是此功能包里的功能节点(在输入完 rosrun 功能包名 后按两下tab键将会显示这个包中的所有节点)
列:
rosrun turtlesim //学习用功能包 此时双击tabtab可以获取此包中所有节点信息
rosrun turtlesim turtlesim_node //仿真器节点
rosrun turtlesim turtle_teleop_key //键盘控制节点
3.rqt_graph
ros中有许多以rqt开头的可视化工具
rqt_graph可以显示整个系统的全貌,可以显示所有节点间的话题
此时为键盘控制节点与仿真器节点的关系
4.rosnode
完成与节点相关的任务
(rosout为默认话题,会自动启动,此话题用来提取所有节点信息)
5.rostopic
完成与话题相关任务
//rostopic pub 话题名 按tab补全 会接上具体数据
rostopic pub 按tab补全
//根据提示找到想要运行的话题,一步步补全
完成自动运行小海龟:
rostopic pub -r 10 /turtle1/cmd_vel geometry_msgs/Twist "linear:
x: 1.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 2.0"
-r 10 为循环结构
慢慢按tab补全
6.rosmsg
与消息相关任务
7.rosservice
完成服务相关任务
rosservice 按回车显示所有功能
rosservice list 此时服务的所有内容(此时服务端为海龟的仿真器,客户端为命令)
rosservice call 唤醒服务
rosservice call /spawn 按两下tab补全其余数据(生成一只海龟)
rosservice call /spawn "x: 3.0
y: 3.0
theta: 0.0
name: 'aaa'" //按下回车
name: "aaa" //生成成功
8.rosbug
记录话题并保存
记录:
rosbag recored -a-O 文件名 //-a为 -all保存所有数据 -O为保存文件
rosbag record -a -O ros_record //开始记录数据,并将数据存在根目录的ros_record.bag里
复现:
rosbag play 文件名.bag
rosbag play ros_record.bag 复现之前对海龟的运动
二、训练
完成3只乌龟复现跑动形成三角形
roscore
rosrun turtlesim turtlesim_node //生成仿真器,同时有一只位于(5.5,5.5)角度为0的小海龟
rosservice call /spawn "x: 7.5
y: 5.5
theta: 2.0943951023931954923084289221863
name: 'a'" //生成位于(7.5,5.5)角度为120°的第二只海龟
rosservice call /spawn "x: 6.5
y: 7.2320508075688772935274463415059
theta: 4.1887902047863909846168578443727
name: 'b'" //生成位于(6.5,5.5+根号3)角度为240°的第三只海龟
rosbag record -a -O sanjiaoxin //开始记录话题
rostopic pub /turtle1/cmd_vel geometry_msgs/Twist "linear:
x: 2.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0" //自动生成的海龟默认名为turtle1
rostopic pub /a/cmd_vel geometry_msgs/Twist "linear:
x: 2.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0"
rostopic pub /b/cmd_vel geometry_msgs/Twist "linear:
x: 2.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0"
//在record界面按下ctrl c 结束记录
//关闭除roscore所有页面重新开始
rosrun turtlesim turtlesim_node //生成仿真器,同时有一只位于(5.5,5.5)角度为0的小海龟
rosservice call /spawn "x: 7.5
y: 5.5
theta: 2.0943951023931954923084289221863
name: 'a'" //生成位于(7.5,5.5)角度为120°的第二只海龟
rosservice call /spawn "x: 6.5
y: 7.2320508075688772935274463415059
theta: 4.1887902047863909846168578443727
name: 'b'" //生成位于(6.5,5.5+根号3)角度为240°的第三只海龟
rosbag sanjiaoxin.bag //复现
//由于生成小龟是用的服务不是话题,所以我不知道如何实现复现,只能再敲一遍
完成
三、总结
效率有点低