更新!整理出《ROS机器人编程》第八章ppt讲义版,请对照书籍P194-231页学习。
【说明】机器人主要分为硬件和软件。机械、电机、齿轮、电路和传感器被归类为硬件。直接驱动或控制机器人硬件的微控制器级别的固件,以及利用从传感器获得的信息进行识别、 制图、导航和动作规划的应用软件均被分类为软件。
【说明】ROS属于应用软件的范畴,根据功能,ROS的功能包被分类为机器人功能包、专为传感器的传感器功能包和专为驱动部的电机功能包。这些功能包由Willow Garage、 ROBOTIS、Yujin Robot和Fetch Robotics等机器人公司提供。或者由Open Robotics (曾经是Opensource Robot Foundation,OSRF)、机器人专业的大学实验室和个人开发者开发并发表自己开发的ROS机器人、传感器和电机的相关功能包。
【说明】如果要选机器人功能包的代表作,那么绝对是下图中的PR2和TurtleBot。其中,PR2 是负责ROS开发的Willow Garage以科研用机器人为目的开发的移动人形机器人。即使现在,PR2功能包还是具有代表性的机器人功能包,因为其他机器人的核心功能包很多还是 使用PR2功能包的衍生包。
虽然PR2的通用性和性能非常优秀,但因为价格过高,无法实现刺激和传播ROS 的目的,TurtleBot机器人正是由于这个原因而开发的机器人,旨在普及ROS。第一版 Turtlebot是将基于iRobot公司的扫地机器人Roomba的create作为基础而开发的。而 TurtleBot2是将韩国的服务机器人公司Yujin Robot的iCLEBO的改进版KOBUKI作为移动的基础而开发的。此外,本书将重点介绍的TurtleBot3是由ROBOTIS、Intel和Open Robotics合作开发的一款基于Dynamixel舵机的移动机器人。在后续的第10章里会介绍与TurtleBot有关的机器人功能包的用法,同时会进行对TurtleBot的更详细的说明。
【说明】除了这两种有代表性的机器人之外,还有180多种机器人的功能包也已公开,如图所示。这是以开源形式的ROS功能包公开的机器人数量,再加上机器人相关的公司、研究所、大学和个人使用的机器人的话数量会更多。
如果您要使用的机器人功能包是ROS官方功能包,那么安装方法非常简单。首先,请检查您要使用的机器人功能包是否在ROS Wiki(http://robots.ros.org/)上公开可用, 或者您可以使用以下命令在所有ROS功能包列表中找到它。
$ apt-cache search ros-kinetic
【说明】传感器是与机器人无法分离的。有许多研究从传感器数据提供的无数环境信息中提取有意义的信息,或利用这些信息认识环境并传输给机器人。这样的环境信息有位置、空 间、天气、声音、惯性、振动、气体、电流量、RFID,物体和外力识别等很多种。该信息被用作机器人执行实际任务的重要数据。
在制作机器人时,通过驱动轮或机器人手臂让机器人移动,且通过智能手机等进行遥控并不意味着开发完成。如果您在这里停下来,只能说您搭建了一个移动的机器。机器人只有在自己认识到周围环境,只提取有意义的信息,并能够计划和做出思考和判断,才能被视为机器人。这就是为什么传感器很重要。
【说明】问题是,如图所示,有太多的传感器可以使用。而在微处理器中以ADC(模拟数字转换器)方式接收数据的传感器是有限的。其中,LDS、3D传感器、相机等传感器有大量需要处理的信息,处理起来需要较高的配置,因此无法用微处理器实现,需要用 PC。因此需要驱动程序,还需要如OpenNI和OpenCV的Point Cloud处理,以及图像处理所需的库。
ROS提供了可以使用上述传感器的驱动程序和库的开发环境。目前,还并不是提供所有的传感器功能包,但传感器功能包正变得越来越多。而且功能相同但通信方式不同的传感器们的用法也趋向于统一。传感器制造商正在积极支持ROS传感器功能包,这将加速 ROS对未来传感器的支持。
【说明】相机的接口并不只有USB。某些相机具有可连接到网络的功能。通常连接到局域网或WiFi,将视频数 据以视频流形式传输到网络。这些相机应该被称为网络摄像头。此外,有些摄像机使用FireWire(IEEE 1394接口)进行高速传输,主要用于需要高速传输图像的研究目的。FireWire标准在大多数常见的电路板上无法找到,但它是由苹果公司开发的,因此主要用于苹果产品。
【说明】在本节中,我们来使用Ken Tossell发布的uvc-camera7。它是最常用的USB摄像头功能包。其他相关功能包的用法类似,所以如果您想使用另一个功能包,请检查本功能包的 wiki页面。
【说明】LDS传感器在测量距离时利用激光被物体反射时出现的波长。问题在于这里使用的激光器受控制和价格问题,所以大多数制造商只使用一个激光源。作为参考,价格高达数万美元或更多的Velodyne公司的HDL系列使用的激光器少则16个,多达128个。除此之外大多只使用一个激光器。为了克服这个问题,典型的LDS由一个激光器、一个反射镜和电机 组成。当使用LDS时,会听到电机声音,因为它会旋转内部的反射镜,以在水平面内发射激光。测量范围通常是从180度到360度,取决于具体产品。
【说明】最近添加到ROS Wiki中的Motors页面是ROS支持的所有电机和伺服控制器的说明页面。目前有支持PhidgetMotorControl HC、Roboteq AX2550 Motor Controller和 ROBOTIS Dynamixel的功能包。
【说明】Dynamixel系列是由减速箱、控制器、驱动单元和通信单元组成的模块,并且可以向主机反馈位置、速度、温度、负载、电压和电流等物理量。因为它可以通过总线方法连接和控制,从而可以非常简单地设计机器人。除了基本的位置控制之外,还可以使用广泛应 用于机器人的速度控制和转矩控制(部分系列)。
【说明】因为有这些丰富的功能,Dynamixel被广泛应用于机器人领域。将Dynamixel应用于机器人的方法有两种:一种是通过U2D2(将在第13章讨论的通信转换设备)将控制命令从计算机传送到舵机的方法,还有一种是直接通过OpenCR(将在第9章讨论)等嵌 入式控制器来控制舵机的方法。为了在如此多样的环境中使用Dynamixel,此舵机支持叫做DynamixelSDK20的开发环境。这个开发环境支持三种主要的操作系统(Linux、 Windows和MacOS)且支持C、C++、C#、Python、Java、MATLAB和LabVIEW 等多种编程语言。此外还支持Arduino和ROS功能包,因此在ROS中也可以很容易地 使用Dynamixel。支持Dynamixel的典型功能包是dynamixel_motor、arbotix和 dynamixel_workbench21。前两个是社区用户提供的功能包,后者是由ROBOTIS官 方提供的功能包。dynamixel_workbench使用官方DynamixelSDK,通过ROS中的 GUI工具支持电机设置和位置/速度/转矩控制。本书中将要详细讨论的TurtleBot3也将 Dynamixel作为舵机来使用。有关这些电机的说明,请参见第9章“嵌入式系统”和第10 章“移动机器人”。
【说明】为了在公开的ROS功能包中找到所需的功能包,请在网页http://wiki.ros.org/上的搜索框中输入关键词,则会在网站上显示搜索词的搜索结果。例如,如果您键入“find object”并单击“Submit”按钮,则可以查看与您输入的关键词匹配的各种功能包的信息和提问。
原创声明:本篇文档为原创文档。欢迎转发转载引用,请注明出处。
喜欢本文请关注微信公众号“京天机器人”
Donghu Robot Laboratory, 2nd Floor, Baogu Innovation and Entrepreneurship Center,Wuhan City,Hubei Province,China
Tel:027-87522899,027-87522877
Robot System Integration
Artificial Intelligence Robots
Mobile Robot
Collaborative Robotic Arm
ROS modular robot
Servo and sensor accessories
Scientific Research
Professional Co Construction
Training Center
Academic Conference
Experimental instruction
Jingtian Cup Event