《ROS机器人编程》第八章_机器人、传感器、电机
2020-09-22

更新!整理出《ROS机器人编程》第八章ppt讲义版,请对照书籍P194-231页学习。

1.jpg

【说明】机器人主要分为硬件和软件。机械、电机、齿轮、电路和传感器被归类为硬件。直接驱动或控制机器人硬件的微控制器级别的固件,以及利用从传感器获得的信息进行识别、 制图、导航和动作规划的应用软件均被分类为软件。


2.jpg

【说明】ROS属于应用软件的范畴,根据功能,ROS的功能包被分类为机器人功能包、专为传感器的传感器功能包和专为驱动部的电机功能包。这些功能包由Willow Garage、 ROBOTIS、Yujin Robot和Fetch Robotics等机器人公司提供。或者由Open Robotics (曾经是Opensource Robot Foundation,OSRF)、机器人专业的大学实验室和个人开发者开发并发表自己开发的ROS机器人、传感器和电机的相关功能包。


3.jpg

【说明】如果要选机器人功能包的代表作,那么绝对是下图中的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的更详细的说明。


4.jpg

【说明】除了这两种有代表性的机器人之外,还有180多种机器人的功能包也已公开,如图所示。这是以开源形式的ROS功能包公开的机器人数量,再加上机器人相关的公司、研究所、大学和个人使用的机器人的话数量会更多。

如果您要使用的机器人功能包是ROS官方功能包,那么安装方法非常简单。首先,请检查您要使用的机器人功能包是否在ROS Wiki(http://robots.ros.org/)上公开可用, 或者您可以使用以下命令在所有ROS功能包列表中找到它。

apt-cache search ros-kinetic


5.jpg

【说明】传感器是与机器人无法分离的。有许多研究从传感器数据提供的无数环境信息中提取有意义的信息,或利用这些信息认识环境并传输给机器人。这样的环境信息有位置、空 间、天气、声音、惯性、振动、气体、电流量、RFID,物体和外力识别等很多种。该信息被用作机器人执行实际任务的重要数据。

在制作机器人时,通过驱动轮或机器人手臂让机器人移动,且通过智能手机等进行遥控并不意味着开发完成。如果您在这里停下来,只能说您搭建了一个移动的机器。机器人只有在自己认识到周围环境,只提取有意义的信息,并能够计划和做出思考和判断,才能被视为机器人。这就是为什么传感器很重要。


6.jpg

【说明】问题是,如图所示,有太多的传感器可以使用。而在微处理器中以ADC(模拟数字转换器)方式接收数据的传感器是有限的。其中,LDS、3D传感器、相机等传感器有大量需要处理的信息,处理起来需要较高的配置,因此无法用微处理器实现,需要用 PC。因此需要驱动程序,还需要如OpenNI和OpenCV的Point Cloud处理,以及图像处理所需的库。

ROS提供了可以使用上述传感器的驱动程序和库的开发环境。目前,还并不是提供所有的传感器功能包,但传感器功能包正变得越来越多。而且功能相同但通信方式不同的传感器们的用法也趋向于统一。传感器制造商正在积极支持ROS传感器功能包,这将加速 ROS对未来传感器的支持。


7.jpg


8.jpg


9.jpg

【说明】相机的接口并不只有USB。某些相机具有可连接到网络的功能。通常连接到局域网或WiFi,将视频数 据以视频流形式传输到网络。这些相机应该被称为网络摄像头。此外,有些摄像机使用FireWire(IEEE 1394接口)进行高速传输,主要用于需要高速传输图像的研究目的。FireWire标准在大多数常见的电路板上无法找到,但它是由苹果公司开发的,因此主要用于苹果产品。


10.jpg

【说明】在本节中,我们来使用Ken Tossell发布的uvc-camera7。它是最常用的USB摄像头功能包。其他相关功能包的用法类似,所以如果您想使用另一个功能包,请检查本功能包的 wiki页面。


11.jpg


12.jpg


13.jpg


14.jpg


15.jpg


16.jpg


17.jpg


18.jpg



19.jpg


20.jpg

【说明】LDS传感器在测量距离时利用激光被物体反射时出现的波长。问题在于这里使用的激光器受控制和价格问题,所以大多数制造商只使用一个激光源。作为参考,价格高达数万美元或更多的Velodyne公司的HDL系列使用的激光器少则16个,多达128个。除此之外大多只使用一个激光器。为了克服这个问题,典型的LDS由一个激光器、一个反射镜和电机 组成。当使用LDS时,会听到电机声音,因为它会旋转内部的反射镜,以在水平面内发射激光。测量范围通常是从180度到360度,取决于具体产品。


21.jpg


22.jpg

【说明】最近添加到ROS Wiki中的Motors页面是ROS支持的所有电机和伺服控制器的说明页面。目前有支持PhidgetMotorControl HC、Roboteq AX2550 Motor Controller和 ROBOTIS Dynamixel的功能包。


23.jpg

【说明】Dynamixel系列是由减速箱、控制器、驱动单元和通信单元组成的模块,并且可以向主机反馈位置、速度、温度、负载、电压和电流等物理量。因为它可以通过总线方法连接和控制,从而可以非常简单地设计机器人。除了基本的位置控制之外,还可以使用广泛应 用于机器人的速度控制和转矩控制(部分系列)。


24.jpg

【说明】因为有这些丰富的功能,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 章“移动机器人”。


25.jpg


26.jpg

【说明】为了在公开的ROS功能包中找到所需的功能包,请在网页http://wiki.ros.org/上的搜索框中输入关键词,则会在网站上显示搜索词的搜索结果。例如,如果您键入“find object”并单击“Submit”按钮,则可以查看与您输入的关键词匹配的各种功能包的信息和提问。


27.jpg


28.jpg


29.jpg


原创声明:本篇文档为原创文档。欢迎转发转载引用,请注明出处。

喜欢本文请关注微信公众号“京天机器人”

Donghu Robot Laboratory, 2nd Floor, Baogu Innovation and Entrepreneurship Center,Wuhan City,Hubei Province,China
Tel:027-87522899,027-87522877

合作与咨询

渠道商务合作:18062020215

售前技术咨询:13807184032

售后服务热线:18062020228

网站备案号:鄂ICP备17004685号-1 | 技术支持 | 联系我们 | 服务条款与隐私权 | 网站地图