文章目录
ROS是目前使用最广泛的开源机器人操作系统之一,ROS主要用于自动驾驶的系统架构与仿真平台。目前,许多自动驾驶系统仍然选择在ROS系统上进行改进,如Apollo,Autoware等。本文主要记录基础知识并讨论ROS的入门方法。
第6讲:ROS是什么?
1、ROS=通信机制+开发工具+应用功能+生态系统
①通信机制:ROS提供了一种松耦合分布式通信机制
②开发工具:ROS提供了大量的工具组合用以配置、启动、自检、调试、可视化、登录、测试、终止分布式计算系统;
③应用功能:ROS提供控制,规划,预测,定位操纵等功能
④生态系统:ROS的支持与发展依托着一个强大的社区。ros.org尤其关注兼容性和支持文档,提供了一套“一站式”的方案使得用户得以搜索并学习来自全球开发者数以千计的ROS程序包。
2、通信机制
ROS中具有松耦合分布式通信机制
3、开发工具
4、应用功能
5、生态系统
第7讲:ROS中的核心概念?
1、节点与节点管理器
2、通信机制
ROS中具有两种通信机制,分别为:话题通信和服务通信
3、参数
4、文件系统
第8讲:ROS命令行的工具使用?
运行小海龟程序的样例:
roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key
1、节点运行
rosrun【功能包】【节点名】
rosrun [功能包] 双TAB有提示
2、绘制节点通信图
rqt_grapy
3、常见的命令行功能
命令:rostopic rosservice rosnode rosparam rosmsg rossrv
格式:命令 【动作】【对象】
TIPS:命令+enter===>可以提示所有
TIPS:命令 【动作】+两个TAB======》
rosnode list
rosnode info /teleop_turtle
rostopic
rostopic list
rosmsg show geometry_msgs/Twist
rosservice list
rosservice info /spawn
1)、rostopic echo [topic]
显示某话题的数据
$ rostopic echo /turtle1/cmd_vel
2)、rostopic type
显示某话题的消息类型
$ rostopic type /turtle1/cmd_vel
geometry_msgs/Twist
3)、rosmsg show
查看消息类型的详细信息
$ rosmsg show geometry_msgs/Twist
geometry_msgs/Vector3 linear
float64 x
float64 y
float64 z
geometry_msgs/Vector3 angular
float64 x
float64 y
float64 z
4)、rostopic hz [topic]
rostopic hz报告数据发布的速率。
$ rostopic hz /turtle1/pose
subscribed to [/turtle1/pose]
average rate: 59.354
min: 0.005s max: 0.027s std dev: 0.00284s window: 58
average rate: 59.459
min: 0.005s max: 0.027s std dev: 0.00271s window: 118
average rate: 59.539
min: 0.004s max: 0.030s std dev: 0.00339s window: 177
average rate: 59.492
min: 0.004s max: 0.030s std dev: 0.00380s window: 237
average rate: 59.463
min: 0.004s max: 0.030s std dev: 0.00380s window: 290
5)、rqt_plot
动态绘制话题的数据
$ rosrun rqt_plot rqt_plot
这会弹出一个新窗口,可以在左上角的文本框里面添加任何想要绘制的话题。在里面输入/turtle1/pose/x后,之前不能按下的加号按钮将会变亮。按一下该按钮,并对/turtle1/pose/y重复相同的过程。现在你会在图中看到turtle的x-y位置。
6)查找ros功能包的路径rospack find
$ rospack find turtlesim
/opt/ros/noetic/share/turtlesim
4、利用命令行发布话题与服务请求
发布话题消息
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: 0.0"
发布服务请求
rosservice call /spawn "x: 10.0
y: 10.0
theta: 0.0
name: ''"
name: "turtle2"