DuinopeakRobot-Arduino Robot同款机器人

来自Duinopeak_COM
跳转至: 导航搜索

产品简介

   Arduino有轮子了!这是由Arduino官方开发出来的新产品,称为Arduino Robot,而顾名思义,这是一款专为机器人设计而定位的产品。

  来看看它的规格。Arduino Robot由两块圆型的电路板所组成,上层为控制板,拥有LCD面板、四个按钮、一个扬声器、一个数字罗盘和三颗LED;下层为马达驱动板,附上两个轮子、可配置四颗AA电池,以及五颗IR传感器及相应的LED。这两个板子上各有一颗与Leonardo板相同的Atmega32u4处理器(Atmel制造)。
有轮子的Arduino Robot来了
  有了这么一组功能齐备的开发工具包,Maker们将更容易打造出一些机器人原型。不过,对于要求更大设计弹性的玩家来说,可能还是会买个Uno或Leonardo,再配个马达控制扩充板,自行搭配马达、Servo、驱动器来组合吧。不过,Arduino Robot还是切入机器人设计的极佳入门选择。

Duinopeak robot front.jpg Duinopeak robot back.jpg

Arduino官方教学视频

  如果你对这款新产品有兴趣,Arduino创办人Massimo Banzi亲自录制了五集视讯教程,一一探讨这款新式轮式开源硬件的各种特征。本系列教程在意大利罗马的创意嘉年华大会(Maker Faire)上推出,可透过 RS Components 的 YouTube 独家频道观看。主要媒介语为英语,且备有法语、德语、简体中文、繁体中文和日语字幕版本(目前繁体中文版有三部上线了)。

  全套节目共分五集,每集约10分钟,将针对 Robot 使用过程展开轻松的教学之旅。Massimo Banzi 将与 Arduino 的联合创办人 David Cuartielles,以及互动设计师 Xun Yang 一道展示趣味盎然的示例项目:

  • Arduino Robot简介 -- 如何拆包、安装并使用Arduino集成开发环境(IDE)进行Robot程序设计
  • LOGO 和遥控你的 Robot -- 在集成开发环境(IDE)中可从何处找到代码范例,以及如何使用电视遥控器来控制 Robot
  • 避开障碍、创建策略 -- 采取不同的技术检测 Robot 与室内物体之间的距离
  • 追踪直线前去救援 -- 如何使用电机板上的红外线数组传感器来追踪直线
  • 影像与声音 -- 如何使用屏幕以及透过Robot的扬声器来播放声音

链接:Arduino Robot官方视频讲解

Duinopeak优化官方ArduinoRobot

ArduinoRobot自官方推出以来,得到了广大Arduino的热爱与关注,虽然其官方价格昂贵,但是还是有不少爱好者购买用来学习和使用。但是不少使用者发现了官方库的不少缺陷,比如:循迹不流畅,罗盘不能校准,液晶屏显示文字不了等等。Duinopeak本着服务于开源硬件,机器人DIY的爱好者的原则,对Arduino官方库进行了部分优化,使我们的DuinopeakRobot在兼容官方库的情况下,更显优异性能!另外Duinopeak在此基础之上开发了新的应用,后期将不断更新,敬请关注

优化指南针库

官方ArduinoRobot在控制主控板中指南针采用的是HMC6352芯片,这是一个旧版本的数字式罗盘,其只有2轴地球磁场分量,校准性能较差;另外官方提供的指南针库中,也没有对指南针进行校准的相应函数库,所以用ArduinoRobot官方版本电子罗盘要实现精准罗盘定位,在右磁场干扰的情况下,较难实现。 Duinopeak针对Arduino官方的这个缺陷,升级了指南针芯片,修改为现在主流的HMC5883三轴数字罗盘。精度高(1-2度的误差),不会出现磁饱和现象,不会有累加误差;我们重新编写了HMC5883数字罗盘库,并且把函数的接口和官方的函数接口完全一样,只要把我们编写的HMC5883数字罗盘库,覆盖掉官方的即可。我们还在HMC5883库中加入了我们自己编写的自动校准函数,当DuinopeakRobot首次启动指南针的时候,会自动进行校准。

