树莓派机器人蓝图权威宝典(txt+pdf+epub+mobi电子书下载)


发布时间:2021-02-13 10:51:09

点击下载

作者:理查德·格里密特 (Richard Grimmett)

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

树莓派机器人蓝图权威宝典

树莓派机器人蓝图权威宝典试读:

前言

机器人近几年才真正进入普罗大众的视野。还在几年之前,像制作一个真空吸尘机器人或者一架自由飞行的无人机这样的想法,还仅仅存在于政府研发中心或者大学实验室中,而现在这些曾经“高大上”的事物却渐渐走进每个普通人的生活。这种变化,得到了许多富有雄心的人士的推动(至少在某些方面如此),他们或许没有经过严格的技术训练,但是却使用廉价的硬件和免费、开源的软件不断实现着自己的想法。

本书通过详细介绍怎样开始创建你想从事却担心自己缺乏专业知识的项目来庆祝这种不断创造的努力。这些项目的核心是树莓派B2[1],一个基于微处理器的、能够运行Linux并且能够为大量的开源模块提供平台支持的硬件系统。把树莓派和这些开源模块和低成本的硬件连接起来,你就能制造出能走路、能打滚、能绘图甚至能够飞行的机器人。本书内容

第1章,为遥控小车加一个树莓派,将向你介绍如何将树莓派添加到一个你已经拥有的玩具(例如一辆旧的遥控汽车或者卡车)上,让它“焕发新生”。

第2章,在人形机器人中加入树莓派,将告诉你怎样将树莓派加装到机器人上,例如来自WowWee的Robosapien系列机器人,并且利用语音指令让它“拥有十八般武艺”。

第3章,组建自导航寻迹小车。在本章中,你会看到如何制作一辆加装了各种传感器并因而能够识别一系列物品位置的履带机器人。

第4章,制造激光对抗机器人。在本章中,你会看到如何发挥树莓派的性能来制作一辆能够玩激光束游戏的轮式机器人。

第5章,能绘图的机器人。本章将介绍一些能够更加容易地控制机器人的手臂和腿的精密伺服控制器的性能。在本章中我们要用自己的系统来控制伺服电机的位置。

第6章,一个可以玩空气曲棍球的机器人。本章将向你介绍怎样利用步进电机和先进的视觉系统来制作一个强大、精确的玩空气曲棍球的机器人。

第7章,会飞的机器人。制作完能走路、能说话或者能玩空气曲棍球的机器人后,你将在本章的指导下制作一架能够飞行的机器人!使用本书你需要用到这些……本书为哪些人而编写……

这本包罗万象的指导书适合任何一个想要应用树莓派外设开阔视野的人使用。如果你梦想用一些简单、便宜、易得的硬件来制作看起来相当酷炫的机器人的话,那么对你来说这将是一本理想的指导书。我们建议你在使用本书之前能够先了解一下树莓派和一些简单的机械结构。约定

在本书中,你将看到许多不同的排版格式,它们代表着不同种类的信息。下面是这些版式中的一些例子及其各自所代表的含义的介绍。

文中的编程语句、数据库表名、文件夹名、文件名、文件后缀、路径名、虚拟的URL路径名、用户输入和Twitter句柄按照以下格式显示:“输入cd rrb2-1.1——这将使得目录转为文件所在位置。”

