robot operating system概述

原创 2015年11月18日 15:47:12

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
图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(ROS) 机器人操作系统

http://www.ros.org/关于ROS About ROS http://www.ros.org/about-ros/机器人操作系统(ROS)是用于编写机器人软件的灵活框架。目的在简化多种机...

ROS(Robot Operating System)操作系统探索总结(一)简介

一、历史   随着机器人领域的快速发展和复杂化,代码的复用性和模块化的需求原来越强烈,而已有的开源机器人系统又不能很好的适应需求。2010年Willow Garage公司发布了开源机器人操作系统ROS...
  • yake827
  • yake827
  • 2015年01月06日 20:09
  • 2596

ROS(Robot Operating SysTerm) 系统

ROS (Robot Operating System, 机器人操作系统) 提供一系列程序库和工具以帮助软件开发者创建机器人应用软件。它提供了硬件抽象、设备驱动、库函数、可视化、消息传递和软件包管理等...

双目视觉测量系统设计中的一些注意事项

在设计一个非接触式双目视觉测量系统时,
  • ny1986
  • ny1986
  • 2014年07月27日 17:01
  • 1650

机器人视觉导航的OpenCV实现-视频演示

divShare视频: 优酷视频:http://v.youku.com/v_show/id_XMjE3NDY4NDY0.html

ROS(Robot Operating System) 基础

Elementary OS 下安装 ROS (Robot Operating System)

如何在 Elementary OS 下安装 ROS
  • b51live
  • b51live
  • 2016年07月16日 20:57
  • 350

(ros:robot operating system)cob_simulation報錯

cob_simulation報錯 按照官網說明 http://wiki.ros.org/cob_bringup_sim 1. git clone https://github.com/ipa320/c...

Robot Operating System(ROS)入门教程

1、写在前面的话可能和大部分喜欢人工智能人一样,都想亲手制作自己的机器人。现在终于有机会接触到他了,我之前完全是小白,博客将记录我的学习过程。现在就开始从最基本的环境配置及ROS学习开始吧! 第一...

ros(robot operating system机器人操作系统)订阅函数的多线程使用方法(C++: 外部变量控制跳出for循环)

最初是想实现接收到某个some_topic然后解析内容,若是内容为指令action,action函数进入for循环,若是再接收到some_topic,里面指令为stop则stop=true停止正在进行...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:robot operating system概述
举报原因:
原因补充:

(最多只允许输入30个字)