robot operating system概述
来源:互联网 发布:中科院算法答案 编辑:程序博客网 时间:2024/06/11 03:45
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/1191901
http://blog.csdn.net/lanhuadechenmo
wiki.ros.org
- robot operating system概述
- ROC Robot Operating System
- Robot Operating System(ROS)入门教程
- ROS (Robot Operating System) Tutorials
- (ros:robot operating system)cob_simulation報錯
- (ros:Robot Operating System)卸载ros
- ROS(Robot Operating System) 基础
- Introducing Kinematics with Robot Operating System (ROS)
- (ros:Robot Operating System)卸载ros
- ROS(Robot Operating System)常用环境变量介绍
- ROS(Robot Operating System)操作系统探索总结(一)简介
- (ros:robot operating system)urdf_to_collada出现错误
- ubuntu13.04安装 robot operating system机器人系统
- 机器人操作系统ROS(Robot Operating System)是一个机器人
- ROS为Robot Operating System(机器人操作系统)
- Elementary OS 下安装 ROS (Robot Operating System)
- 硬件模块化机器人操作系统 Hardware Robot Operating System (H-ROS)
- 快速了解 Robot Operating System(ROS) 机器人操作系统
- 清理无用的CSS样式比较有用的几个工具
- HTML学习6:表单格式化
- LinearLayout布局摆脱android:supportsRtl影响
- 抄书问题
- sftp 工具类
- robot operating system概述
- web项目遇到classnotfound错误的解决
- Plexus——Spring之外的IoC容器
- Dijkstra算法 初探
- WAS类加载异常分析
- SD卡和TF卡的区别
- 简述结构化查询语言的分类
- 合并js
- Android 5.0 呼叫流程