1. 开箱即玩:你的第一台智能伙伴
要是你心里头对学习机器人编程这点事挺感兴趣, 可是又觉得那些厂子里头的机械手臂, 还有那套特别难搞的ROS系统, 门槛实在是在天上飞, 太高了的话, 那么这架机器人恐怕那就是专门为你一个人量着身体尺寸打造出来的梦中情机。
我第一次把这小家伙拿到手里的瞬间, 心里的那种感觉呀, 简直就像是手里攥着一台不仅能在地上跑动起来, 还能和人叽叽喳喳聊天的、属于树莓派超级魔改版的机器物件。
它本质上是一个人形机器人, 这个机器人内置了树莓派计算核心, 出厂的时候预装了完整的环境和一套强大的控制库, 这样你就不用从零开始去折腾硬件驱动和系统配置, 把电插上就能开始写代码去控制它走路、说话和看东西。
这个东西特别地适合学生, 或者是编程爱好者, 还有教育工作者。你并不需要是电子工程专业的出身, 只要你懂一点点基础的语法, 就可以让它运行起来。它设计的初衷在于降低机器人开发的门槛, 从而把复杂的底层控制, 封装成为一句一句简单的API调用形式。
比如来说, 你想要让机器人说出你好这两个字, 那么只需要编写一行代码“(“你好”)”, 这样就可以了, 所以说这比你的想象中还要简单许多。我一开始进行玩的时候, 花费了不足半天的时间, 就让那个机器人顺利地完成了自我介绍以及一小段简单的挥手动作。
那种满满的成就感是瞬间就涌上心头的。它确实成功地把我们给从那些麻烦复杂的硬件调试任务之中彻底解放了出来, 这使得我们能够更加集中精力去专注地实现各种逻辑设计和创造性的想法。而这才是去学习机器人技术时那种非常正确的开始方式与路径。
那么, 到底能用它来做什么呢? 它能发挥的作用, 完全不是一个简单的玩具所能比拟的。因为树莓派本身具备强大的计算能力, 还有很多接接口可以使用, 所以我们把机身上自带的摄像头、麦克风阵列、几个舵机还有触摸传感器都结合起来用一用, 这样的话, 你就可以用它来实现让人脸识别并且跟着移动的追踪功能了。
你也可以用来做语音对话的交互功能了。你还能让他通过颜色去识别东西然后进行抓取。甚至在更复杂一些的时候, 你还可以让它编排各种各样的舞蹈动作出来。我曾目睹部分学生将其应用于课堂助教场景, 使其能够自动巡视教室;亦有人利用它来构建智能家居控制中枢的模拟环境, 通过语音指令来操控灯光以及相关电器设备。
该产品在实际操作层面具备可观的可玩性, 同时在教学领域拥有显著的附加值, 堪称是一个直观且可触摸的、用于开展人工智能与机器人学相关实验的理想平台。
2. 两种开发模式:总有一款适合你
在拿到机器人之后, 你也许会觉得非常纠结, 不知道究竟应该从哪个具体的地方开始动手撰写代码。请完全不用担心, 因为已经为你准备好了两种非常主流的开发路径, 其中一种比较适合用来进行快速的验证工作, 也适合用于交互式的学习过程, 而另一种则更侧重于那些深度的开发工作以及后续的实际项目部署环节。
我曾经对这两种方式都进行过比较深入的体验和使用, 接下来我就将会把它们的详细步骤以及各自适用的场景逐一地进行拆解和分析展示出来。
2.1 新手福音:基于 的在线编程
这是官方最推荐的、也是上手最快的方式。你可以把它理解成, 机器人自己就带了一个在线的、图形化的代码编辑器。你的电脑、手机或平板, 只要和机器人在同一个Wi-Fi网络下, 就能通过浏览器访问这个编辑器, 直接编写并运行控制机器人的代码。
我把具体的操作步骤呢, 结合我自己之前不小心掉进坑里里面的那些经验和教训, 给你整理出来一个显得更加稳妥一点的整个流程出来:
首先, 你得去检查那个机器人的电量是不是够用的, 这个步骤千万不能够落下, 只有电量充足以后, 才可以让你的机器人进行开机操作。等到你看到或听到启动音效响起来了之后, 你就得拿出你自己的手机或者是笔记本电脑来。然后你去连接那个信号频段为2.4GHz的Wi-Fi网络。
这里有一个非常关键的细节要点需要特别指出, 就是因为很多刚接触这方面的新手朋友们通常会很容易把它给忽略掉。其实关于连接方式, 这个机器人它自己本身会主动创建一个热点信号的, 或者你需要去直接连接到你家里面的路由器上面去的。
更通用的做法是, 让机器人和你的控制设备(手机/电脑)都连接到由同一个路由器发出的2.4G Wi-Fi网络底下。这是后续能够互相发现并且正常通信的一个基础。 接下来需要获取机器人的IP地址, 在网络已经完成连通之后, 按下安装于机器人胸前的那个按钮, 并且对着它清清楚楚地说出“IP地址”这几个字。
机器人将通过语音播报的方式把你告诉它的当前IP地址给报出来, 例如像“192点168点1点105”这样的内容。你务必要将这个数字给深深地记在脑海中。关于访问实验室这回事, 请你直接打开你所使用的电脑浏览器, 然后在地址栏里敲入以 http:// 为开头的链接内容。
机器人IP地址
输入8888这个端口号, 打个冒, 后面再加一个冒和8888, 比如写成这样的形式, :8888, 然后按下回车键。等你完成这一连串动作之后, 眼前就会浮现出大家非常熟悉的Lab界面。这个界面其实是运行在机器人里面的树莓派设备上的。
只要你在这个地方创建一个以.ipynb结尾的笔记本文件, 或者编写一段脚本代码, 那么这些程序都会直接在机器人的硬件本体上边执行计算任务。下面是编写第一个程序的步骤, 你需要在Lab环境下新建一个笔记本文件。接着打开编辑器的第一个单元格位置, 然后在里面输入下面给出的这段代码。
import YanAPIfrom time import sleep
# 初始化连接,这里填写机器人自己的IP地址
ip_addr = “192.168.1.105” # 替换成你机器人播报的IP
YanAPI.yan_api_init(ip_addr)
# 让机器人说话
YanAPI.start_voice_tts(“你好,世界!
我开始学习编程了!”, False)
sleep(2) # 等待播报完成
# 让机器人做一个打招呼的动作(假设动作ID 1是挥手)
YanAPI.do_play_action(1)
当你点击运行单元格的时候, 如果在整个过程中没有出现什么状况, 那么程序就很有可能会先完成说话的动作, 然后才做出挥手的动作。这种交互的方式是非常特别的, 它能够让你一边进行写作, 一边去进行测试操作, 并且可以立刻就看到最终的实际效果是什么样子, 这一点是非常适合用来进行学习或者调试程序的环节。
你要多加小心才行, 因为有时候浏览器很有可能会给出一个提示说那个连接是不安全的, 这个现象出现的主要原因是因为系统默认使用的是HTTP这种方式。
你遇到这种情况的时候, 直接去点击“高级”这个选项, 然后选择继续访问网站就行。除此之外, 你还得要确保电脑上的防火墙软件并没有把8888端口给拦截掉或者是阻止掉。
2.2 高手之路:本地IDE远程开发与调试
当你已经习惯了那种便利, 并且开始着手开发规模更庞大的复杂项目之际, 你很可能会感到一种不便, 觉得在网页环境中直接书写代码的做法不够高效, 特别是在你迫切需要使用诸如智能代码提示以及版本管理这些功能的时候, 而这些功能在你的本地环境中往往依赖于你所熟悉的专业工具软件来进行支撑, 在此时当下, 那种采用本地开发配合远程部署的第二种方案做法便会发挥其作用。
这种方法的原理是,先用SSH即安全外壳协议登录到机器人里面的树莓派系统, 再把核心的SDK也就是模块复制到你的本地电脑上, 这样的话, 你就能够在本地IDE里面编写代码, 从而享受到一个完整的开发环境, 最后再把写好的脚本上传给机器人去运行, 或者直接用网络API来呼叫远程执行。
我在这里一步一步地带着你, 将这个过程完全地进行展示。
SSH登录机器人:打开你电脑的命令行终端(用CMD或,Mac/Linux用)。输入命令:ssh pi@