首页>参考读物>公共基础课>心理生活

JavaScript机器人:用Raspberry Pi、Arduino和BeagleBone构建NodeBots
作者 : [美] Backstop Media 瑞克·沃尔德龙 (Rick Waldron) 等著
译者 : 王学昭 刘端阳 等译
出版日期 : 2019-08-27
ISBN : 978-7-111-63508-6
定价 : 99.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 253
开本 : 16
原书名 : Make:JavaScript Robotics
原出版社: Maker Media, Inc
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本书展示使用JavaScript构建响应周围世界的机器人的方法。书中详细介绍使用带有Arduino、树莓派和BeagleBone的开源Johnny-Five机器人库,逐步构建和编程能够漫游、游泳、打字、散步、跳舞、发送提醒、制作音乐、表达情感等的机器人的方法。书中详细说明了项目所需的材料,找到材料的地点以及购买材料的估计成本,并且在计划和排除项目故障的过程中会提供大量帮助,这样你可以轻松地构建本书中的项目。本书深入解读Johnny-Five库、树莓派、Arduino和BeagleBone,非常适合具有JavaScript背景的中级创客。

图书特色

图书前言

Rick Waldron
我喜欢编程和制作。当我发现Chris Will-iams的node-serialport模块(用于Node.js)时,我记得我在想:“现在我可以对我制作的东西进行编程了。”所以我做到了!我贡献了一个Arduino程序,它将光敏电阻传感器值打印到开放的串口和一个小的JavaScript处理程序,该程序监听数据并向终端打印“图形”。几个月后,我开始投身Cam Pedersen的duino项目,直到Julian Gaultier就他对Firmata协议的JavaScript实现向我求助。从那时起,我们开始构建一个高级零件类集合,目标是:让使用JavaScript控制硬件变得简单而有趣。 本书将向你展示我们构建的内容以及如何使用它来编写你所制作的东西。
虽然设计硬件项目的物理挑战与用任何其他语言编程的项目相同,但本书将以直观设计的接口形式,展示根据维护状态和提供控制行为的对象来思考硬件的方法。
那么,如何口头描述将LED添加到项目然后再打开?你可能会说:“将LED连接到地和引脚9,然后将其打开。”使用Johnny-Five框架,可将其写为:

如何连接伺服体然后将喇叭设置为特定角度(以度为单位)?“将伺服连接到引脚10并将其喇叭定位到110°。”如以下代码所示:

这些示例都解释了输出,但是输入呢?考虑一下Arduino程序是如何工作的:它们通常依赖于程序循环,并且在读取和处理输入时经常会引入某种形式的延迟。这意味着你的Arduino程序在等待输入时会被阻止。在JavaScript中编写程序时,永远不会阻止该过程。事实上,你的处理程序等待数据到达并异步处理Arduino程序:

