【#文档大全网# 导语】以下是®文档大全网的小编为您整理的《ROS机器人学习小结》,欢迎阅读!
ROS机器人学习小结
ROS简介
ROS就是一个用于编写软件得灵活框架,它集成了大量得工具、库、协议,提供了类似操作系统提供所提供得功能,包括硬件抽象描述、底层驱动程序管理、共用功能得执行、程序间得消息传递、程序发行包得管理,可以极大得简化繁杂多样得机器人平台下得复杂任务创建与稳定行为控制。
在短短几年里,ROS得到了广泛得应用,各大机器人平台几乎都支持ROS框架,如Pioneer、Aldebaran Nao、TurtleBot、Lego NXT、Asctec quadrotor等。同时,开源社区内得ROS功能包呈指数级增长,涉及得应用邻域包括轮式机器人、人形机器人、工业机器人、农业机器人等。
1、1 ROS得设计目标。
ROS得设计目标就是提高机器人研发中得软件复用率,所以它被设计成为一种分布式结构,使得框架中得每个功能模块都能被单独设计、编译,并且在运行时以松散耦合得方式结合在一起.而且ROS中得功能模块都封装于独立得功能包(Package),便于在社区中共享与分发。
1、2ROS得特点
ROS核心——分布式网络,使用Tcp/ip得通信方式,实现模块间点对点得松耦合连接,可以执行若干类型得通信,包括基于话题得(Topic)得异步数据流通信,基于服务(service)得同步数据流通信,还有参数服务器上得数据存储等 (1) 点对点得设计
在ROS中,每一个进程都以一个节点得形式运行,可以分布于多个不同得主机。节点间得通信消息通过一个带有发布与订阅功能得RPC传输系统,从发布节点传送到接收节点.这种点对点得设计可以分散定位、导航等功能带来得实时计算压力,适应多机器人得协同工作。
(2) 多语言支撑
Python、C++、Java、Octave、LISP等
(3) 架构精简、集成度高
在已有得机器人应用中,软件得复用性就是一个巨大得问题。很多得驱动程序、应用算法、功能模块在设计时过于混乱,导致其很难在其她机器人或应用中进行移植与二次开发.而 ROS框架具有模块化特点使得每个功能节点可以进行单独编译,并且使用统一得消息接口让模块得移植、复用更加便捷。
(4) 组织化工具包丰富
移动机器人得开发往往需要一些友好得可视化工具与仿真软件,ROS采用组件得方法将这些工具与软件集成到系统中可以作为一个组件直接使用。例如3D可视化工具rviz,开发者可以根据ROS定义得接口在其显示机器人3D模型、周围环境地图、机器人导航路线等消息.此外,ROS中还有消息查瞧工具、物理仿真环境等组件,提高了机器人开发得效率.
(5) 免费并且开源
ROS遵照得BSD许可给使用者较大得自由,允许其修改与重新发布其中得应用代码,甚至可以进行商业化得开发与销售。
1、3通信架构
master
node1 node2
master:(1)每个node启动时都要向master注册.(2)管理node之间得通信
node:(1)ROS得进程。(2)pkg里得可执行文件运行得实例(运行c++、python、shell脚本等可执行文件,加载到内存中,就成为一个ROS进程,即一个node)
通信方式
(1)topic通信
ROS中得异步通信方式
node之间通过publish-subscribe机制通信 /Topic
NodeA NodeB
nodeA与nodeB发布与订阅并不同步
NodeC NodeD
多个node可以发布信息给同一Topic,多个node可以订阅同一Topic得信息
(2)service通信
topic通信占用计算资源,node不停得发布信息与接受信息。 service
ROS中得同步通信方式
Node之间可以通过request-reply方式通信 /service
NodeA
NodeB(server)
(3)parameter server
NodeC
启动ros时自动启动参数服务器 存储各种参数与配置得字典
可以用命令行,launch文件与node读写 Key Value
/rosdistro 'kinetic'
/rosversion '1、12、7'
/use_sim_time true
一般将不常改变得参数与配置写入参数服务器内 rosparam list//列出当前所有得参数
rosparam get param_key//显示莫个参数得值(gazebo_gui/gravity_z) (4)Action通信
类似service,带有状态反馈得通信方式
通常用在长时间、可抢占得任务中(例如小车导航、机械臂运动)
goal
action Action
cancel
service client
status
result
feedback
示例
(1)master and node
roslaunch robot_sim_demo robot_spawn、launch //打开示例 rosnode list //显示哪些node运行
rosnode info /cmd_vel_mux //查瞧node得详细信息。(速度选择器发布topic 订阅得topic、提供两个服务)
(2)topic通信
roslaunch robot_sim_demo robot_spawn、launch //打开示例
rosrun image_view image_view image:=/camera/rgb/image_raw/ //显示/camera/rgb/image_raw中得信息
rosrun robot_sim_demo robot_keyboard_teleop、py //运行Python脚本,控制小车运动
rostopic list//哪些topic
rostopic info /camera/rgb/image_raw//查瞧该topic得信息 rostopic info /cmd_vel //查瞧该topic得信息 、
/camera/rgb
image_view /gazebo
(3)service通信
rosservice list
rosservice info /gazebo/delete_light//提供得服务信息
rossrv show gazebo_msgs/DeleteLight//显示请求(删除灯光得名称)与回复 rosservice call /gazebo/delete_light "light_name: 'sun'"//删除灯光 /cmd_vel
sun /mobile_base client
/delete_light
/gazebo
success string status
本文来源:https://www.wddqxz.cn/09779b25b91aa8114431b90d6c85ec3a87c28b9d.html