代码块的版式如下: void loop(){ int dt; uint8_t logOutput=0; debug_counter++; timer_value = micros();

命令行输入或者输出的版式如下:volatile int viRobsapienCmd = -1; // A robosapien command sent over the UART request// Some but not all RS commands are defined#define RSTurnRight 0x80#define RSRightArmUp 0x81

[警告和关键提醒将会在这样的图标后出现。]下载书中的示例代码

读者获得书中每款机器人代码的方式如下。

方式一:直接在百度云盘获取每章的代码,链接如下。

链接:http://pan.baidu.com/s/1i5Hhbzn 密码:2pfy

方式二:关注“MBH创客蜂巢”微信公众号,单击“MBH出品”就能找到相关的代码。

方式三:单击链接本书代码部分。

http://mobiushacker.org/forum.php?mod=viewthread&tid=140&fromuid=1本书彩图下载

我们还提供本书中所用到的屏幕截图、图表等彩图的PDF。这些彩图能够帮助你更好地理解输出的变化。你可以访问https://www.packtpub.com/sites/default/files downloads/6282OT_ColorImages.pdf下载该文件。勘误

尽管我们已经尽最大努力来保证书中内容的准确性,但错误仍有可能发生。如果你在书中的内容或代码中发现了错误,我们十分欢迎你将它报告给我们。这样做的话,你就免去了其他读者在读到它们时产生的困惑,并且可帮助我们改进该书的下一版。如果你发现了错误,请登录http://www.packtpub.com/submit-errata,选择书的名字,单击勘误链接,然后填入错误的详细信息。一旦你报告的错误被我们接受,那么该错误的信息将会被更新在我们的网站上,并且添加在该书的所有相关错误列表中。

如果想要看已经被提交的错误,则请登录https://www.packtpub.com/books/content/support,然后输入书名进行搜索。相关信息会出现在Errata部分。版权

在所有互联网媒体中,版权问题都是一个日益严重的问题。在Packt,我们非常重视保护自己的版权。如果你在任何地方看到本书的非法拷贝,请立刻将链接或网站名告诉我们,我们会立刻寻求解决办法。

请将可疑的侵权网站链接,发送至copyright@packtpub.com。

我们将十分感激你对作者工作成果的保护,并且我们将为你带来更有价值的作品。疑问

如果你有关于本书的疑问,请通过questions@packtpub.com联系我们。我们将会尽最大努力进行解决。

[1]本书中使用的是树莓派B2,不过书中内容也同样适用于树莓派B3。——译者注第1章为遥控小车加一个树莓派

高性价比处理器的引入,加之免费开源软件提供的广泛功能,使得DIY电子项目不再像以往那样简单枯燥、缺乏灵感。目前,开发者们能够以很低的成本创作出激动人心的复杂项目,这在几年前几乎是不可想象的。

有了这种变革作为基础,开发者中有越来越多的人在使用树莓派。本书中提供了简单、易遵循的指令,指导你如何在一些复杂而又精密的项目中使用树莓派。有了上述介绍,我们开始制作一些项目吧。

在本章中,你将学到以下内容:● 如何用树莓派改造一辆Xmods遥控小车。● 如何在遥控小车的控制电路中设置断点,然后用树莓派去进行控

制。● 如何使用无线连接为小车增加远程控制。配置树莓派——本项目的大脑

在你正式开始前,需要说明的是,本书的项目使用树莓派B2,这是一种能运行Linux操作系统的微处理器。如下是这个元件的图片,图1-1中已标示出了各个接口。图1-1

因本书涉及的均是高级项目,故此我们认为你对树莓派已有了相当的了解,而且已经在SD卡上烧制了Raspbian/Wheezy系统,通过启动树莓派完成了安装工作。如果你不会也没关系,可以通过访问树莓派的网站https://www.raspberrypi.org/,找到启动并运行树莓派B2的全部说明。

需注意的是,你的系统安装在内存卡(MicroSD)中,内存卡的容量需要至少在8GB以上。因为在接下来的项目中,将会安装一些相当重要的开源软件,你肯定不希望因为内存不够而导致软件运行异常的情况。

一切准备就绪,可以开始做一些项目了。从一辆遥控小车开始,通过本章的实践,你将可以用树莓派的无线连接来取代遥控器并控制小车。对树莓派进行配置和控制遥控小车

你将要制作的第一个项目采用的是一种简易的遥控小车,如图1-2所示。图1-2

这是一种Xmods遥控车,在Radio Shack[1]有售,在零售店或网上商店也可以买到[2]。当然你也可以使用其他类型的遥控小车。采用这种小车的优点在于它的驱动和转向很容易控制。

图1-3显示的是这种小车中间的控制部分。图1-3

你需要直接控制小车的两处连接:一处是驱动电机,另一处是转向单元。这种小车的驱动单元位于车尾处。正常情况下,你会看到两根驱动直流电机的导线。接头位于车尾,看起来像图1-4一样。图1-4

在车的主控部分,可以看到有个接头,接头有两根导线,用来控制小车的速度,如图1-5所示。图1-5

拆除这个插头和这些导线;你将用树莓派和一个电机控制器来为小车的驱动系统提供所需电压。导线上电压的高低将决定电机旋转的快慢;电压的正负极变化将决定电机的转向。树莓派需要提供一个±6V的电压信号,用来控制小车速度和行驶方向。

你还需要取代小车前方转向单元的控制信号,这有一点点困难。图1-6是位于车头的连接插头。图1-6

控制模块的五针连接,图1-7所示。图1-7

关键是了解如何用导线来控制转向。方法是打开这个单元,其内部结构如图1-8所示。图1-8

从图1-8中可以看出来,蓝色、黄色导线(图中圆圈处)连接到直流电机,橙色、褐色、红色导线(图中矩形处)连接到另一个控制电路。电机会驱动车轮正转或反转,电压的极性决定旋转的方向,电压的高低决定了车轮转动的快慢。橙色、褐色和红色导线需特别注意,要探明它们的作用有点困难,可以使用电压表和示波器来了解它们的工作原理。橙色和褐色的导线比较直观,它们分别是接3.5V和接地GND。红色导线是一条控制线,采用PWM(Pulse Width Modulation)技术,输出信号为频率330HZ、占空比为10%的方波信号。它是一个使能控制信号。没有这个信号,转向单元就不能被激活。

一旦你明白了原有小车系统中的控制信号是如何工作的,就可以通过树莓派输出这些信号来控制小车。要达到这个目的,树莓派需提供3.3V的直流信号,一个接地GND信号,一个330Hz、3.3V的PWM信号,以及驱动转向单元的±6V电压。你可以将小车中已有的导线和一些自己买来的导线焊在一起,然后用热缩管包好,从而与小车中原有的插头连接在一起(见图1-9)。图1-9

你还需要连接小车的后轮部分以便驱动小车的两个后轮。图1-10是连接好后看到的样子。图1-10

另外,你还需要把小车的电池连接到树莓派上,让树莓派采用小车的电池电源,图1-11是重新修改连接后的示意图。图1-11

要控制小车,你需要提供小车所需的每个控制信号。±6V的电压信号不能直接取自树莓派。你需要某种电机控制器提供信号来控制小车后轮的驱动和转向单元。提供这些信号最简单的方法是使用电机扩展板,这是种外加的硬件,可以装在树莓派上,并能根据电压和电流为小车的转向和驱动提供动力。可通过网上购买RaspiRobot V2扩展板来满足需求,如图1-12所示。图1-12

欲了解扩展板的详情,可以访问http://www.monkmakes.com/?page_id=698[3]。这块扩展板将提供驱动和转向信号给你的遥控小车。你还需要一个附加的信号,就是用于激活转向单元的PWM信号。下面是把树莓派和这块扩展板相连接的步骤:1. 将电池电源接头和扩展板的电源接头连接在一起,如图1-13所示。图1-131. 接着,连接后轮驱动信号到扩展板上的电机1号接口,如图1-14

所示。图1-141. 连接前轮驱动接头到扩展板上的电机2号接口,如图1-15所示。图1-151. 连接3.3V和GND引脚树莓派的GPIO(General Purpose Input/

Output)接口。图1-16是这些接口的布置图。图1-161. 你需要使用Pin1 3.3V接口连接3.3V信号,Pin9 GND接口连接接

地GND信号。你还需要连接其中的一个GPIO接口,通过320Hz

的频率、占空比10%的PWM信号去激活单元。如图1-17所示为

连接Pin12 GPIO18接口。图1-17

到此,硬件连接已完成。在树莓派中使用Python程序控制小车

硬件已准备好,现在你可以通过树莓派实现所有的功能。首先,安装与扩展板所相关的库文件,这可以在http://www.monkmakes.com/?page_id=698中找到。执行下述步骤:1. 运行命令wget https://github.com/simonmonk/raspirobotboard2/

raw/master/python/dist/rrb2-1.1.tar.gz——该命令可获取所需的库

文件。2. 然后运行tar –xzf rrb2-1.1.tar.gz——该命令将文件解压缩。3. 键入cd rrb2-1.1——改变目录到文件所在位置。4. 键入sudo python setup.py install——安装库文件。

你需要编写一些Python代码,用来控制驱动电机和转向电机。这些代码看起来和下面的差不多(见图1-18)。图1-18

这些代码详细说明如下。● import RPi.GPIO as GPIO:导入RPi.GPIO类库,这个类库允许

你向车头的转向单元发送一个PWM信号。● import time:导入time类库,允许使用time.sleep(number_of_

milliseconds)方法,该方法会产生一个固定的延时。● from rrb2 import *:导入rrb2类库,rrb2类库使你能控制两个直流

电机。这个rrb2就是你刚刚从GitHub下载的库文件。● pwmPin = 18:这将设定PWM接口为GPIO Pin18引脚,它是树莓

派上的物理接口Pin12。● dc = 10:设定PWM信号中的占空比为10%。● GPIO.setmode(GPIO.BCM):设定RPi.GPIO的定义模式为BCM模

式,允许你制定PWM信号的物理接口。● GPIO.setup(pwmPin,GPIO.OUT):设定PWM接口为输出,因而

你能驱动转向单元的控制电路。● pwm = GPIO.PWM(pwmPin,320):在正确的接口上初始化PWM

信号,并设定PWM信号为320Hz。● rr = RRB2():实例化电机控制器的一个实例。● pwm.start(dc):开始PWM信号。● rr.set_led(1):点亮电机控制板上的 LED1。● rr.set_motors(1,1,1,1):设定两个电机同时移动从而使小车

向前行驶。这个命令允许你设定电机正转或反转,以及设置指定

的速度。第一个参数是1号电机的速度,它的范围是从0到1;第

二个参数是1号电机的方向,1是正转,0是反转;第三个参数是

2号电机转速,范围也是从0到1;第四个参数是设定2号电机的

反转和正转,取值1或0。● print("Loop,press CTRL C to exit"):指示用户如何停止运行程序。● while 1:保持循环,直到“Ctrl+C”组合键被按下。● time.sleep(0.075):让程序等待0.075秒。● pwm.stop():停止PWM信号。● GPIO.cleanup():清除GPIO指令并准备关闭。

当你键入sudo python xmod.py运行这个程序后,控制板上的LED1会亮起来,这时候,后轮应该向前旋转,并且转向单元也开始运行。这些行为可以确认全部连接都是正确的。为了让项目更加有趣,你可以通过添加代码实现更多的动态控制。下面是Python代码的第一部分(见图1-19)。图1-19

在开始下一步前,可将Python代码复制到一个新文件,并把该文件命名为xmodControl.py。在这段代码中,你需要一些额外的引用声明[4],用于直接获取键盘的输入,而无须敲击回车键。这会让实时交互更加及时。getch()函数接收实际按键的状态。

其余代码看起来和之前的程序差不多,该程序的第二部分如下所示(见图1-20)。图1-20

代码的第二部分是一个while循环,用来不断获得输入指令并转换为你的遥控小车的命令:前进、后退、向左转、向右转。这个程序相当简单,也许你会想要加入更多的命令,从而提供更多的方式控制速度和方向。远程访问遥控小车

虽然你现在可以控制小车了,但若想要摆脱那些连接线的束缚,实现对小车的远程控制,则还需要添加无线局域网设备到树莓派中。下面我们来学习如何实现这个功能。实现该功能的第一步是安装无线局域网设备。虽然有几种可选的方案来实现,但是我们建议你采用效果较好、参考资料齐全的一种,详情可访问https://learn.adafruit.com/setting-upa-raspberry-pi-as-a-wifi-access-point/overvie来获取。

你现在已能够通过无线接入点连接树莓派。一旦你已创建了无线连接,就可以通过VNC连接登录,通过这种方式你还可以给自己的小车增加一个USB摄像头,这样会让控制更加容易。为达此目的,首先下载一个能支持VNC连接的应用程序。vncserver程序完全可以满足你的需求。你可以在树莓派终端窗口中键入sudo apt-get install tightvncserver命令,将程序安装在树莓派上。

TightVNC Server是一个允许你远程查看完整图形化桌面的应用程序。当你安装了该程序后,就可以通过下述指令进行操作:1. 在树莓派的终端窗口中键入vncserver命令启动服务器。2. 根据提示你需要输入密码并确认,然后系统会询问你是否需要一

个只供浏览的密码。记住你输入的密码,使用VNC Viewer远程

登录时要用到这个密码。3. 在你的远程计算机上要有一个VNC Viewer(连接浏览器),

Windows的用户可选择一个名为RealVNC的软件,它可以在

http://www.realvnc.com/download/viewer/下载。当运行该软件时,

你会看到如下界面(见图1-21)。图1-211. 输入VNC服务器地址,也就是你树莓派的IP地址,然后单击

Connect(连接)。你会看到一个未加密连接的提示警告,选择

Continue(继续),接着你会看到如下的弹出对话框(见图

1-22)。图1-221. 输入你在树莓派上启动VNC服务时所输入的密码,然后你就能看

到树莓派的图形界面了,看起来类似于下面的屏幕截图(见图

1-23)。图1-23

现在你可以访问系统的所有功能。然而,由于传递的是图形数据,因此这些功能的响应速度比较慢。为了避免你在每次启动树莓派时都输入vncserver命令,可以使用http://www.havetheknowhow.com/Configure-the-server/Run-VNC-on-boo t.htm中提供的指令。

VNC服务器也可在Linux上使用。你可以用一个被称为Remote Desktop Viewer(远程桌面浏览器)的软件远程查看树莓派的图形化用户界面(GUI)。如果你还没有安装这个软件,则可以根据你使用的Linux系统版本,通过软件应用升级程序进行安装。一旦你安装了这个软件,执行以下的步骤:1. 运行软件,你可以看到下面的界面(见图1-24)。图1-241. 确认VNC服务器正在树莓派上运行,最简单的方法就是使用SSH

登录,然后在提示下运行vncserver。现在在Remote Desktop

Viewer界面中单击Connect,接着会出现一个窗口,在Protocol选

项下,选择VNC,然后你会看到如下的屏幕截图(见图1-25)。图1-251. 现在输入主机IP地址,确认你在结尾处包括了a:1,然后单击

Connect。还需要输入VNC服务器密码,这个密码是你在树莓派

上第一次运行vncserver命令时输入的密码,如图1-26所示。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载