关于指南针库的使用:
1,首先下载本页面下的“资源”目录中的指南针优化库压缩包,然后解压,得到Compass.cpp和Compass.h两个文件。
2,复制Compass.cpp和Compass.h两个文件,替换掉Arduino 编译器安装目录的......\arduino-1.6.4\libraries\Robot_Control\src文件中的Compass.cpp,Compass.h。
3,替换Arduino官方的Compass.cpp,Compass.h后,即可重新打开Arduino IDE,选择Robot_Control\examples\learn\Compass程序,进行指南针的使用验证。

ArduinoRobot learnCompass image1.PNG
4,使用USB线连接PC和第二层控制主控板接口,选择板子类型为Arduino Robot Control,你自己电脑上匹配的COM端口,下载程序到控制主控板中,接着把底层主控板的电源开关打到OFF位置,然后把USB连接线与ArduinoRobot断开;把ArduinoRobot拿到一个比较开阔的桌面,把底层主控板的电源开关打到ON位置,启动ArduinoRobot。
5,启动ArduinoRobot后,我们可以看到,它先右转几圈,再左转几圈,进行罗盘校准,最后,停下来了,在1.8全彩屏上显示了一个数字指南针,如下图,用手推动ArduinoRobot可以看到罗盘指针会变化。
ArduinoRobot CompassDemo image1.jpg


优化循迹功能库

1,首先下载本页面下的“资源”目录中的循迹优化库文件,然后解压,得到lineFollow.cpp一个文件。
2,复制lineFollow.cpp文件,替换掉Arduino编译器安装目录下的......arduino-1.6.4-windows\arduino-1.6.4\libraries\Robot_Motor\src文件中的lineFollow.cpp。
3,替换Arduino官方的lineFollow.cpp后,即可重新打开Arduino IDE,选择Robot_Motor\examples\Robot_Motor_Core程序,进行电机底层库的使用验证。

ArduinoRobot Robot Motor Core image1.PNG
4,使用USB线连接PC和底层电机主控板接口,选择板子类型为Arduino Robot Motor,你自己电脑上匹配的COM端口,下载程序到控制主控板中,这样的话,我们就更改了ArduinoRobot底层电机驱动。接着底层主控板的电源开关打到OFF位置。
5,接下来可以烧写循迹程序来进行验证,使用USB线连接PC和第二层控制主控板接口,选择板子类型为Arduino Robot Control,你自己电脑上匹配的COM端口,选择Robot_Control\examples\explore\R02_Line_Follow程序。

ArduinoRobot exploreLineFollow image1.PNG
6,打开程序后,先别急着下载程序,因为这个程序Arduino官方给的有Bug,所以我们需要修改,当然你也可以直接编译,下载程序到ArduinoRobot Control主控板中,看看会有什么情况。我们会发现有两行文字再液晶屏上显示不出来!就是这两句:

 Robot.text("Line Following\n\n place the robot on\n the track and \n see it run", 5, 5);
 Robot.text("Press the middle\n button to start...", 5, 61);


ArduinoRobot LineFollowText1.jpg
为什么会不显示呢?因为少了一句设置字体颜色的语句,我们在这两句之前加上Robot.stroke(0, 0, 0);就好了,如下图所示:

ArduinoRobot exploreLineFollow image2.PNG
7,重新编译下载程序到ArduinoRobot Control主控板中,我们可以看到这个时候液晶屏可以显示这两行文字了!如下是正常显示的两个过程图:
ArduinoRobot LineFollowlogo1.jpgArduinoRobot LineFollowText2.jpg
8,按照文字提示,把ArduinoRobot放在黑线白底的纸板上,按下5个按键中的中间按键,ArduinoRobot就自动校准,然后自动寻黑线行驶了!
9,当你发现Arduino Robot循迹效果不是太理想,我们的修改KP,KD,robotSpeed, intergrationTime四个参数,试试修改Robot.lineFollowConfig(11,7, 60, 5);比如可以注释掉这一行,选择上一行Robot.lineFollowConfig(14,9, 50, 10);
重新编译下载程序看看效果。也可以试试Robot.lineFollowConfig(20,1, 50, 20);你会发现就是这么神奇,不同的参数效果不一样,不断尝试,相信你能找到一个最快最好的参数。

