让我们造一个机器人!(译文)
By robot-v1.0
本文链接 https://www.kyfws.com/pi/lets-build-a-robot-zh/
版权声明 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
- 35 分钟阅读 - 17449 个词 阅读量 0让我们造一个机器人!(译文)
原文地址:https://www.codeproject.com/Articles/1115414/Lets-Build-a-Robot
原文作者:DataBytzAI
译文由本站 robot-v1.0 翻译
前言
Are you a developer? … then you can build a robot…
您是开发人员吗? …那么你可以建造一个机器人…
This article will show you how to build a robot.
本文将向您展示如何构建机器人.
介绍(Introduction)
只有过去几年中在沙漠中流浪最孤立的高科技游牧民族才不会注意到我们周围令人惊叹的技术的迅猛发展.这不仅在电子和数字领域,而且在您关注的几乎每个领域..例如,医学,物理学,重工业.就像(Only the most isolated technophobe nomads wandering in the desert for the past few years will have failed to notice the surge and burst of advancements in the amazing technology that surrounds us. This is not only in the electronic and digital space, but in almost every area you look at.. for example, medicine, physics, heavy industry. It’s like the concept of) 摩尔定律(Moores law) 到处都在工作!(is at work everywhere!) 创新的速度似乎每天都在增加,而且至关重要的是,以前只有真正具备专业知识的人才能使用的技术,现在已经由谦虚的凡人开发者掌握了(就是我,如果您正在阅读本文,专栏,可能是您!).我已经玩了一段时间的物联网(IoT)技术了,就像我认为大多数人一样,还没有真正超越"这是一个玩具/乐趣"阶段^我的意思是-太好了,我们在发布后发布了新的RaspberryPI或Intel主板,我们都很兴奋,然后我们与其他大多数人一样^建立了一个媒体中心或类似的中心.这就是我们的物联网冒险的终点^还是? …我是一名工程师,我在Internet规模上创建和构建事物,痒痒挠,对媒体中心感到无聊.所以最近我做了无聊的事…我点了更多的东西:)(The speed of innovation seems to increase by the day, and critically, technologies that were previously only available to those with really specialist knowledge, are now within the grasp of the ever humble mere mortal developer (that’s me, and, if you are reading this column, possibly you!). I have been playing with some IoT (Internet of Things) technology for a while now, and like I think most people, haven’t really got beyond the ‘it’s a toy/bit of fun’ stage … by that I mean - great, we get our new RaspberryPI or Intel board in the post, we are all excited, and then we make … well, the same as the majority of others … a media center or something similar. And that’s the end of our IoT adventure… or is it? … I’m an engineer, I create and build things on an Internet scale, I have an itch to scratch, and I’m bored with my media center. So recently I did what comes naturally when I am bored … I ordered more stuff :)) 请注意,本文是机器人建造冒险的起点-它不是完成的项目.但是,我相信这里提供了足够的概念性信息,使您能够在有空的情况下早晨出发并开始建造!随着项目的进行,我将撰写另一篇(或两篇)文章,其中给出具体说明,以使您能够组队并加入我的机器人大军:P(Note that this article is the starting point for a robot building adventure - it’s not the finished project. However, I believe there is enough conceptual information provided here to enable you to go off and start building in the morning if you had the time available! As I progress the project, I will build out another article (or two) that gives specific instruction to enable you to team up and join my robot army :P)
构想(Hatching the Idea)
最近,我接受了各种电子零件的交付,使我能够基于以下内容制造玩具车/汽车/任何东西(它有轮子,会运动!).(I recently took delivery of various electronic parts to enable me to build a toy vehicle/car/whatever (it has wheels, it moves!), based on the) 树莓派(RaspberryPI) …这很酷,而且很可行.我也打算添加一个摄像头,然后将其流回手机之类的东西^为什么? ^好吧,我最初对这种自主的事物有一个很好的理解,就是在花园里徘徊,追逐家养的鸡,找出它们产卵的地方^.(… that was cool enough, and quite doable. I was going to add a camera as well, and let it stream images back to a phone or something … why? … well, I originally had a great concept about this autonomous thing wandering around the garden chasing after the family chickens and finding out where they laid their eggs….) 如果您有鸡,或认识某人的鸡,您会意识到,当所有家庭鸡(在我们的情况下,其中有六只)决定在产蛋时走动时,这是个大问题,而您找不到位置他们为(If you have chickens, or know someone with chickens, you will realize that it’s a big problem when all of the family chickens (in our case, six of them), decide to go awol at laying time, and you can’t find where they laid their eggs for)连续四天(four days in a row).相信我,那是很多鸡蛋可以吃!无论如何-让我们暂时搁置这个想法.(. Believe me, that’s a LOT of eggs to eat! Anyway - let’s park that idea for the moment.) 我们都已经看到各种家用和工业/商业机器人进入市场.它们通常是巨大的预算,昂贵的东西,而这些东西在经济上几乎是无法承受的,或者它们的功能如此有限以致几乎没有用.有趣,的确令人着迷,但是却毫无用处.在今年(2016年)五月底,华硕在(We’ve all seen various household and industrial/commercial robots come to the market. They are generally big budget, expensive things that are mostly out of reach financially, or so limited in their functionality as to be almost useless. Interesting, and indeed fascinating, but quite useless. At the end of May of this year (2016), Asus launched its own first stab at a) 家用机器人(household robot) 我以为-哇,那很可爱,实际上,建造起来并不难…当然,我们在家里建造的东西可能不像华硕卖的很酷的东西那么精致或光滑,但可以肯定的是类似的功能,如果不是更多!(, and I thought - wow, that’s cute, and actually, not that difficult to build… sure, what we might build at home may not be as polished or slick as the cool thing Asus sells, but it sure as heck could have similar functionality, if not more!) 所以-可爱的小家伙,是吗? …他没有手臂或手段做任何身体上的事情-他(她/它?)可以走动,并用头部与您互动…好吧,但这不是头部-是平板电脑风格的结合屏幕,麦克风和摄像头.的(So - cute little guy, eh? … he has no arms or means to do anything physical - he (she/it?) can move around, and interacts with you using its head … ok, but it’s not a head - it’s a combination of a tablet style screen, microphone and camera. The) 广告(advertisement) 华硕为其机器人准备的产品非常值得一试,但通过它的使用确实可以使人对设备的功能和功能有很好的感觉.通过查看并阅读一些内容,以下是我的理解:(that Asus have for their robot is quite cringe-worthy, but going through it does give a good feel for the capabilities and functionality of the device. From looking at that and reading a little, here is what my understanding is that it can do:)
- 独自在家中移动(move around your home (on its own))
- 避免障碍(avoid obstacles)
- 使用车载摄像头"观察"并识别某些物体(‘look’ using its onboard camera, and identify certain objects)
- 使用语音(板载扬声器)与您进行"交流"(‘communicate’ with you using its ‘voice’ (onboard speaker))
- 使用"耳朵"(板载麦克风)“听"您和您的"命令”(‘listen’ to you and your ‘commands’ using its ‘ears’ (onboard microphone))
- 脸部"显示"事物(板载平板电脑/屏幕)(‘show’ you things with its face (onboard tablet/screen)) 显然,如果我们具有上述基本功能,并通过一些基于板载和云技术的支持,那么这个可爱的小机器人可能会变得非常有用.因此,让我们来谈谈我们如何谦虚地开发人员,他们可能以建立网站或企业为生,甚至可以开始以接近疯狂的机器人技术和电子世界^这看起来可能很吓人,但事实并非如此.开始,看看我们如何实现它… <(Clearly if we had the above basic functionality, and backed it up by some onboard and cloud based technology, then this cute little robot can start to be quite useful. So let’s talk about how we humble developers, who perhaps build websites or enterprise stuff for a living, can even start to approach the mad crazy world of robotics and electronics… it may look scary, but it’s not really .. let’s get started and see how we can make it happen…<)
分解成基础(Breaking It Down to Basics)
我认为可以肯定地说,大多数开发人员都可以构建自己的计算机.我的意思是这些天,这就像指向和单击一样简单…除了它更像是"推"(插入插槽)和(等待)单击…获得主板,坐在CPU中,单击一些内存,将电缆从主板连接到硬盘驱动器和电源,您已经准备就绪.安装操作系统后,作为开发人员,我们将花时间处理一种或多种API,以构建可在计算机上运行的应用程序.好吧,猜猜是什么-使用电子设备和构建事物并没有太大不同..因此,让我们看一下事物如何工作,假设我们真的只是(I think it’s safe to say that most developers would be able to build their own computer. I mean these days, it’s as easy as point and click … except it’s more like ‘push’ (into a slot) and (wait for the) click… get a motherboard, sit in the CPU, click in some ram, connect cables from the motherboard to the hard-drive and the power-supply, and you’re pretty much ready to go. Once you install the operating system, as developers we then spend our time working with APIs of one kind or another, building applications that run on the computer. Well, guess what - working with electronics and building things isn’t that much different .. so let’s take a look at how things might work, assuming we are really only)(有点儿)((kind-of))建立一台电脑!(building a PC!)(但这实际上是一个机器人,嘘!)((but it’s actually a robot, shhhh!))
1-主板(1 - The Motherboard)
由于我们来自在操作系统之上开发软件的世界,因此,这是物联网世界中最简单实用的工具包之一(Since we come from the world of developing software on top of an operating system, one of the easiest and useful pieces of kit in the world of IoT)**((() 物联网(Internet of Things) )())**与之合作的是令人惊叹的RaspberryPI(R-PI).这台自包含的小型计算机可以运行不同版本的Linux,也可以运行一个名为Windows IoT Core的Windows 10版本.你甚至可以(to work with is the amazing RaspberryPI (R-PI). This self contained mini computer can run different versions of Linux, and also, amazingly, a version of Windows 10 called Windows IoT Core. You can even) 在Microsoft商店购买RaspberryPI(buy a RaspberryPI in the Microsoft store) - 很酷. RaspberryPI主板由多个USB插槽之一供电.除了电源插槽外,还有其他插槽可用于连接USB设备,例如网络摄像头,WiFi加密狗,键盘,存储设备,传感器-如果是USB,则应该连接.在下图中,您可以看到RaspberryPI设备及其USB端口.背面有四个标准尺寸的端口(此图像的右侧),如果您查看图像的左下方,您会看到小型USB电源端口.迷你USB端口旁边是一个HDMI端口-我们可以使用它来驱动显示器.(- very cool. The RaspberryPI motherboard is powered by one of a number of USB slots. In addition to the power slot, there are also other slots that you can use for connectivity to USB devices, like Webcams, WiFi dongles, keyboards, storage, sensors - if it’s USB, it should connect. In the image below, you can see a RaspberryPI device and its USB ports. There are four standard sized ports to the rear (right of this image), and if you look at the bottom left of the image, you will see the small USB power port. Right next to the mini-usb port sits a HDMI port - we can use that to drive a display.)
2-GPIO-与设备对话的网关(2 - GPIO - The Gateway to Talk to Devices)
除了用于与设备通信的USB插槽外,R-PI还具有所谓的" GPIO"引脚.如果您看上面的图像,则在电路板的顶部/背面,有一排金属钉钉在空中.这些是" GPIO"引脚.从字面上看,它们是金属引脚,固定在一块塑料中,并在其下方连接至主板.我已经多次提到字母" GPIO"-它代表"通用输入输出".如果您愿意,这些引脚是主板上的计算机代码与您决定与外界连接到主板的设备之间的网关.很简单,您可以用相同的方式设置一些CSS,以隐藏DIV显示(例如:set(In addition to the USB slots for communication with devices, the R-PI also has what are called ‘GPIO’ pins. If you look at the image above, to top/back of the board, there is a row of metal spikes sticking up in the air. These are the ‘GPIO’ pins. They are literally, metal pins, secured in a block of plastic, and connected below that to the motherboard. I’ve mentioned the letters ‘GPIO’ a few times - it stands for ‘General Purpose Input Output’. These pins are the gateway if you like, between your computer code on the motherboard, and the devices you decide to connect to the motherboard in the outside world. Very simply, in the same way you can set some CSS to make a DIV display be hidden (e.g.: set) style display:none
),您还可以向引脚发送信号,说"打开或关闭某物…",或"与X设备/组件/传感器进行通信,并向/从X设备/组件/传感器发送/接收指令/信息".(), you can also send a signal to a pin to say “turn something on, or off…”, or ‘communicate with X device/component/sensor and send/receive instructions/information to/from it’.)
为了使事情变得真实-这是一些我们可以在运行W10-IOT的RaspberryPI上运行的C#代码-它只是打开和关闭连接到GPIO端口的LED,使其闪烁:(To make things real - here is some C# code we can run on RaspberryPI running W10-IOT - it simply turns an LED that is attached to GPIO ports, on and off, making it blink:)
要打开LED-(To turn the LED on -) pin.Write(GpioPinValue.Low);
要关闭LED-(To turn the LED off -) pin.Write(GpioPinValue.High);
这是一个小的视觉插图:(Here’s a small visual to illustrate:)
真的就是这么简单…当然,您猜得出来,有一个要学习的API,但是无论如何,每次您使用新的库或Web服务时,您都要这样做-没什么大不了的. (我们将在另一篇文章中讨论其他麻烦的东西,例如电阻器等).因此,如果我们知道使用API,我们可以编写一些简单的代码,然后通过GPIO或USB发送信号,并且可以控制外部的内容,那么我们就可以实现使用代码的飞跃.例如,告诉安装在主板上的小型电动机(通过GPIO)启动和停止,从而使我们的机器人在该位置移动….突然之间,使机器人看起来很可行!(It really is that simple … sure, guess what, there’s an API to learn, but you do that every time you work with a new library or web-service anyway - it’s no big deal. (We’ll talk about the other messy stuff like resistors and such in a different post). So, if we know that using an API, we can write some simple code, and it sends a signal out over the GPIO or USB, and that can control something on the outside, then we can make the leap that we can use our code for example to tell a small motor that is attached to the motherboard (via the GPIO) to start and stop, thus moving our robot around the place…. suddenly, making a robot seems quite feasible!)
3-从外界收集数据(3 - Collecting Data from the Outside World)
由于我们现在知道GPIO可以将指令发送到连接的设备(例如我们的LED或步进电机),因此设想我们也可以获取信息不是很大的飞跃(Since we now understand that GPIO can send instructions out to connected devices (such as our LED or our stepper motor), its not a big leap to conceive that we can also get information back)从(from)连接的设备-这就是"传感器"世界发挥作用的地方.(connected devices - and this is where the world of ‘sensors’ comes into play.) 这个词让它消失了-传感器使我们能够(The word gives it away - sensors allow us to)感(sense)有关世界的信息.我们已经知道我们的移动智能手机中的传感器…触摸屏是传感器,GPS是传感器,加速度计是传感器.所有这些都是可以检测,度量和报告外界信息的事物.我有一本很棒的传感器入门书(information about the world. We are already aware of sensors from our mobile smart-phones … the touch-screen is a sensor, the GPS is a sensor, the accelerometer is a sensor. All these are things that can detect, measure, and report on information in the outside world. I have a great introduction book to sensors ‘) 制造:传感器(Make: Sensors) :使用Arduino和Raspberry Pi’监控现实世界的动手入门.这是一本很好的读物,值得一读.尽管还有更多领域,但本书描述了传感器可以涵盖的一些领域:(: A Hands-On Primer for Monitoring the Real World with Arduino and Raspberry Pi’. It’s a great read and worth getting. While there are many more areas, here are some of the areas the book describes that sensors can cover:)
- 距离(Distance)
- 烟气(Smoke and gas)
- 触摸(Touch)
- 运动(Movement)
- 光(Light)
- 加速度和角动量(Acceleration and angular momentum)
- 身分识别(Identity)
- 电力(Electricity)
- 声音(Sound)
- 天气和气候(Weather and climate) 出门购买传感器很容易,但也最好停下来思考一下,并了解它们的工作原理,这将帮助您确定最适合您的特定应用的传感器.例如,让我们看两个.(It’s easy to just go out and buy sensors, but it’s good to stop and think about them as well, and understand the basics of how they work - this will help you decide which is best for your particular application. Let’s look at two, for example.)
加速度计(Accelerometer)
(参考:((Ref:) 北极(arcbotics) )()) 加速度计是一个非常简单的概念.我们有一个以某种方式连接或悬挂到"零点"的中心质量.当质量移动时(例如,您摇动手机),质量相对于其零点的位置就会改变.当发生这种情况时,我们既可以记录新的位置,也可以记录变化率,将其简单地组合起来,就可以得出加速度.(The accelerometer is a very simple concept. We have a central mass that is connected or suspended in some way to a ‘point zero’. When the mass moves (e.g., you shake your phone), then the position of the mass in relation to its point zero changes. When this happens, we can record both the new position, and the rate of change, simplistically combined, this gives us the rate of acceleration.)
压力(Pressure)
压力传感器有很多不同的类型-从最基本的角度来说,我们有两个可以触摸并建立连接的对象,但是它们之间的距离使它们彼此分开.在此示例中,我们用两小块橡胶将金属分开.在默认状态下,两块金属之间没有连接,因此默认状态为(There are many different types of pressure sensor - at its most basic, we have two objects that can touch, and make a connection, but are separated by something that keeps them apart. In this example, we have two pieces of metal, held apart using a small piece of rubber. In the default state, there is no connection between the two pieces of metal, so the default state is) OFF
.(.)
当向设备顶部施加压力时,橡胶会弯曲,从而使两部分金属连接起来,从而形成电路.现在(When pressure is applied to the top of the device, the rubber flexes, allowing the two bits of metal to connect, thus creating a circuit. Now)连接(the connection)在两块金属之间(between the two pieces of metal)被制造(is made,)并且电路状态为(and the circuit state is) ON
.(.)
(参考:我和((Ref: me and) ms画图(ms-paint) !)(!))
样品传感器(Sample Sensors)
此处的信息是考虑您要实现的目标,然后查看可以使用哪些传感器来帮助您.有些传感器的工作原理更好,实际上与其他传感器有所不同,因此请研究您的选择.此示例传感器列表为您提供了一个很好的主意-只是(The message here is to think about what you are trying to achieve and then look at what sensors are available to help you. Some sensors work better and indeed differently than others, so investigate your options. This example list of sensors gives you a good idea of what you can get - and it’s only the)尖端(tip of the tip)冰山一角!(of the iceberg!) 为了玩转,只需在网络上搜索"传感器套件",您会发现许多示例.浏览下面播种的传感器列表,您会很快看到许多对这个机器人项目有帮助的传感器,例如,可以使用声音,运动,火焰,爆震,振动,气体,温度和光电传感器的传感器在我自己的机器人项目中(For playing around, just do an Inter-web search for ‘sensor kit’ and you will find many examples. Going through the list of sensors sown below, you will quickly see a number of them that will be helpful in this robot project, for example the sensors for sound, motion, flame, knock, vibration, gas, temperature and photocell could all be used in my own robot project)(这个物联网业务并不令人兴奋!)((ain’t this IoT business exciting!)).(.) (参考:((Ref:) 传感器图像(sensors image) )())
把外面带进…(Bringing the Outside in…)
我认为快速浏览一下我们如何从传感器中获取数据是一件好事.前面我们已经了解了如何通过告诉LED转动来向传感器/设备/组件发送指令.(I thought it would be good at this stage to have a quick look at how we get data back from our sensors. We have already seen earlier how we can send an instruction to the sensor/device/component by telling an LED to turn) ON
要么(or) OFF
.从开发的角度来看,我们已经习惯了这种事情-发布指令,使事情发生.从传感器获取数据以一种我们也很熟悉的模式进行,无论是通过函数还是通过回调/事件.代码的实际实现显然取决于您使用的传感器设备以及用于连接到该设备的库.这是一个小(. We are used to that kind of thing from a development point of view - issue an instruction, make something happen. Getting data from sensors works in patterns we also know well, either through a function, or a callback/event. The actual implementation of code clearly depends on the sensor device you are using, and the libraries you are using to connect to the device. Here is one small) 连接温度传感器的示例(example of connecting to a temperature sensor) .在这种情况下,传感器被识别为系统设备,代码打开与该设备的连接,读取该设备在说什么(关于温度),然后关闭该连接.(. In this case, the sensor is identified as a system device, the code opens a connection to the device, reads whatever the device is saying (about the temperature), and closes the connection.)
#!/usr/bin/env python
import os
import glob
import time
# load the kernel modules needed to handle the sensor
os.system('modprobe w1-gpio')
os.system('modprobe w1-therm')
# find the path of a sensor directory that starts with 28
devicelist = glob.glob('/sys/bus/w1/devices/28*')
# append the device file name to get the absolute path of the sensor
devicefile = devicelist[0] + '/w1_slave'
# open the file representing the sensor.
fileobj = open(devicefile,'r')
lines = fileobj.readlines()
fileobj.close()
# print the lines read from the sensor apart from the extra \n chars
print lines[0][:-1]
print lines[1][:-1]
(代码参考:http://raspberrywebserver.com/gpio/connecting-a-temperature-sensor-to-gpio.html)((Code ref: http://raspberrywebserver.com/gpio/connecting-a-temperature-sensor-to-gpio.html))
在生产中,您可能会用"(In production, you would probably wrap that in a method ‘) GetTemperature
返回单个值的’.(' that returns a single value.)
4-半自动众筹(4 - Semi Autonomous House-Bot)
到目前为止,我们已经探索了我们想做的事情,并且看到通过利用我们现有的开发人员技能并以合理的步骤进行构建,从"有趣的概念"过渡到"哇,这是可能的." “.至少对我来说,这很令人兴奋,但这只是难题的一部分.实际上,我们只看了最初的"餐巾纸背面"设计.在继续进行之前,我们应该考虑将所有这些组件和传感器粘贴到盒子上并称为"机器人"之后会发生什么情况.(So far, we have explored what we want to do, and seen that by leveraging our existing developer skills and building up things in logical steps, it is reasonable to move from ‘interesting concept..’ to ‘wow, this is possible…’. For me at least, that’s exciting, but just one part of the puzzle. Realistically, we have only looked at the initial ‘back of a napkin’ design. Before proceeding further, we should think about what happens after we stick all of these components and sensors onto a box and call it ‘Robot’.) 我们已经通过连接像(We have established that by hooking up a board like the) 树莓派(RaspberryPI) /(/) Arduino的(Arduino) /(/) 伽利略(Galileo) 等等到外部设备和传感器,我们可以弄清楚它如何四处移动,感知事物并足够容易地从A移到B.然而,我们尚未真正看到的是使它变得不仅仅是"便宜的媒体中心"项目的移动等同物.在某些方面,我们要使机器人具有"智能"的处理(我非常小心地使用了这个术语!)非常简单,而在其他方面则非常复杂.它将涉及图像识别,与基于Web的服务的连接,环境意识/分析和语音识别等内容.我说机器人将是半自主的,因为它可以设法完成某些事情并自行解决,但对于其他机器人,则必须依靠在线服务的支持,例如(, etc. to external devices and sensors, we can work out how it can move around, sense things, and get from A to B easily enough. What we haven’t really looked at however are the bits that make it more than simply a moving equivalent of the ‘cheap media center’ project. In some ways, the processing we want to do to give our robot ‘intelligence’ (I use the term very very lightly!) is simple, in others, quite complex. It will involve things like image recognition, connection to web based services, environmental awareness/analysis and voice recognition. I say the robot will be semi autonomous because some things it will manage to do and figure out for itself, but for others, it will have to rely on the support of online services like) Cortana(Cortana) .目的是通过从云端支持设备来最大化我们在地面上可以做的事情,并弥补我们在设备本身的领域内无法做的事情.(. The aim is to maximize what we can do ‘on the ground’, and make up for what we can’t do within the realm of the device itself, by supporting it from the cloud.)
购物清单(The Shopping List)
由于我们现在已经很好地理解了这些概念,因此我们甚至需要构建机器人,让我们看一下我们需要共同努力才能实现的一些具体事项.我将通过查看我以前的反向工程师规范要求来解决这个问题.记住,我将基于Zenbo提出的一般概念(即(Since we now have a good grasp of the concepts, we need to even approach building a robot, let’s look at some of the specific things we need to pull together to make it happen. I’m going to approach this by looking at my reverse engineer specification requirements from earlier. Remember, I’m going to base this bot on the general concept presented by Zenbo, the) 华硕机器人(Asus bot) .(.)
主板(The Motherboard)
我将使用(I am going to use a) 树莓派(RaspberryPI) 作为我机器人的核心.您也可以选择它,也可以从其他供应商那里获得同样功能的产品,例如(as the central piece of my robot. You can choose this as well, or go for the equally capable offerings from other vendors such as) 英特尔(Intel) .我在这个特定时间选择PI的唯一原因是我在房子周围闲散了一些,因此他们也可能会习惯. PI也众所周知,并且受到Windows IoT的支持,因此我可以使用该平台以及(. The only reason I am choosing the PI at this particular time is that I have a few hanging around the house so they may as well get used. The PI is also well known, and is supported by Windows IoT so I can try things out using that platform as well as the) 定制版本的Linux(custom version of Linux) 默认情况下在RaspberryPI上运行.(that runs on RaspberryPI by default.)
身体(The Body)
首先,我将机器人安装到现有的机箱上.根据进展情况,我可能很快需要更改此设置以适应不同的传感器等.我确实希望机器人外观漂亮,但是这是我第一次这样做,因此我旨在获得该功能首先工作,然后再回来,看看我需要做些什么来在其周围安装光滑的机壳.当然,下次我可能会用其他方法(是的,机器人大军来了!),或者我可能希望使用3D打印机寻求适合我需要的定制案例解决方案.(To start with, I will build the bot onto an existing chassis I have. Depending on how things progress, I may quickly have to change this to accommodate different sensors, etc. I do want the bot to be pretty and look nice, but it’s the first time I’ve done this so I am aiming to get the functionality working first, and then come back afterwards and see what I need to do to fit a sleek casing around it. Of course, I might do it the other way around the next time (yes, the bot army cometh!), or I may look to a 3D printer for a custom case solution to fit my needs.)
运动(Movement)
机器人运动有很多方面.(There are a number of aspects to the robot movement.)
-
到处走走(getting around)…我们需要一些东西来搬运机器人本身并使之移动.我可以查看不同的选项,包括轨道,带尾桨的两个轮子或三个/四个(或更多)轮子.因为我希望机器人具有最大的灵活性,所以我将选择四轮选择,并做一些不同的事情.我遇到了一个名为”(… we need something to transport the robot itself and make it mobile. There are different options I could look at, including tracks, two wheels with a tail-dragger, or three/four (or more) wheels. As I want the robot to have maximum flexibility, I am going to go for the four wheel option, and do something a bit different. I came across a small controller board called a ‘) 皮堡(piborg) ‘-它专门设计用于繁重地控制单个伺服器(’ - its specifically designed to do the heavy lifting of controlling individual servos)(使车轮移动的小型电动机)((small motors that move the wheels)),分别.当试图对伺服器的运动进行高级控制时,这既有用又重要.从观看"(, individually. This is both useful and important when trying to have advanced control of movement of servos. From watching a video on ‘) Zeroborg(Zeroborg) “,我了解了"麦克纳姆车轮”,这是一种车轮设计,可以沿任何方向移动,甚至可以向侧面移动! …观看此视频以了解(’, I learned about ‘mecanum wheels’ - these are a design of wheel that allows for movement in any direction, even sideways! … watch this video to see the) Zeroborg侧身移动(Zeroborg moving sideways) 然后您就会明白这个想法-非常酷.我选择的移动零件将是一个位于RaspberryPI顶部的PiBorg控制器的组合,该控制器将连接到四个用于控制灵巧的侧向移动麦克纳姆轮的单独的伺服器.在开始时将所有这些结合起来可能会有些野心,所以我可能会从标准的两轮和尾桨系统开始,但是最终,Zeroborg视频中展示的灵活性是我想要实现的.即使最好的计划也永远无法幸免,所以我们将看看会发生什么!(and you will get the idea - its very cool. My choice of parts for moving around will be a combination of a PiBorg controller, sitting on top of a RaspberryPI, that will be connected to four individual servos controlling the ingenious sideways moving mecanum wheels. Combining all of this at the start may be a bit ambitious, so I may start with a standard two wheel and tail-dragger system, but ultimately, the flexibility demonstrated in the Zeroborg video is what I want to achieve. Even the best of plans never survive first outing, so we’ll see what happens!) 图片参考:http://www.robotshop.com/en/3wd-48mm-omni-wheel-mobile-robot-kit.html(images ref: http://www.robotshop.com/en/3wd-48mm-omni-wheel-mobile-robot-kit.html) http://robu.in/product/a-set-of-100mm-aluminium-mecanum-wheels-basic-bush-type-rollers-4-pieces/(http://robu.in/product/a-set-of-100mm-aluminium-mecanum-wheels-basic-bush-type-rollers-4-pieces/)
-
摇头(Moving the head)…使机器人看起来更舒适的微小事物之一是其"头部"能够移动或倾斜的能力-这个简单的事物似乎给我们带来了某种情感上的联系.即使不增加动作,只需在屏幕上放置具有卡通风格的简单化线条图,也可以为机器人增加"个性".(… one of the tiny things that makes a robot seem more amenable, is the ability for its ‘head’ to move or tilt somewhat - this simple thing seems to give us some kind of emotional connection with it. Even without adding movement, simply putting a cartoonish expressive simplistic line drawing on a screen can add ‘personality’ to a robot.) (参考:((Ref:) 百特(Baxter) )()) 许多(A lot of) 研究(research) 在这一领域已经取得了成就,我们似乎"发现了具有人类魅力的卡通模仿".但是,如果您过分地制造机器人(has been done in this area, and we seem to ‘find cartoonish parodies of humans charming’. If however you go too far into making robots)看起来像人类(look like humans)但是,与这些机器人进行交互的人类会感到不安.看看这个(however, the humans that are interacting with those robots get uneasy. Have a look at this) 有关不可思议的山谷的视频(video about the uncanny valley) 找出更多有趣的东西.(to find out more, interesting stuff.) 为了使磁头运动,我打算将其安装在可以通过"平移和倾斜"伺服机构控制的固定装置上.例如,您已经在CCTV摄像机上看到了这些内容.它使您可以控制上下左右四个轴.这个(To get the head moving, I intend to mount it on a fixture that can be controlled on a ‘pan and tilt’ servo mechanism. You have seen these on CCTV cameras for example. It allows you to control the four axis of up, down, left and right. This) Sparkfun的云台伺服支架(pan and tilt servo bracket from Sparkfun) 清楚地展示了这个概念.有一个可旋转的支架,旋转方向由两个伺服器之一控制,这些伺服器可以单独作用,也可以同时作用以产生流体运动效果.(demonstrates the concept clearly. There is a bracket that swivels, and the swivel direction is handled by one of two servos that can act individually, or in unison to give a fluid movement effect.)
环顾四周/环保意识(Looking Around / Environmental Awareness)
视觉/影像检测(Vision/Image Detection)
除了四处走动,我们还需要能够环顾四周.我们可以使用标准组件摄像头,网络摄像头或类似设备来执行此操作.对于这种机器人,我想使其比遥控汽车更智能,我希望它能够识别事物并进行智能交互.这太多了吗? …不,事实并非如此.使用例如(*Apart from moving around, we also need to be able to look around. We could do this using a standard component camera, webcam or similar. In the case of this robot, I want to enable it to be smarter than a remote controlled car, I want it to recognize things, and interact intelligently. Is this too much to ask? … nope, it turns out its not. Using for example the*) OpenCV的(OpenCV) 将图像识别库挂接到我们的相机中,我们可以使魔术发生.有一个很好的说明,描述了使用(*image recognition library hooked into our camera, we can make magic happen. There is a great instructable that describes using*) 带有摇摄和倾斜摄像头的OpenCV进行人脸跟踪(OpenCV with a pan and tilt camera to do face tracking) .这是另一个展示(. Here is another that demonstrates*) 使用OpenCV和RaspberryPI进行面部识别/匹配(using OpenCV with a RaspberryPI to carry out face recognition/matching) .最后,Sergio Rojas在他的文章中展示了如何使用(. Finally, Sergio Rojas in his article shows how to use a*) .NET wrapper on OpenCV to map names to faces in real time)OpenCV上的.NET包装器可将名称实时映射到人脸( .(.) 面部识别和识别对我们的机器人很重要的原因是,它可以识别家庭成员并给予他们个人关注.我们可以用面部识别做的另一件事是(The reason face identification and recognition is important for our robot, is that it will allow it to identify family members and give them personal attention. Another thing we can do with face recognition is) 从面部表情识别情绪(identify emotion from facial expressions) -对于家庭帮助机器人也非常有用.当然,这不仅关系到机器人生命中的人类,还关系到它所处的环境. OpenCV和其他库在检测(并帮助避免)障碍物以及识别对象方面非常有用.(- also very useful for a home help robot. Of course this is not only about the humans in the life of the robot, its also about the environment it works within. OpenCV and other libraries are extremely useful in detecting (and helping avoid) obstacles, and identifying objects as well.) 在放弃图像识别功能之前,我还想向我正在考虑在项目中使用的另一块板致敬,即(Before leaving image recognition behind, I also want to give a nod to another board I am considering using in the project, the) OpenMV(OpenMV) 板.该专门委员会专门致力于python的机器视觉.引用他们的网页,“使用OpenMV Cam,机器视觉的艰巨而耗时的工作已经为您完成,从而为您留出了更多时间(board. This specialized board is dedicated to machine vision with python. To quote their web-page, ‘with OpenMV Cam, the difficult and time-consuming work of machine vision is already done for you – leaving more time for)创造力’.我认为值得进行一些调查.(creativity’. I think it’s certainly worth some investigation.)
导航,障碍物检测,一般意识(Navigation, Obstacle Detection, General Awareness)
可以通过预先映射区域,固定导航来进行导航(Navigation can be put in place either by pre-mapping out an area, fixing) 信标(beacons) 机器人可以通过导航,也可以让机器人沿着自身漫游并发现自己的环境.后者是一个非常有趣的领域,这篇文章(the robot can navigate by, or by letting the robot toddle along itself and discover its own environment. The latter is a very interesting area to look at, and this article on) 使用RaspberryPI进行机器人制图(Robot Cartography with RaspberryPI) 深入了解其工作原理.(gives great insight into how it works.) 最有可能的是,随着机器人的自动化程度越来越高,我将从第一个开始,然后移至第二个,然后是第三个.无论我使用哪种方法,都需要添加一些有助于导航的传感器-我将考虑以下一些方法:(Most likely, I will start with the first and move onto the second adn then third as I make the robot increasingly more autonomous. Regardless of which method I use, I will need to add in some sensors that will help with navigation - here are some I will consider:) 侦测(Detection):我们可以在软件中使用图像识别和目标检测,但是有时可以,并且需要更多专业传感器的帮助.值得考虑的是例如运动检测器和避障.(: We can use image recognition and object detection in software, but sometimes this can, and needs to be aided by more specialized sensors. Worth considering for example would be a motion detector and obstacle avoidance.)
家居安全(Home safety):从事物的一般意识方面,我倾向于对房屋火灾,煤气泄漏之类的东西有些偏执.因此,将一些安全方面的内容并入机器人中将是很好的.我将安装一个气体传感器,以及一些用于处理热量/火焰的套件.当某人离开浴缸时进行洪水检测也是一件好事.(: On the general awareness side of things, I tend to be a bit paranoid about house fires, gas leaks and such like. For this reason, it would be good to incorporate some safety aspects to the robot. I will be implementing a gas sensor, and some kit to handle heat/flame. Flood detection for when someone leaves on the bath could also be a good thing.)
通讯(Communication)
到目前为止,我们有一个非常不错的技术清单,可以汇总这些技术,以使机器人四处走动并从其环境中获取大量输入.我们尚未触及的是它如何与人类霸主沟通"提示邪恶的笑声!".交流是两方面的事情-我们需要输入,而我们需要能够提供输出.我们的输入中包含了一些传感器和技术,例如图像识别库,但是我们尚未看到的明显输入是语音.我将从两个方面解决这个问题.首先,我可以在机器人上离线进行离线操作,其次,需要将什么移交给基于云的智能支持服务,例如(So far, we have a pretty good shopping list of technologies that we can bring together to make the robot move around and get a lot of input from its environment. What we haven’t touched on yet is how it can communicate with its human overlords «cue evil laugh!». The act of communication is a two way thing - we need input, and we need to be able to give output. We have some of the input covered with a handful of sensors and technology like image recognition libraries, but the glaring input we haven’t looked at yet is voice. I will be tackling this from two fronts. First, what can I do offline, onboard on the robot, and second, what needs to be handed off to a cloud based intelligent support service such as) 微软Cortana(Microsoft Cortana) .为了捕获输入,我将在要使用的网络摄像头上使用内置麦克风开始-根据结果,我可能会或不一定会求助于独立麦克风.小扬声器和屏幕一样有用. RaspberryPI有两个官方相机,一个用于(. To capture the input, I will start off using the in-built mike on the Webcam I will use - depending on how this turns out, I may or may not have to resort to a standalone mike. A small speaker would also be useful, as would be a screen. The RaspberryPI has two official cameras, one for) 正常光线(normal light) 而另一个(and the other does) 红外线(Infrared) -在灯光熄灭时考虑可能有用.值得一提的是-这里有很多事情要做,扬声器,凸轮,屏幕,外部电路板-可能我需要从标准RaspberryPI迈向小步''(- that might be useful to consider for when the lights go down. One other thing to mention - there is a lot going on here, speakers, cams, screens, external boards - it may be that I need to take a small step up from the standard RaspberryPI to the ‘') 计算机模块开发套件(computer module development kit) “.这是一个原型设计套件,旨在进行更繁重的实验.它具有120 GPIO引脚,HDMI端口,USB端口,两个摄像头端口和两个显示端口的额外好处,比核心系统具有更大的灵活性本身.(”. This is a proto-typing kit designed for more heavy experimentation. It has the added bonus of 120 GPIO pins, a HDMI port, a USB port, two camera ports and two display ports, allowing for far more flexibility than the core system itself.) 我可以使用许多不同的屏幕选项,从基本的东西到高分辨率的触摸屏.官方(There are a number of different screen options I could use, from something quite basic, up to a high resolution touch-screen. The official) Raspberry Pi 7英寸触摸屏(Raspberry Pi 7 inch touch-screen) 显示屏与RaspberryPI本身直接集成,并且不需要单独的电源,因此看起来很有趣.该屏幕将用于三个主要方面.首先,它将是机器人的"情感面孔”,当它与人交流时会带有一些生动的表情.其次,它将是一个用于显示信息的显示区域(例如,光滑的天气图,或用于显示美味蛋糕食谱的Web浏览器!).最终,它将用作输入设备,以允许用户在自然语言/语音控制不起作用或根本不适合手头的任务时使用触摸屏与机器人进行通信.(display looks interesting as it has direct integration with the RaspberryPI itself, and does not need a separate power supply. The screen will be used for three main things. First, it will be the ‘emotive face’ of the robot, with some nice animated facial expressions when it is communicating with its people. Second, it will be a display area for showing information (for example, a slick graphic of the weather, or a web browser showing a recipe for a nice cake!). Finally, it will act as an input device to allow the user to use the touch-screen to communicate with the robot when natural language/voice-control is not working, or is simply not suitable to the task at hand.) 扬声器具有相似的性质-我可能会发现一些便宜的USB品种效果很好,或者我可能会得到一些可以在被动模式下工作的东西,也许有一个直接连接到PI Audio插孔的增强器. RaspberryPI-Spy有一篇简短的文章,其中包含要测试的Python代码(Speakers are of a similar nature - I may find that something cheap of the USB variety works well, or I may get something that can work in passive mode, perhaps with a booster, that connects directly into the PI Audio jack. The RaspberryPI-Spy has a short article with Python code to test) 通过连接到raspberry-pi音频插孔的简单廉价扬声器输出声音(sound output through simple cheap speakers connected to the raspberry-pi audio jack) .(.) 网络已经得到照顾-最新的RaspberryPI模型已经内置了很多连接,因此无需担心需要任何其他功能.以下是RaspberryPI版本3的标准提供.(Networking is already taken care of - the latest RaspberryPI model has a lot of connectivity already built-in, so no need to worry about needing any extras. The following is supplied as standard with the RaspberryPI version 3.)
- 802.11n无线局域网(802.11n Wireless LAN)
- 蓝牙4.1(Bluetooth 4.1)
- 低功耗蓝牙(BLE)(Bluetooth Low Energy (BLE))
基本工作完成后,我要看的一件事就是利用从机器人收集的数据.我设想使用(One of the things I will look at once I have the basics working is making use of the data collected from the robot. I envision using the) Azure IoT套件(Azure IoT suite) 在这里协助我(to assist me here.)
为了结束交流,让我向您介绍一个非常酷的开源库,用于语音控制,称为(To wind up the communication end of things, let me introduce you to a very cool open source library for voice control called) 碧玉(Jasper) -这将是我识别用户发出的命令并传递回信息的起点. Jasper在RaspberryPI平台上运行良好.它可以离线执行一些基本操作,具有广泛的API,还可以与在线语音引擎集成,例如由(- it’s going to be my starting point for recognizing commands given by the users and communicating back information. Jasper operates very well on the RaspberryPI platform. It can do some basic things offline, has an extensive API, and can also integrate with online speech engines like the one provided by) 谷歌(Google) . Jasper是执行两项任务的框架.使用各种挂钩,它可以将语音转换为文本,并以其他方式(将文本转换为语音)执行相同的操作.贾斯珀(Jasper)有两个主要功能,称为"(. Jasper is a framework that carries out two tasks. Using various hooks, it can convert speech into text, and do the same thing the other way around (text into speech). Jasper has two main functions called ‘)
Modules
‘.首先是(’. The first of these is the) 标准模块(standard module) .它负责与用户进行主动交互.在标准模块(模式听起来更好吗?!)中,用户(. It is responsible for active interaction with users. In standard module (mode sounds better?!), users)**发起(initiate)**与贾斯珀(Jasper)联系,并要求它做点什么. Jasper截取语音,翻译语音并执行请求的操作.第二个模块是(a contact with Jasper and ask it to do something. Jasper intercepts the speech, translates it, and carries out the requested action.The second module is) 通知(notification) .它的功能是监听/静默监视信息流(例如,Twitter提要或电子邮件帐户),并在标记有要举报的内容时与用户对话(假设您告诉它,以便在收到DM时让您知道在Twitter上!).我已经与Jasper进行了一些初步调查,非常期待使其成为我的机器人项目的基石.要从IoT/家庭自动化的角度真正了解如何使用此库,请花几分钟时间签出(. Its function is to listen/silently monitor an information stream (for example a twitter feed or email account), and to speak to the user when there is something flagged to report (lets say you tell it to let you know whenever you receive a DM on twitter!). I’ve done some initial investigation with Jasper and very much looking forward to making it a cornerstone of my robot project. For a really great overview of using this library from an IoT/home automation point of view, take a few minutes to check out) 劳埃德`贝利(Lloyd Bayley)关于贾斯珀(Jasper)的YouTube视频报告(Lloyd Bayley’s YouTube video report on Jasper) .劳埃德(Lloyd)使用贾斯珀(Jasper)与他的家庭气象站进行通信,告知时间,打开和关闭照明灯-这确实令人鼓舞,值得花几分钟的时间!(. Lloyd uses Jasper to communicate with his home weather station, tell the time, turn on and off lights - its really inspiring and well worth a few minutes of your time!) 在关闭购物清单之前,让我们看一看所有可能适合的商品(感谢华硕的启发!)(Before we close off the shopping list, let’s have a look at where everything might fit (with thanks to Asus for the inspiration!))
规格书(The Specification)
那时-我们已经弄清楚了各个部分如何挂在一起以及我们想利用的技术-如何看待我们真正的机器人朋友要如何处理房屋!(Right then - we have worked out how the individual parts could hang together and the technology we want to utilize - how about looking at what we want our actual robot friend to do about the house!) 这是我整理的入门清单-我敢肯定,当我开始构建并发现不同事物的利弊时,该清单会逐渐演变并延续自己的生活.(Here is a starter list I have put together - I’m sure when I start building and finding out the pros/cons of different things, the list will morph and take on a life of its own.)
-
远程"签到"(Remote ‘Check in’)
- 当我不在屋里时,可以使用移动应用程序或网络来"检查"机器人,并要求它绕着房屋旋转并检查一切正常.例如-今天早上我开会开会,在离开前熨了一件衬衫-我把熨斗插了吗? ..可以将机器人定向到适当的位置,并给我拍照以让我知道.(The ability to use a mobile app or the web, to ‘check in’ with the robot when I am away from the house, and ask it to take a spin around the premises and check things are ok. For example - I had a business meeting this morning and ironed a shirt before I left - did I plug the iron out? .. Robot could be directed to the appropriate location and give me a camera shot to let me know.)
- 也许我出去了一个小时,但被耽搁了,想检查一下家犬是否还好-我可以派机器人去找fido,并检查他没有吃我最喜欢的鞋子!(Perhaps I went out for an hour but got delayed, and wanted to check that the family dog was still doing ok - I could send robot to find fido and check he wasn’t eating my favorite shoes!)
- 您是否把孩子们的杂务清单留在家中? ^让机器人检查他们是否清空了洗碗机并在外面获取新鲜空气,而不是在电视前"看菜".(Did you leave the kids at home with a list of chores? … have Robot check they did empty the dishwasher and are outside getting fresh air and not “vegging” in front of the TV.)
-
远程"警告/警报"(Remote ‘Warning/alert’)
- 您还记得我要安装家用安全传感器.如果机器人感觉到GAS或温度突然升高(起火?),那么他们可以与我联系并提供视频实时更新.(You recall I want to install home safety sensors. If the robot senses GAS or the temperature suddenly rises (fire?), then they could contact me and give me a live update with video.)
- 像窃贼一样将不需要的访客剪断电缆连接到您的警报系统怎么样? …机器人可以对它们进行录像,并向您和当局实时发送警报(由于电线被切断,当然可以通过移动gpr!)(How about unwanted visitors like a burglar who sniped the cables to your alarm system? … Robot could video them and live stream an alert to you and the authorities (over mobile gprs of course since the wires were cut!))
-
留言给…(Take a message to…)
- 由于机器人将具有识别家庭成员的能力,因此使其成为"消息接收者和提醒者"的能力又如何呢?我可以说"机器人,提醒下午6点从车站接我".然后,即使那个家庭成员的电话静音打开,或者正在听大声的音乐或<插入不让我在车站接我的理由>,机器人也可以在房屋中徘徊,找到那个人,然后给他们信息.(Since the robot will have the ability to recognize family members, how about the ability to make it the ‘message taker and reminder’. I could say ‘Robot, remind to pick me up from the station at 6pm’. Then, even if that household member had their phone turned on silent, or were listening to loud music or , the robot could wander through the house, find the person, and give them the message.)
-
便携式亚马逊Alexa(Portable Amazon Alexa)
- 是的,您毫无疑问会注意到,通过添加Jasper库,我们可以开始复制Amazon Alexa或Siri之类的某些功能.(Yup, you will have no doubt noticed that with the addition of the Jasper library we could start to replicate some of the functionality of the likes of Amazon Alexa or Siri, etc.)
-
鸡放牧(Chicken herding)
- 必须完成! …我打算制造至少一个在花园里工作的机器人版本,密切关注鸡,确保它们在夜间栖息(图像检测和自动跟踪鸡的人吗?!),当然,密切注意它们在何处产卵!(This has to be done! … I intend to make at least one version of robot that works in the garden, keeping an eye on the chickens, ensuring they go into roost at night (image detecting and auto-tracking of chickens anyone?!), and of course, keeping an eye on where they lay those eggs!)
我已经列出了自己在研究此项目时找到的供应商/零件的链接列表-(I have included my own list of links to suppliers/parts that I have found while researching this project -) 下载它(download it) 如果您打算跳入类似内容-可能会节省您一些时间.(if you intend jumping into something similar - it might save you some time.)
概要(Summary)
本文的要点是,如果您可以编码,那么您真的可以构建一个机器人! …过去在硬件人员和软件人员之间存在很大的鸿沟-情况不再如此.低成本组件和开源库的可用性使将像机器人这样真正酷的项目组合在一起比以往更加容易.物联网暴跌,谁知道呢,您可能会想出一些可以商业化的东西,投入kickstarter并发家致富.我们是开发人员,我们在开发东西-继续,您知道自己想要的,直到尝试为止永远不会知道:)(The take-away from this article is that if you can code, you can build a robot, really! … There used to be a wide divide between the hardware guy and the software guy - this is no longer the case. The availability of low cost components and open source libraries make it easier than ever before to put together really cool projects like this robot. Take the IoT plunge, who knows, you may come up with something you can commercialize, put on kickstarter and make your fortune. We are developers, we build stuff - go on, you know you want to, you’ll never know ‘til you try :)) 附注:与往常一样,如果您喜欢这篇文章,请考虑投票!(P.S.: As always, if you liked the article, please consider a vote!) P.P.S .:完成投票时,请在此处弹出以轻松查看(P.P.S.: When you’re finishing giving your vote , pop over here for an interesting light look at) 当前的商用家用机器人(current commercial domestic robots) .(.)
历史(History)
- 30(30)日(th)2016年6月-版本1(June, 2016 - Version 1)
- 3(3)rd(rd)2016年8月-更正(August, 2016 - Corrections)
- 5(5)日(th)2016年8月-在代码示例中添加了有关使用传感器的附加说明(August, 2016 - Added additional note on using sensors with code example)
- 6(6)日(th)2016年8月-添加了我在研究此项目时建立的供应商/零件的链接列表(August, 2016 - Added list of links to suppliers/parts I have built up while researching this project)
- 7(7)日(th)2016年8月-添加了链接以报告家用商用机器人(August, 2016 - Added link to report on commercial domestic robots)
- 12(12)日(th)2016年8月-小修正/链接添加(August, 2016 - Minor corrections/link addition)
- 17(17)日(th)2016年8月-小修正/链接添加(August, 2016 - Minor corrections/link addition)
许可
本文以及所有相关的源代码和文件均已获得The Code Project Open License (CPOL)的许可。
Raspberry Linux Dev IoT 新闻 翻译