robot operating system概述
2015-11-18 15:47
375 查看
1. Ros
1. 历史概述
伴随科学技术发展,人工智能的需求日益增长,机器人领域也迅速发展,响应需求,Willow Garage公司于2010年发布了开源机器人操作系统Ros。Ros英文全称为robot operating system。如其名,其主要用于硬件抽象描述、底层驱动程序管理、共用功能的执行、程序间的消息传递、程序发行包管理,具体表现如动态导航壁障、手臂抓取物品、图像识别等。作为开源系统,其汇集众多社区贡献者项目代码,遵循于BSD许可。
2. 现状概述
目前Ros已在机器人研究领域掀起热潮。以robocup大赛为例,国内许多参赛队伍机器人导航模块采用此系统。中科大“可佳”机器人曾于去年夺得国际赛冠军,不例外,他们也采用ros系统,可见ros潜力可观。2. Ros原理概述
1 文件系统
1. 包
Ros文件系统主要以包为主,功能程序打包成包以模块形式独立运行。建立包时添加依赖、导入ros官方库或开源包,扩展程序功能模块。包通过CMake编译系统编译,可以在pakage.xml中自行定制编译细节。包的层次结构可见图1.图1
2. 堆
堆是包的集合,它提供一个完整的功能。2. 计算图级
1. 节点
节点即为程序模块,可视作ros程序的基础组成模块。各个节点作为线程独立运行,执行不同操作,通过通讯传输数据。2. 消息
节点之间通过消息通讯。消息所采用的数据结构既可以是C语言所支持的数据结构,也可以是ros内置的数据结构,如导航模块所需的geometry/Twist数据类型,更可以是自定义的数据结构。3. 话题
消息通过发布/订阅的方式传播,节点发布消息到话题,另一节点订阅话题,即可以获取消息。可见图2.图2
4. 服务
服务好比web服务器,采取请求/回应模式传输数据。相比于话题的广播式发布数据,服务节点通信信道是唯一的,也由此简化节点设计。5. Actionlib
Actionlib实时反馈数据,支持高级数据处理与节点设计模式。3. Ros安装
Ros推荐运行于ubuntu操作系统,安装方法可参照官网教程。由于其对于图像处理有一定要求,所以计算棒、树莓派等简单计算机并不能胜任工作。
4. Ros简易指南
1. 工作空间
创建工作空间以在其内创建软件包。2. Rviz
Ros可视化工具,将地图数据、激光数据、点云数据可视化表现。支持用户自行配置以及保存配置信息。3. 常用命令
catkin_init_workspace:初始化工作空间 catkin_make:编译软件包 rospack find:寻找软件包 roscore:运行ros内核 rosrun:运行节点 roslaunch:运行launch文件 rostopic pub:发布消息至话题 rosrun rqt…:rqt命令集提供一系列可视化工具
4. 常用数据类型
geometry/Twist:包含线速度、角速度数据,用以下发底盘速度。 sensor_msgs/Laser_scan:激光数据类型 scansor_msgs/PointClouod:点云数据类型
5. Launch文件
Launch文件支持。其实际为xml所定义的格式化语言,通过launch文件,可以同时启动多个结点、读入参数等等。5. 导航
1. 导航架构
导航涉及底盘运动、实时避障等。其中又可分为坐标系系统、传感器模块、里程计模块、底盘控制、地图服务等。要充分利用导航堆,需要合理配置各个模块,针对机器人硬件适配与优化。
2. Navigation stack
1. Global、Local
全局规划负责路径规划,本地规划则负责局部实时规划。设定目标点后,全局负责规划路径,遇见障碍物或者局部地图产生变化时,本地负责分析并重新规划合理路径。
2. Costmap
导航堆用costmap储存障碍物信息。3. Recovery_behaviors
导航过程中难免产生误差,当导航模块计算得规划数据和实际数据存在误差,便会采取修复行为来修复tf坐标系数据。修复行为可分为:rotate_recovery和clear_costmap_recovery。
Rotate_recovery:旋转360度以清理costmap
Clear_costmap_recovery:移动至原地点一定距离外借以清理costmap
4. Cmd_vel
导航模块下发速度时常用话题名。5. Map_sever
地图服务采用像素点匹配模式,即实时数据和地图数据进行像素点匹配。因此,必要时可以使用photoshop修改地图,模拟障碍物信息。6. Amcl
机器人的二维移动概率定位系统。图3
3. Tf坐标系
机器人由各个组件组成,如激光、底盘、里程计、手臂。Ros中需要为各个组件建立独立坐标系,再通过tf系统转换各个坐标系,而base_link则作为坐标系中心。见图4图4
建立tf树以建立合适的tf坐标系,可见图5。
各个独立坐标系通过tf树建立互相联系,tf坐标系既可为机器人定位,也可为各组件有序运动助力。
图5
4. 传感器
1. 激光数据
激光数据主要用于二维导航。所需传感器为激光,使用数据类型为senor_msgs/LaserScan。2. 点云数据
点云提供三维世界数据,主要用于建立三维地图。Kinect等传感器支持点云数据输入,使用数据类型为senor_msgs/PointCloud。5. 底盘控制
底盘是机器人最重要的组件之一,运动控制器、里程计、电机等基础组件都包含在底盘中。而同时,若底盘不能够正常运作,上层许多功能都无法正常服务。适配底盘也即是将cmd_vel数据类型转换成驱动器解析需求的数据类型,再由驱动器控制电机转动,完成底盘运动。
6. 里程计
里程计返回里程数据,传递给里程计坐标系。6. Pluginlib
编写插件以配置nav core的修复行为,costmap误差较大时,合理采取修复行为以抵达目标点。7. IDE
正确配置IDE,则可以在IDE中编写及调试ros程序。c、c++推荐使用eclipse,python推荐使用pycharm。
引用块内容
http://blog.csdn.net/hcx25909/article/category/1 9b4e
191901
http://blog.csdn.net/lanhuadechenmo
wiki.ros.org
相关文章推荐
- 应用领航:盘点那些年我们一起追过的OS
- 无奇不有!盘点各国自己开发的操作系统
- 可自定义oem的萝卜家园 Ghost XP 新春装机版 V200801 下载
- C#实现判断操作系统是否为Win8以上版本
- 微信公众平台开发教程(四) 实例入门:机器人回复(附源码)
- Linux操作系统添加新硬盘方法
- java如何获取本地操作系统进程列表
- Linux rdesktop操作系统下远程登录Windows XP桌面
- 32位操作系统认出超出4G内存的方法
- Linux rpm tar 操作系统下软件的安装与卸载方法
- JavaScript 获取用户客户端操作系统版本
- jsp 获取客户端的浏览器和操作系统信息
- Windows 操作系统的安全设置
- asp.net(c#)捕捉搜索引擎蜘蛛和机器人
- php判断当前操作系统类型
- PHP获取用户的浏览器与操作系统信息的代码
- 使用图灵api创建微信聊天机器人
- Perl操作系统环境变量的脚本代码
- javascript获取本机操作系统类型的方法
- 封装好的js判断操作系统与浏览器代码分享