修改Logo程序

在Robot_Control\examples\explore\R01_Logo程序中,让使用者通过上下左右按键编辑将要实施的动作,在这个程序中将调用到指南针转角90度,Arduino官方的程序中是没有再程序运行之前的进行指南针校准的,所以可导致ArduinoRobot在实施左右转角时不正确。
原官方Logo程序如下:

ArduinoRobot exploreLogo image1.PNG
我们添加一行程序, Robot.compassRead();将用于用于在初始化的时候,首先进行指南针校准。添加后的程序如下图所示:

ArduinoRobot exploreLogo image2.PNG

对程序重新编译,下载,打开电源开关启动ArduinoRobot后,可以看到它先右转,再左转进行指南针校准,最后停下表示校准完毕。然后我们按照液晶显示的文字提示,输入你将要实施的指令,最后按下中间按键,实施你的命令。

修改使用指南针实现指定转角时的响应速度

在上面下载的Logo程序,实现左右转角90的时候,我们会发现一个小问题:转角速度缓慢且扭矩力度不够,导致有时没有转到指定角度所以一直卡在某个角度。这是一个小小的问题,我们只要修改一个地方就行了,就是调大使用指南针实现指定转角所需的电机的PWM值。
1,在你的Arduino编译器安装目录.....\arduino-1.6.4\libraries\Robot_Control\src下的Motors.cpp文件中,选择用写字板打开Motors.cpp文件,找到void RobotControl::pointTo(int angle){}函数,如下图所示,我们可以看到speed=80,也就是说使用指南针到达指定引脚让左右电机转动的PWM固定为为80。
ArduinoRobot RobotControl Motors modify1.PNG
2,为加大电机的扭矩和转动速度,我们只要加大PWM值就行了,所以我们加大为120,如下图所示。最后保存这个文件,保存我们做的修改。
ArduinoRobot RobotControl Motors modify2.PNG
3,为了验证我们的猜想,可以重新打开Arduino IDE,编译下载之前所讲的Robot_Control\examples\explore\R01_Logo,输入左右按键将要实施的动作,最后按下中键实施,看看转角90的反应速度是否加快。

修改官方程序Bug

SD卡格式

我们的AruinoRobot为了识别SD卡的文件,需要配置一下SD卡的格式,如果你有一张新的SD卡,可以像下面首先格式化SD卡,使“文件系统”设置为“FAT(默认)",记住文件系统必须为FAT,如下图:
ArduinoRobot SD File system configuration.PNG
然后下载当前页面”资源“目录下的SD卡中的音乐和图片文件包,解压,然后复制所有文件到SD卡根目录中,如下图:
ArduinoRobot SD All files.PNG


资源

DuinopeakRobot-文件:Library.zip完整库文件,解压后直接覆盖到你的库文件即可。

DuinopeakRobot底层电机主控板原理图: 文件:ArduinoRobot MororBoardSchematic.pdf

DuinopeakRobot第二层控制主控板原理图: 文件:ArduinoRobot ControlBoardSchematic.pdf

DuinopeakRobot指南针优化库: 文件:ArduinoRobtCompassLibrary.zip

DuinopeakRobot循迹优化库: 文件:ArduinoRobot LineFollowcpp.zip

放入到SD卡中的音乐和图片文件: 文件:ArduinoRobot SdContent.zip

如何购买

Duinopeak 官方淘宝商城
Arduino Robot同款机器人购买链接

支持

如果你有什么建议或者好的点子, 你可以来我们的DuinoPeak论坛参与讨论.

外部链接

链接到外部网页将会给你提供更多应用创意,文档/数据表或软件库

视频