这些都是微不足道的示例,但它们说明了你将在本书中反复重复的模式。 每个项目都将向你展示如何在物理意义上构建它,然后在抽象编程意义上构建它,后者将与前者同步。
有了这些概念,你将构建和编程:
步行机器人、打字机器人、节点船和PiDuino5移动机器人平台(第1章至第4章)
六足机器人(第5章)
声控继电器控制(第6章)
室内日晷(第7章)
万圣节恶搞灯光秀、桌面心情灯或照明装置(第8章至第10章)
安全和通知系统(第11章)
蝙蝠机器人(第12章)
三角洲机器人(第13章)
喵喵鞋(第14章)
对我来说,本书最令人兴奋的部分是作者本人。这个小组是NodeBots社区成员的绝佳代表,从一开始就脱颖而出。他们不仅仅是作家或工程师,他们还是教师、传播者、领导者,在我看来他们是英雄。毫不夸张地讲,如果没有他们我就不可能完成本书。
让我们少一些言语,多一些实践。不必按任何特定顺序完成这些项目,请查看目录,找到一个看起来很有趣的项目,然后开始构建!
排版约定
本书使用以下印刷约定:
斜体
表示URL、电子邮件地址。
等宽字体
用于程序列表。
等宽粗体
显示应由用户按字面输入的命令或其他文本。
此图标表示提示、建议或一般说明。
此图标表示警告或注意。
每章中的零件号使用以下缩写:
MS: Maker Shed(http://makershed.com)
AZ: Amazon(http://amazon.com)
AF: Adafruit(http://adafruit.com)
SF: SparkFun加代码Xii 1(http://sparkfun.com)
使用代码示例
本书可以帮助你完成工作。通常,你可以在程序和文档中使用本书中的代码。 除非你复制了大部分代码,否则无须与我们联系以获得许可。例如,使用本书中的多个代码块编写程序不需要获得许可。销售或分发Make:系列图书中的示例CD-ROM需要获得许可。通过引用本书和引用示例代码来回答问题不需要获得许可。将本书中的大量示例代码合并到产品文档中需要获得许可。
我们感谢但不要求你列出引用出处。出处信息通常包括标题、作者、出版商和ISBN。例如:“Make: JavaScript Robotics 由Jonathan Beri、 Donovan Buck、 Julian David Duque、 Andrew Fisher、 Lyza Danger Gardner、 Anna Gerber、 Sara Gorecki、 Susan Hinton、 Bryan Hughes、 Kassandra Perch、 David Resseguie、 Emily Rose、 Pawl Szymczykowski、 Raquel Velez以及Rick Waldron (Maker Media)撰写。版权归Backstop Media所有, ISBN978-1-4571-86950。”
如果你认为你对代码示例的使用超出了许可范围,请随时通过bookpermissions@maker media.com与我们联系。
Safari在线电子书
Safari Books Online是一个按需数字图书馆,以书籍和视频形式提供来自世界领先的技术和商业作者的专业内容。
技术专业人员、软件开发人员、网页设计人员以及商业和创意专业人员可以使用Safari Books Online作为研究、解决问题、学习和认证培训的主要资源。
Safari Books Online为企业、政府、教育和个人提供一系列计划和优惠的价格。
会员可以在一个完全可搜索的数据库中访问数千本书籍、培训视频和预发布稿件,数据库来自O’Reilly Media、Prentice Hall Professional、Addison-Wesley Professional、Microsoft Press、Sams、Que、Peachpit Press、Focal Press、Cisco Press、John Wiley&Sons、Syngress、Morgan Kaufmann、IBM Redbooks、Packt、Adobe Press、FT Press、Apress、Manning、New Riders、McGraw-Hill、Jones&Bartlett、Course Technology,等等。有关Safari Books Online的更多信息,请在线访问我们。
本书中所有示例的源代码都可以在以下网址找到:https://github.com/rwaldron/javascript-robotics。
如果你认为你对代码示例的使用不合理或超出上述许可,请随时与我们联系permissions@oreilly.com。
致谢
Julián Duque
NodeBots就是在学习的同时享受乐趣,对我而言,这是一种实现社会影响的方式。一切都始于2013年的NodeConf,这是我第一次在由Rick Waldron和Raquel Velez指导的NodeBots研讨会上使用Johnny-Five。我的第一次尝试是用压电蜂鸣器,但当时图书馆不支持Piezo课程,所以我向Rick请教如何使用它,Rick对我说:“我无法使其工作,自学怎么样?”从此,我开始致力于完成这个项目。另外,Raquel给了我第一个Arduino套件作为礼物并告诉我:“带上这个套件,实践你在哥伦比亚学到的东西。”这件小事振奋人心,我在哥伦比亚的Medellín开始了我的NodeBots篇章。我还通过研讨会和谈话的方式,在乌拉圭、危地马拉和墨西哥帮助建立社区。我非常感谢Rick和Raquel,是他们鼓舞我并让我成为这场创客革命的一部分。

上架指导

计算机\程序设计

封底文字

JavaScript不仅是Web的编程语言 ,还是是编写异步程序最简单的语言之一。正如在管理动态用户界面时,Web应用程序需要在后台与Web服务器进行交互一样,机器人需要在等待指令或寻找障碍时考虑进展情况。本书展示使用JavaScript构建响应周围世界的机器人的方法。
使用带有Arduino、树莓派和BeagleBone的开源Johnny-Five机器人库,逐步学习构建和编程能够漫游、游泳、打字、散步、跳舞、发送提醒、制作音乐、表达情感等的机器人的方法。
第一作者里克·沃尔德伦(Rick Waldron)发明了Johnny-Five,并且已经招募了14位顶尖程序员组成团队,与你分享他们热衷的JavaScript机器人项目。

书中详细说明了项目所需的材料,找到材料的地点以及购买材料的估计成本,并且在计划和排除项目故障的过程中会提供大量帮助,这样你可以轻松地构建本书中的项目。

在本书中,你将构建:

» 步行机器人、打字机器人、游泳机器人和漫游机器人

» 会跳舞的六足机器人

» 声控继电器控制

» 室内日晷

» 假日、心情或者“任何时间”照明

» 安全和通知系统

» 基于声呐的人工智能

» 三角洲机器人

» 音乐鞋

一旦掌握了这些项目,你就可以制作出想象到的任何机器人了。 本书详细解读Johnny-Five库、树莓派、Arduino和BeagleBone的可能性,非常适合具有JavaScript背景的中级创客。

想想JavaScript与硬件会碰撞出什么!

译者序

群体智慧是共享集结众人的意见进而转化为决策的一种过程。它是从许多个体的合作与竞争中涌现出来的,在细菌、动物、人类以及计算机网络中形成,并以多种形式协商一致的决策模式出现,本书的翻译就是群体智慧最好的体现。
MBH群体翻译(https://www.mbh.ai/translate)与凯文·凯利在《失控》一书中所描述的蜂巢思维有着异曲同工之妙。我们的译者来自全国各地,虽然大家社会身份不同,但团队分工明确;MBH群体翻译打破传统意义的束缚,让翻译工作不再单一无趣,译者之间的地理与空间已经无关紧要,重要的是有共同兴趣爱好的译者在同一个虚拟的世界中的即时交流。为了让大众可以更好地理解书中的内容,译者们全身心投入到翻译工作当中,通过不断推敲,让文字更适合受众的思维。
参与本书翻译的译者(按译者姓氏笔画排序)包括:王学昭、曲岩、刘端阳、李建伟、陈成坤、尚智豪、耿宁子、康世豪。愿每个读者都有一个美好的阅读之旅。

译者
2019年6月

图书目录

译者序
前言
第1章 用Lo-tech材料建造机器人 1
1.1 构建SimpleBot 2
1.1.1 材料单 2
1.1.2 构建步骤 3
1.1.3 安装Node.js包 5
1.1.4 使用基本程序测试构建 6
1.1.5 故障排除——接线 6
1.1.6 一个简单的驱动程序 7
1.1.7 故障排除——伺服电机 9
1.2 切断电源线 10
1.2.1 构建无线SimpleBot 10
1.2.2 连接 10
1.2.3 控制SimpleBot 11
1.2.4 疑难解答 14
1.3 进一步探索 15
第2章 TypeBot 17
2.1 材料清单 18
2.2 剖析机器人手臂 19
2.2.1 设计手臂 19
2.2.2 约束手臂 19
2.3 构建硬件 20
2.3.1 底座和肩膀 20
2.3.2 肘部 21
2.3.3 腕部 22
2.3.4 手指 23
2.3.5 脑部 23
2.4 编写软件 24
2.4.1 创建项目文件 24
2.4.2 控制伺服 24
2.4.3 初始化 27
2.4.4 按键排序 29
2.4.5 首次运行 31
2.4.6 微调手臂 32
2.5 进一步探索 32
第3章 节点船 33
3.1 材料清单 33
3.2 潜艇电机吊舱 34
3.2.1 为什么要使用电机驱动器 35
3.2.2 电机吊舱零件 35
3.2.3 修改电机 36
3.2.4 测试电机 36
3.2.5 完成电机 36
3.2.6 插入电机 37
3.2.7 打孔 38
3.2.8 关闭电机吊舱 39
3.2.9 电线的防水 39
3.3 安装Spark核心板 39
3.4 第一个Spark项目 40
3.5 焊接电机驱动器 42
3.6 给小船接线 42
3.6.1 给电机驱动器供电 43
3.6.2 连接Spark核心板和电机驱动器 44
3.6.3 连接电机 44
3.7 电机的控制:代码 45
3.7.1 添加按键事件 46
3.7.2 记录按键状态 47
3.8 船体装配 48
3.9 伺服系统 49
3.9.1 伺服系统编程 50
3.9.2 安装方向舵 52
3.10 启航 52
3.11 进一步探索 53
第4章 piDuino5移动机器人平台 55
4.1 材料清单 55
4.2 安装开发板和软件 56
4.2.1 在树莓派上安装Node.js 57
4.2.2 下载piDuino5代码和依赖项 57
4.2.3 插入Arduino 57
4.2.4 通过WebSockets测试Johnny-Five 57
4.2.5 浏览app.js 58
4.2.6 初始化Johnny-Five 58
4.2.7 控制硬件 59
4.2.8 使用WebSockets进行低延迟控制 59
4.2.9 从任何地方连接 59
4.3 装配硬件 60
4.4 用智能手机控制 61
4.4.1 下载piDuino5 Web应用程序 61
4.4.2 将localtunnel发布到Web应用程序上 61
4.4.3 在手机上试用Web应用程序 62
4.5 浏览app.js和index.html 62
4.5.1 存储localtunnel地址和前端 62
4.5.2 服务用户界面 62
4.5.3 触摸屏操纵杆 63
4.5.4 建立连接 63
4.5.5 发送命令 63
4.6 进一步探索 64
第5章 用Johnny-Five控制六足机器人 65
5.1 材料清单 65
5.2 从命令行控制机器人 66
5.3 phoenix.js简介 66
5.4 组装机器人 68
5.4.1 准备底盘 68
5.4.2 安装电子产品 68
5.4.3 准备伺服 69
5.4.4 安装髋关节 69
5.4.5 安装股骨 70
5.4.6 安装胫骨 70
5.5 坐标系统 71
5.6 修整伺服 71
5.6.1 修整髋关节 71
5.6.2 修整股骨 72
5.6.3 修整胫骨 73
5.7 为伺服添加范围 73
5.8 步行不易 74
5.9 认识动画类 75
5.9.1 一个伺服数组作为对象 75
5.9.2 一个Servo.Array作为对象 75
5.9.3 一个Servo.Arrays数组作为对象 75
5.10 第一个动画片段 76
5.11 步行 78
5.11.1 行步态 79
5.11.2 走步态 80
5.11.3 跑步态 80
5.12 转弯 81
5.13 命令参考 81
5.14 进一步探索 81
第6章 构建语音控制的NodeBots 83
6.1 材料清单 84
6.2 构建项目 86
6.3 构建一个继电器电路 86
6.4 构建麦克风前置放大器电路 88
6.5 构建命令服务器 90
6.6 使用Web Speech API进行简单的语音控制 92
6.7 整合命令服务器与继电器电路 94
6.8 使用Android可穿戴设备的高级语音控制 95
6.8.1 Android移动应用 96
6.8.2 Android Wear应用 101
6.9 进一步探索 104
第7章 室内日晷 105
7.1 材料清单 105
7.2 开始制作日晷 108
7.3 制作和组装核心结构 108
7.4 连接和设置伺服 109
7.4.1 连接伺服 109
7.4.2 设置伺服 110
7.5 制作底座 111
7.6 制作圆盘 111
7.7 制作底座包围和日晷圆盘支撑 112
7.7.1 制作底座的包围 112
7.7.2 放置圆盘 113
7.7.3 制作日晷圆盘的支撑 114
7.8 完成所有零件的装配 115
7.8.1 制作方位臂 115
7.8.2 制作立面弧 116
7.8.3 切割晷针 117
7.8.4 连接由LED模拟的“太阳” 117
7.9 编写代码并控制日晷 118
7.9.1 理解sundial.js文件的代码 119
7.9.2 在sundial.js中添加配置选项 120
7.9.3 sundial.js的具体细节 120
7.10 组装所有零件 122
7.11 实现目标 123
7.12 进一步探索 123
第8章 万圣节恶搞灯光秀 125
8.1 材料清单 125
8.2 背景 126
8.3 组装LED点阵 127
8.3.1 所需工具 127
8.3.2 准备 128
8.3.3 连接控制器与LED点阵 129
8.3.4 装饰LED 132
8.3.5 疑难解答 133
8.4 控制LED点阵 133
8.4.1 准备Arduino开发板 133
8.4.2 运行测试程序 133
8.4.3 Matrix构造函数选项 133
8.4.4 控制LED点阵显示 134
8.5 开发Web应用程序 134
8.5.1 开发工具 135
8.5.2 使用express-generator 135
8.5.3 开发API 135
8.5.4 添加用户界面 137
8.5.5 扩展应用程序 138
8.6 进一步探索 138
第9章 CheerfulJ5 139
9.1 材料清单 139
9.2 接线电路 140
9.3 CheerfulJ5代码 141
9.3.1 连接到Arduino 141
9.3.2 控制RGB 142
9.3.3 使用Node.js Read-Eval-Print循环 143
9.3.4 定义CheerLights颜色图 143
9.3.5 访问CheerLights ThingSpeak API 144
9.3.6 使用Twitter Streaming API 146
9.4 使用Spark WiFi开发套件实现无线连接 149
9.4.1 将Spark添加到你的电路中 149
9.4.2 使用Spark-io IO插件 150
9.4.3 切换到电池电量 151
9.5 打包 151
9.6 进一步探索 152
第10章 使用BeagleBone Black的交互式RGB LED显示屏 153
10.1 材料清单 154
10.1.1 BeagleBone Black 154
10.1.2 WiFi USB适配器(可选) 154
10.1.3 外部5V电源 (半可选) 154
10.1.4 RGB LED 155
10.1.5 传感器 155
10.1.6 其他 155
10.2 准备:软件 155
10.2.1 LEDScape 155
10.2.2 连接LED 156
10.3 连接RGB LED 156
10.4 使用JavaScript编写代码 158
10.4.1 运行测试脚本 159
10.4.2 添加Johnny-Five / Beaglebone-io 161
10.4.3 添加光敏电阻 163
10.4.4 用加速度计改变颜色 164
10.5 进一步探索 167
第11章 物理安全、JavaScript和你 169
11.1 简易超声波传感器项目:实验控制测试(SUSPECT) 169
11.2 SMS增强超声波传感器应用:一般实验(SAUSAGE) 173
11.3 进入点监控系统(PoEMS) 175
11.4 激光给敌人和战友都留下深刻印象,谢谢 (LIBERTY) 176
11.5 状态指示器、按钮和二极管(SINBaD) 178
11.6 进一步探索! 181
第12章 人工智能:蝙蝠机器人 183
12.1 人工智能的基础知识 183
12.1.1 遥控机器人 184
12.1.2 半自动机器人 184
12.1.3 自主机器人 184
12.1.4 蝙蝠机器人 184
12.2 材料清单 184
12.3 组装 186
12.4 第1步:远程控制 187
12.4.1 移动机器人 187
12.4.2 控制机器人 189
12.4.3 依赖声呐指向和读数 190
12.5 第2步:自治 191
12.6 疑难解答 195
12.7 进一步探索 195
第13章 三角洲机器人和运动学 197
13.1 材料清单 198
13.2 三角洲结构解析 198
13.3 构建Junky Delta 199
13.3.1 让它移动 203
13.3.2 通过运动学可预测的定位 204
13.4 更复杂的三角洲选项 208
13.4.1 酒保机器人 208
13.4.2 机器人军队 209
13.5 进一步探索 209
第14章 喵喵鞋 211
14.1 材料清单 211
14.2 零件说明 212
14.3 制作传感器插件 214
14.3.1 将传感器焊接到接线上 214
14.3.2 将传感器安装到鞋子中 215
14.3.3 将导线穿出鞋子 215
14.4 连接鞋子 215
14.5 将鞋子连接到Arduino 217
14.5.1 准备接线 217
14.5.2 焊接Arduino 217
14.5.3 将Arduino连接到右鞋上 218
14.6 用Johnny-Five运行代码 218
14.6.1 连接到Johnny-Five 218
14.6.2 设置传感器 219
14.6.3 记录传感器输出 219
14.6.4 示例行为 220
14.7 进一步探索 221
附录A 223

教学资源推荐
作者: (美) 罗伯特 R. 帕加诺(Robert R.Pagano) 匹兹堡大学 著
作者: (美)罗伯特 J. 斯滕伯格(Robert J. Sternberg)塔夫斯大学温迪 M. 威廉姆斯(Wendy M. Williams)康奈尔大学             著
作者: (美) 爱德华 S.诺库格(Edward S.Neukrug)奥多明尼昂大学 R. 查尔斯&
作者: (美) 布雷特 W.佩勒姆(Brett W.Pelham)纽约州立大学布法罗分校 哈特·布兰顿(Hart Blanton)得克萨斯A&M大学 著
参考读物推荐
作者: [英] 汤姆·斯塔福德(Tom Stafford)马特·韦布(Matt Webb) 著
作者: 杨峥 著
作者: 陈苑锋 董雪 马建军 徐守龙 等著