《ROS机器人编程》第十章_移动机器人
2020-09-23

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

1.jpg

【说明】ROS支持的机器人可以在相关wiki(http://robots.ros.org/)上找到。有大约180 种。其中一些包括由个人开发者公开发布的自制机器人,但是如果考虑到这是由单一系统支持的机器人的话,却是不少的数量。

其中最著名的是Willow garage开发的PR2和 TurtleBot。两者都是Willow garage或Open Robotics(前称OSRF)参与开发的机器人,也是ROS的标准平台。在本章中,我们将重点讨论这两者中以普及型为目的开发的 TurtleBot3机器人。


2.jpg

【说明】TurtleBot是ROS的标准平台机器人。这里的turtle来源于1967年开发的乌龟机器人。这款机器人是为了用教育计算机编程语言Logo控制实际机器人而开发的。另外,在 ROS基础教程中首先出现的turtlesim节点是一个模仿Logo turtle程序的命令体系而制作的程序。如图所示,乌龟图标甚至成为了ROS的象征。不仅如此,ROS标志中使用的9个点也来自龟背壳。源于Logo的乌龟的Turtlebot,旨在通过TurtleBot向ROS新手轻松教授ROS的用法(这与Logo的目的类似,Logo的目的是利用Logo语言轻松教授计算 机编程语言)。从第一代TurtleBot开始,近10年来,TurtleBot已经成为开发者和学生使用最多的ROS标准平台。购买Turtlebot请咨询:027-87522899,027-87522877


3.jpg

【说明】为了普及ROS,以iRobot公司的基于Roombar的研究机器人Create为基础而开发。它于2010年开发,自2011年起开始销售。然后在2012年,Yujin Robot公司开发出了以基于 iCLEBO的研究机器人Kobuki为基础的TurtleBot2。在2017年开发的TurtleBot3弥补了TurtleBot1和TurtleBot2中的不足点,且采纳了用户们的新的需求。TurtleBot3的驱动部分采用了ROBOTIS公司的智能舵机Dynamixel。


4.jpg


5.jpg


6.jpg


7.jpg


8.jpg


9.jpg

【说明】TurtleBot3是一个小型、低成本、可编程的基于ROS的移动机器人,其目的是用于教育、科研、爱好者作品和产品原型。TurtleBot3的目标是在不牺牲功能和品质的前提下大幅缩小平台的尺寸且降低价格,同时将机器人组件根据用户的需求更改或扩展。根据用户如何选择部件,如机械部件、计算机和传感器,TurtleBot3可以通过各种方法进行定制。此外,TurtleBot3采用了比现有的PC更经济、更小巧,并且适合嵌入式系统的SBC(单 板计算机),还应用了距离传感器和3D打印等最新技术。


10.jpg

【说明】TurtleBot3的基本组件有:用于驱动的舵机、用于运行ROS的SBC、用于SLAM和 导航(Navigation)的传感器、可变形的结构件、用作中层控制器的嵌入式控制器 OpenCR、兼容轮胎和履带的链轮,最后还有11.1V的锂聚合物电池。


11.jpg


12.jpg

【说明】Waffle-PI型号的特点是:其形状更易于装载物体、采用扭矩更大的舵机、使用360度距离传感器LDS(Laser Distance Sensor),Waffle Pi的单板机采用了与Burger相同的Raspberry Pi,并且相机采用了Raspberry Pi Camera,因此大大提高了性价比。


13.jpg


0.jpg


14.jpg


15.jpg

【说明】TurtleBot3的软件由OpenCR控制板的固件(FW)和4个ROS功能包组成。正如在第 9章嵌入式系统中的说明,作为TurtleBot3的核心,OpenCR的固件还被称为turtlebot3_ core。固件将OpenCR作为中间控制器,读取TurtleBot3的驱动舵机Dynamixel的编码器值来估算机器人的位置,或者根据上位软件的命令来控制速度。另外,固件还从安装在 OpenCR上的3轴加速度和3轴陀螺仪传感器获得加速度和角加速度,以此估计机器人的方向,此外还测量电池电压并将其以话题传输。

TurtleBot3的ROS功能包包括turtlebot3、turtlebot3_msgs、turtlebot3_simulations 和turtlebot3_applications。其中,turtlebot3功能包包括TurtleBot3的机器人模型、 SLAM和导航功能包、遥控功能包以及与行驶相关的bringup功能包。另外,TurtleBot3的消息文件的集合turtlebot3_msgs、仿真功能包的集合turtlebot3_simulations以及应用程序的集合turtlebot3_applications构成了TurtleBot3的ROS功能包。


16.jpg


17.jpg

【说明】如图所示,TurtleBot3的开发环境可以分为远程PC(运行远程控制、SLAM和导航功能包)和TurtleBot PC(控制实际机器人且搜集传感器信息)。这两种PC在开发环境上都非常相似,但是它们使用的功能包根据PC的性能和用途进行了不同的配置。为了搭建一个基本的开发环境,两台PC都要安装Linux(Ubuntu 16.04兼容的Linux Mint和 Ubuntu MATE)作为基本操作系统,且ROS安装Kinetic Kame版本即可。有关详细信息,请参阅第3章“搭建ROS开发环境”。有关PC、TurtleBot和OpenCR的信息,请参阅以下地址。

■ http://turtlebot3.robotis.com

如果已经安装了Linux和ROS,则可以安装与TurtleBot3相关的软件。所有这些安装方法都在上面提到的维基地址中描述,但是这里我们简单地总结一下,只解释一下安装方 法。在控制TurtleBot3机器人的用户PC(在这里我们称为远程PC)上,如下所示安装相关的依赖包和TurtleBot3功能包。但是,我们已经排除了包含本书中没有提到的多种示例 的turtlebot3_applications功能包。


18.jpg

【说明】如果已经安装了所有软件,则下一个最重要的配置是如图所示的网络设置。有关如何更改ROS_HOSTNAME和ROS_MASTER_URI设置的详细说明,请参阅第3.2节和第 8.3节,本节中只了解设置的顺序。作为参考,TurtleBot3将用户的个人台式机和笔记本电脑称为远程PC,这台PC将担任运行roscore的主节点,会负责远程控制、SLAM、导航等上层控制。与此PC配对的TurtleBot3配备了SBC,负责机器人行驶和传感器信息采集。以下远程控制设置示例是在远程PC上运行ROS Master时的示例。


19.jpg

【说明】让我们来看一看Turtlebot的远程控制。几乎所有可连接到PC的设备,如键盘、蓝牙遥控器RC-100B、PS3游戏杆、XBOX 360游戏杆、Wii遥控器、Nunchuk、Android应用程序、LEAP Motion, 和Myo等都可以用于远程遥控TurtleBot3。更多信息可以在 “http://turtlebot3.robotis.com/”的teleoperation项目中查看。在本节中,我们将以最易于使用的键盘和通常用于机器人控制的PS3操纵杆进行说明。20.jpg

【说明】我们将利用RViz来可视化机器人的状态。为了确定要使用的模型,先使用export命令将当前的TurtleBot3的型号指定为Burger。如果是Waffle Pi,您可以将其指定为’waffle_pi’,而不是’burger’。然后运行turtlebot3_model. launch启动文件,则RViz将会被运行。

如图所示,当RViz被运行时,TurtleBot3 Burger的模型和各关节的tf会以RGB 坐标系的形式显示在画面中央。而且,可以看到安装在机器人上的360度距离传感器LDS 接收距离值,并将障碍物显示为红色。


如上面所述,对TurtleBot3的控制需要在远程PC和TurtleBot3 SBC的计算机上来回操作,是比较麻烦的方式。为了解决这个问题,我想建议一种使用SSH来远程访问 TurtleBot3 SBC的方法。这使您可以在远程PC上执行所有的命令。从远程PC远程连接到 TurtleBot3 SBC的操作如下。有关更多信息,请参阅有关SSH的说明。


21.jpg


22.jpg

【说明】TurtleBot3提供虚拟仿真开发环境,即使没有机器人硬件,也可以通过仿真软件里的虚拟机器人进行编程和仿真。有两种方法可以做到这一点,一种是使用ROS的3D可视化工具RViz,另一种是使用3D机器人仿真器Gazebo。

在本节中,我们将了解第一个方法RViz的用法。即使您没有TurtleBot3的硬件,您也可以遥控TurtleBot3,还可以测试SLAM和导航,因此是非常有用的方法。具体方法是使用turtlebot3_simulations元功能包。要在这个元功能包中使用虚拟仿真,首先需要安装 turtlebot3_fake功能包。这在“10.5. TurtleBot3开发环境”中做了说明。如果已经安装了它,请转到下面的内容。


23.jpg


24.jpg

【说明】现在,让我们再次使用turtlebot3_teleop_keyboard节点移动虚拟TurtleBot3。如图所示,与之前不同,可以看到红色箭头会沿着机器人的移动轨迹显示。这个测位 (odometry)信息对于移动机器人来说是表示自身位置和方向的非常基本的信息。至此,我们简单查看了测位(odometry)信息是否正确显示。

TF话题包含TurtleBot3组件的相对坐标信息,它可以像之前的操作一样用rostopic命令确认,但是我们下面将用RViz进行确认,就像查看odom的方式一样。并用rqt_tf_tree 检查层次结构。


25.jpg

【说明】至此,我们介绍了TurtleBot3功能包中的两种仿真工具。一种是使用ROS的3D可视化工具RViz,另一种是使用3D机器人仿真器Gazebo。仿真可以在逼近实际的机器人和场景中完成,而不需要实际的机器人,所以对于需要虚拟仿真的用户来说,这将是一个很好的工具。


26.jpg


27.jpg


28.jpg


29.jpg


30.jpg


31.jpg


32.jpg

【说明】Turtlebot支持三种类型的仿真(stage、stdr、gazebo)。

当希望用虚拟机器人进行各种仿真时,请参考以下相关wiki。

http://wiki.ros.org /turtlebot_stdr 

http://wiki.ros.org /turtlebot_gazebo 

http://wiki.ros.org /turtlebot_stage


33.jpg


34.jpg


35.jpg


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

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

No.1908 Building A,Optics Valley Times Square,Wuhan City,Hubei Province,China
Tel:027-87522899,027-87522877

合作与咨询

商务合作:

amy@jingtianrobots.com

渠道合作:
lxw@jingtianrobots.com

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