【S092】加鲁鲁宠物舞蹈机器人
作品说明 |
作者:钱勇 李怡恒 王密 吴晗
单位:宁夏大学
指导老师:孟一飞 张冬
1. 市场调研及市场前景说明
该宠物舞蹈机器人既可以面向科普玩具市场上,又可以作为一种工艺品供人观赏收藏
① 作为科普玩具,能够真正引导孩子们换个角度认识世界,激发他们对科学与艺术的兴趣;该该机器人通过程序对舵机控制,从而完成各种不同的动作带给人一种不同的感受和新奇的体验;它还可以走进各种不同的场合,如在教室进行科技教育的学习,它可以满足青年和青少年的好奇心,激发他们对机器人的兴趣,填补生活的无聊,而且也能激发他们对新科技的认识和再创造,在家庭中可以提高父母与孩子的亲密度;还可以增加社会的新型娱乐项目,在中国,舞蹈机器人的应用并不是很多,所以它有着广阔的前景。当本项目中的机器人推向市场,走进娱乐舞台的时候,肯定使娱乐走向一个更高的层次,使得娱乐方式变的多元化,使娱乐的内容也也变得丰富多彩。
② 作为一种工艺品供人观赏收藏,作品外形创意仿造动漫《数码宝贝》中虚构生物“钢铁加鲁鲁兽”,外形制作精美,舞蹈创意将动漫中虚构生物与近代竞技体育运动盛装舞步骑术赛结合在一起,演出一连串精心设计的优雅舞步动作,不少《数码宝贝》粉丝青少年都会对它产生兴趣,相信会有广阔的市场。
2. 作品功能介绍及先进性说明
2.1 作品功能介绍
配合音乐跳舞的多足异形机器人,机器人上半部分七个舵机控制器(自由度)控制作品的翅膀、颈部、头部在允许范围内运动,如展翅、抬头等机器人下半部分八个舵机控制器(自由度)控制作品的腿部运动,如行走、踏步等,两者相互协调配合就可以演绎出一段优美的舞蹈,如展翅高飞、盛装舞步、云中漫步、傲视天地等舞蹈动作。
作品说明
展翅高飞
盛装舞步
云中漫步
傲视天地
2.2 先进性说明
该宠物舞蹈机器人主要是用Arduino IDE将程序下载到ATmega2560单片机中,采用32路伺服电机控制器调整舵机,并使其得到实时可靠的控制,进而对机器人主动轮的速度、方向进行有效的控制,使机器人的动作定位更加准确,动作过程更加优美协调,同时该舞蹈机器人采用四足结构,使得机器人的稳定度大大提高。
3. 作品制作过程说明
3.1 思路来源
本作品外形创意仿造动漫《数码宝贝》中虚构生物“钢铁加鲁鲁兽”,舞蹈创意将动漫中虚构生物与近代竞技体育运动盛装舞步骑术赛结合在一起,演出一连串精心设计的优雅舞步动作。
钢铁加鲁鲁兽原型
加鲁鲁宠物舞蹈机器人作品
3.2 方案选择
① 硬件部分:本作品硬件结构全部采用具有“积木”特点的“探索者”基础机械零件和舵机,控制硬件采用舵机控制器及Arduino单片机。
② 软件部分:Arduino IDE和32路伺服电机控制器。
③ 制作方案:将15个舵机分别连接到舵机控制器各引脚上,用32路伺服电机控制器软件调节机器人各个舵机(自由度)运动,每一个动作32路伺服电机控制器软件会自动生成一段动作代码,将该代码复制到Arduino IDE中编程,将程序下载到Arduino单片机,再将Arduino单片机通过TX引脚向舵机控制器RX引脚中发送数据,舵机控制器再进行控制各个自由度运动。
3.3 硬件及软件照片
32路伺服电机控制器
Arduino IDE
舵机控制器
Arduino单片机
3.4 机构设计
多足机器人机械系统设计到这几方面的内容:头部模块、翅膀尾巴模块、腿部模块。构成头、翅膀尾巴、腿模块分别使用了2个、5个、8个自由度,进行统一编号,方便控制。
① 头部模块
头部模块是机器人具有代表的一部分,许多舞蹈动作都是头部模块配合其他模块同时完成,常常可以起到画龙点睛的作用。模块可分为头部舵机和颈部舵机,在动作实现过程中,根据仿生学原理,头部舵机控制头部在一定允许范围内上下运动,颈部舵机控制颈部在一定允许范围内左右运动,完成一套动作往往需要两个舵机相互配合才能够实现。
② 腿部模块
腿部模块是机器人的重要组成部分,是实现行走等基本动作的基础。本作品机器人模仿昆虫行走方式,设计有四条腿,每条腿安装俩个舵机,上舵机(类大腿)控制下舵机(类小腿)上下运动,下舵机(类小腿)控制类似脚掌机械装置上下运动;行走过程,将四足称中心对称的双足抬起来,另一双足保持不变,两者相互交换,在行走中,一定会有一对双足抬起,另一对双足踏在地板上,从仿生学角度看,可以实现更好的稳定性和平衡性的要求。
③ 翅膀尾巴模块
翅膀和尾巴模块是优美舞蹈中必不可少的一部分,它们丰富了舞蹈动作,更具有观赏性。本机器人共有两对翅膀,对称分布在机器人左右两端,使用了两对舵机分别控制翅膀伸展与收缩;一个由套件编织的美丽的尾巴,有一个舵机控制其上下摆动,机灵活泼。
3.5 制作过程中遇到的问题及解决方案
我们在制作的过程中也遇到了一些困难,比如单片机的读取,舵机的选择等,当然对于这些问题也都提出了解决的方案。
① 对于单片机的读取问题,在设计程序的过程中存在一些重复的程序,还有程序的执行方面,我们在此过程中逐步的对程序进行优化。对于较长的程序结构我们主要是更改了程序的结构选择了更为简便的程序来代替原有的,以及删除一些重复的程序选择用循环等结构来代替,减少了程序的长度,能使其更好地烧录进单片机中,使单片机的运行更加稳定。
② 在电池带动舵机的过程中也存在一些问题,该舞蹈机器人共有15个舵机,所需要的电流达到了3A,电流较大,一般的电池提供的电流强度无法带动多个舵机的同时运转,我们就找到了一些性能较好的电池来代替原有的电池,提供较高强度的电流,带动所有舵机同时运转,使机器人可以完成规定的动作。
③ 还有关于机器人的材料磨损问题,在机器人的组装过程中用到较多的螺丝,以及由于调试的过程较长,难免会有一些螺丝的松动,我们主要是在调试前后都认真地检查各个部件的稳定程度,作出相应的调整,使机器人可以长时间不发生结构的问题。
4. 示例程序
① 程序结构
int i=0; void setup() { Serial.begin(“波特率”); } void loop() { Serial.println("舵机控制器自动生成代码"); delay(‘”延时时间”); ··· } |
Serial.println("#0P1374#3P1650#4P1029#5P1500#8P1397#11P821#12P1351#14P1500#15P1074#20P1310#22P1500#25P1513#27P1411#29P1500#30P1361T500"); delay(1000); } /*--------结尾蹲-------- */ Serial.println("#0P1121#1P1500#2P1500#3P1397#4P1236#5P1500#6P1500#7P1500#8P1328#9P1500#10P1500#11P638#12P1420#13P1500#14P2409#15P1052#16P1500#17P1500#18P1500#19P1500#20P1310#21P1500#22P1500#23P1500#24P1500#25P1513#26P1500#27P1690#28P1500#29P1817#30P1209#31P1500T1000"); delay(3000); Serial.println("#0P615#1P1500#2P1500#3P1995#4P568#5P1489#6P1500#7P1500#8P1351#9P1500#10P1500#11P638#12P1236#13P1500#14P1719#15P1052#16P1500#17P1500#18P1500#19P1500#20P1994#21P1500#22P1209#23P1500#24P1500#25P879#26P1500#27P1842#28P1500#29P1766#30P1183#31P1500T2000"); delay(3000); Serial.println("#0P1500#3P1650#4P960#5P1857#8P1374#11P1098#12P1328#14P1500#15P1074#20P1563#22P854#25P1234#27P1614#29P1411#30P1234T2000"); delay(3000); Serial.println("#0P615#1P1500#2P1500#3P1650#4P867#5P1489#6P1500#7P1500#8P1351#9P1500#10P1500#11P684#12P1305#13P1500#14P2100#15P1535#16P1500#17P1500#18P1500#19P1500#20P1665#21P1500#22P1209#23P1500#24P1500#25P1183#26P1500#27P1741#28P1500#29P1766#30P1183#31P1500T2000"); delay(3000); Serial.println("#0P1420#3P1650#4P1029#5P1880#8P1374#11P1052#12P1328#14P1500#15P1074#20P1563#22P803#25P1234#27P1614#29P1487#30P1234T2000"); delay(3000); Serial.println("#0P1420#3P1650#4P1029#5P1466#8P1374#11P614#12P1328#14P2018#15P707#20P1563#22P1082#25P1234#27P1614#29P1741#30P1234T2000"); delay(3000); Serial.println("#0P1420#3P1650#4P1029#5P1903#8P1374#11P937#12P1328#14P1673#15P1098#20P1563#22P905#25P1234#27P1614#29P1538#30P1234T2000"); delay(3000); Serial.println("#0P1420#3P1397#4P1282#5P2455#8P1374#11P1558#12P1328#14P1903#15P1098#20P1361#22P626#25P1438#27P1487#29P1158#30P1234T2000"); delay(3000); Serial.println("#0P1121#1P1500#2P1500#3P1397#4P1236#5P1500#6P1500#7P1500#8P1328#9P1500#10P1500#11P638#12P1420#13P1500#14P2409#15P1052#16P1500#17P1500#18P1500#19P1500#20P1310#21P1500#22P1500#23P1500#24P1500#25P1513#26P1500#27P1690#28P1500#29P1817#30P1209#31P1500T1000"); delay(3000); Serial.println("#0P1627#3P568#4P1650#5P2179#8P1351#11P1351#12P1397#14P1512#15P707#20P1310#22P829#25P1487#27P2500#29P1031#30P778T1000"); delay(10000); } |
int i=0; void setup() { Serial.begin(115200); } void loop() {
/*----展翅---*/ Serial.println("#0P1075#3P1500#4P1213#5P1500#8P1328#11P568#12P1500#14P2133#15P1074#20P1310#22P1500#25P1500#27P1614#29P1766#30P1183"); delay(2000); Serial.println("#0P1075#3P1500#4P1213#5P1500#8P1328#11P1328#12P1500#14P1650#15P1074#20P1310#22P1500#25P1500#27P1614#29P1031#30P1183"); delay(2000); Serial.println("#0P1075#3P1500#4P1213#5P1500#8P1328#11P1328#12P1500#14P2340#15P1074#20P1310#22P1500#25P1500#27P1614#29P1031#30P1183T1000"); delay(2000); Serial.println("#0P1075#3P1500#4P1213#5P1500#8P1328#11P614#12P1500#14P2340#15P1074#20P1310#22P1500#25P1500#27P1614#29P1893#30P1183T1000"); delay(2000); Serial.println("#0P1075#3P1500#4P1213#5P2179#8P1328#11P1397#12P1500#14P1650#15P1074#20P1310#22P1500#25P1500#27P1614#29P1893#30P1183T1000"); delay(2000); Serial.println("#0P1075#3P1500#4P1213#5P1535#8P1328#11P568#12P1500#14P1650#15P1074#20P1310#22P1500#25P1500#27P1614#29P1893#30P1183T1000"); delay(2000); Serial.println("#0P1075#3P1500#4P1213#5P1535#8P1328#11P568#12P1500#14P1650#15P1074#20P1310#22P753#25P1462#27P1614#29P1031#30P1183T1000"); delay(2000); Serial.println("#0P1075#3P1500#4P1213#5P1535#8P1328#11P568#12P1500#14P1650#15P1074#20P1310#22P1285#25P1462#27P1614#29P1893#30P1183T1000"); delay(2000); Serial.println("#0P1673#3P1500#4P1213#5P2202#8P1328#11P1397#12P1500#14P1650#15P1074#20P1310#22P753#25P1462#27P1614#29P1082#30P1183T1000"); delay(2000); Serial.println("#0P1121#3P1500#4P1213#5P1512#8P1420#11P1466#12P1351#14P1604#15P1052#20P1285#22P1234#25P1513#27P1665#29P1006#30P1209T1000"); delay(2000); Serial.println("#0P1489#3P1500#4P1213#5P2179#8P1420#11P1466#12P1351#14P1604#15P1098#20P1285#22P778#25P1513#27P1665#29P1006#30P1209T1000"); delay(2000); Serial.println("#0P1489#3P1500#4P1213#5P2179#8P1420#11P1466#12P1351#14P2248#15P614#20P1285#22P778#25P1513#27P1665#29P1006#30P1209T1000"); delay(2000); Serial.println("#0P1489#3P1500#4P1213#5P2179#8P1420#11P1466#12P1351#14P1535#15P1052#20P1285#22P778#25P1513#27P1665#29P1006#30P1209T1000"); delay(2000); Serial.println("#0P1489#3P1500#4P1213#5P2179#8P1420#11P1466#12P1351#14P2156#15P1673#20P1285#22P778#25P1513#27P1665#29P1006#30P1209T1000"); delay(2000); Serial.println("#0P500#3P1500#4P1213#5P1512#8P1420#11P638#12P1351#14P2409#15P1121#20P1285#22P1234#25P1513#27P1665#29P1842#30P1209T1000"); delay(2000);
/*----单脚踢步---*/ Serial.println("#0P1420#3P1500#4P1259#5P1512#8P1351#11P614#12P1443#14P2087#15P1121#20P1285#22P1234#25P1513#27P1665#29P1842#30P1234T1000"); delay(2000); Serial.println("#0P1420#3P1500#4P1259#5P1512#8P1489#11P614#12P1259#14P2087#15P1121#20P1285#22P1234#25P1513#27P2070#29P1158#30P753T1000"); delay(2000); Serial.println("#0P1500#3P1466#4P1259#5P1489#8P1420#11P568#12P1374#14P1811#15P1052#20P1285#22P1183#25P1513#27P1715#29P651#30P500T50"); delay(1000); Serial.println("#0P1500#3P1466#4P1259#5P1489#8P1420#11P568#12P1374#14P1811#15P1052#20P1285#22P1183#25P1513#27P2146#29P1462#30P727T1000"); delay(1000); Serial.println("#0P1500#3P1466#4P1259#5P1489#8P1420#11P568#12P1374#14P1811#15P1052#20P1285#22P1183#25P1513#27P1665#29P1842#30P1209T1000"); delay(2000); Serial.println("#0P1420#3P1328#4P1282#5P1512#8P1811#11P1581#12P937#14P2087#15P1121#20P1285#22P1234#25P1513#27P1893#29P1842#30P1057T2000"); delay(3000); Serial.println("#0P1420#3P1328#4P1282#5P1512#8P2018#11P1719#12P1397#14P2087#15P1121#20P1285#22P1234#25P1513#27P1842#29P1842#30P1031T50"); delay(2000); Serial.println("#0P1420#3P1328#4P1282#5P1512#8P1765#11P1098#12P1052#14P2087#15P1121#20P1285#22P1234#25P1513#27P1842#29P1842#30P1031T1000"); delay(1000); Serial.println("#0P1500#3P1466#4P1259#5P1489#8P1420#11P592#12P1351#14P1857#15P105 2#20P1285#22P1183#25P1513#27P1665#29P1842#30P1209T1000"); delay(2000); Serial.println("#0P1500#3P1466#4P1259#5P1489#8P1420#11P592#12P1351#14P1857#15P1052#20P1766#22P778#25P1031#27P1665#29P1411#30P1209T2000"); delay(3000); Serial.println("#0P1500#3P1466#4P1259#5P1489#8P1420#11P592#12P1351#14P1857#15P1052#20P2095#22P550#25P1563#27P1665#29P702#30P1209T50"); delay(2000); Serial.println("#0P1500#3P1466#4P1259#5P1489#8P1420#11P592#12P1351#14P1857#15P1052#20P1741#22P879#25P1031#27P1665#29P1335#30P1209T1000"); delay(1000); Serial.println("#0P1500#3P1466#4P1259#5P1489#8P1420#11P592#12P1351#14P1857#15P1052#20P1285#22P1234#25P1513#27P1665#29P1817#30P1209T1000"); delay(2000); Serial.println("#0P1500#3P1788#4P845#5P1903#8P1420#11P1098#12P1351#14P1857#15P1052#20P1285#22P1234#25P1513#27P1665#29P1817#30P1209T1000"); delay(1000); Serial.println("#0P1500#3P1466#4P568#5P2455#8P1420#11P1696#12P1351#14P1857#15P1052#20P1285#22P1234#25P1513#27P1665#29P1817#30P1209T50"); delay(1000); Serial.println("#0P1500#3P1834#4P821#5P1765#8P1420#11P1029#12P1351#14P1857#15P1052#20P1285#22P1234#25P1513#27P1665#29P1817#30P1209T1000"); delay(1000); Serial.println("#0P1500#3P1466#4P1282#5P1512#8P1420#11P592#12P1351#14P1857#15P1052#20P1285#22P1234#25P1513#27P1665#29P1817#30P1209T1000"); delay(1000); Serial.println("#0P1420#3P1397#4P1259#5P1512#8P1351#11P614#12P1443#14P2087#15P1121#20P1285#22P1234#25P1513#27P1665#29P1842#30P1234T1000"); delay(3000);
/*---双脚踢步---*/ Serial.println("#0P1075#3P1397#4P1282#5P1500#8P1351#11P684#12P1328#14P2018#15P1074#20P1335#22P1500#25P1513#27P1639#29P1867#30P1158T2000"); delay(2000); Serial.println("#0P1075#3P1903#4P753#5P2294#8P1443#11P1558#12P1374#14P1581#15P1074#20P1310#22P651#25P1513#27P2171#29P905#30P702T2000"); delay(3000); Serial.println("#0P1075#3P1512#4P1190#5P1604#8P1351#11P684#12P1328#14P2018#15P1074#20P1335#22P1234#25P1513#27P1563#29P1867#30P1209T2000"); delay(3000); Serial.println("#0P1075#3P1512#4P1282#5P2294#8P1788#11P1558#12P1006#14P1466#15P1074#20P1741#22P651#25P1031#27P1766#29P905#30P1082T2000"); delay(3000); Serial.println("#0P1075#3P1512#4P1282#5P1604#8P1328#11P638#12P1420#14P1972#15P1074#20P1310#22P1209#25P1462#27P1741#29P1817#30P1158T2000"); delay(3000); Serial.println("#0P1075#3P1397#4P1282#5P1500#8P1351#11P684#12P1328#14P2018#15P1074#20P1335#22P1500#25P1513#27P1639#29P1867#30P1158T2000"); delay(3000); /*--步行---*/ for(i=0;i<2;i++) { Serial.println("#0P1696#3P914#4P1568#5P1512#8P1374#11P592#12P1351#14P1650#15P1144#20P1335#22P1209#25P1500#27P2379#29P1791#30P727T500"); delay(1000); Serial.println("#0P1627#3P1236#4P1397#5P1500#8P1121#11P602#12P1603#14P1500#15P1098#20P1614#22P1234#25P1183#27P1969#29P1751#30P905T500"); delay(1000); Serial.println("#0P1500#1P1500#2P1500#3P1443#4P1236#5P1500#6P1500#7P1500#8P1074#9P1500#10P1500#11P660#12P1673#13P1500#14P1500#15P1074#16P1500#17P1500#18P1500#19P1500#20P1563#21P1500#22P1234#23P1500#24P1500#25P1209#26P1500#27P1639#28P1500#29P1766#30P1209#31P1500T1000"); delay(1000); Serial.println("#0P1374#3P1443#4P1236#5P1500#8P1696#11P821#12P821#14P1500#15P1074#20P905#22P1500#25P2171#27P1665#29P1500#30P1158T500"); delay(1000); Serial.println("#0P1374#3P1650#4P1029#5P1500#8P1627#11P821#12P1098#14P1500#15P1074#20P1082#22P1500#25P1665#27P1411#29P1500#30P1361T500"); delay(1000); Serial.println("#0P1374#3P1650#4P1029#5P1500#8P1397#11P821#12P1351#14P1500#15P1074#20P1310#22P1500#25P1513#27P1411#29P1500#30P1361T500"); delay(1000); } delay(2000); /*双腿蹲*/ Serial.println("#0P1500#3P1466#4P1282#5P1512#8P1420#11P592#12P1351#14P1857#15P1052#20P1285#22P1234#25P1513#27P1665#29P1817#30P1209T1000"); delay(2000); Serial.println("#0P1500#3P1811#4P776#5P1500#8P1926#11P614#12P799#14P1857#15P1029#20P1715#22P1234#25P955#27P2171#29P1842#30P727"); delay(2000); Serial.println("#0P1500#3P1121#4P1535#5P1500#8P1788#11P614#12P937#14P1857#15P1029#20P1006#22P1234#25P1665#27P2070#29P1842#30P854"); delay(2000); Serial.println("#0P1500#3P1466#4P1282#5P1512#8P1420#11P592#12P1351#14P1857#15P1052#20P1285#22P1234#25P1513#27P1665#29P1817#30P1209T1000"); delay(2000); /*-原地踏步*/ for(i=0;i<2;i++) { Serial.println("#0P1075#3P1351#4P1259#5P1604#8P1397#11P638#12P1328#14P1949#15P1074#20P1310#22P1209#25P1487#27P1589#29P1817#30P1234T1000"); delay(2000); Serial.println("#0P1627#3P568#4P1650#5P2179#8P1351#11P1351#12P1397#14P1512#15P707#20P1310#22P829#25P1487#27P2500#29P1031#30P778T1000"); delay(3000); Serial.println("#0P1075#3P1351#4P1259#5P1604#8P1397#11P638#12P1328#14P1949#15P1074#20P1310#22P1209#25P1487#27P1589#29P1817#30P1234T1000"); delay(3000); Serial.println("#0P1627#3P1351#4P1190#5P2179#8P1788#11P1351#12P638#14P1512#15P1696#20P930#22P829#25P2273#27P1589#29P1031#30P1209T1000"); delay(3000); Serial.println("#0P1075#3P1351#4P1259#5P1604#8P1397#11P638#12P1328#14P1949#15P1074#20P1310#22P1209#25P1487#27P1589#29P1817#30P1234T1000"); delay(3000); }
/*走路 */ for(i=0;i<3;i++) { Serial.println("#0P1696#3P914#4P1568#5P1512#8P1374#11P592#12P1351#14P1650#15P1144#20P1335#22P1209#25P1500#27P2379#29P1791#30P727T500"); delay(1000); Serial.println("#0P1627#3P1236#4P1397#5P1500#8P1121#11P602#12P1603#14P1500#15P1098#20P1614#22P1234#25P1183#27P1969#29P1751#30P905T500"); delay(1000); Serial.println("#0P1500#1P1500#2P1500#3P1443#4P1236#5P1500#6P1500#7P1500#8P1074#9P1500#10P1500#11P660#12P1673#13P1500#14P1500#15P1074#16P1500#17P1500#18P1500#19P1500#20P1563#21P1500#22P1234#23P1500#24P1500#25P1209#26P1500#27P1639#28P1500#29P1766#30P1209#31P1500T1000"); delay(1000); Serial.println("#0P1374#3P1443#4P1236#5P1500#8P1696#11P821#12P821#14P1500#15P1074#20P905#22P1500#25P2171#27P1665#29P1500#30P1158T500"); delay(1000); Serial.println("#0P1374#3P1650#4P1029#5P1500#8P1627#11P821#12P1098#14P1500#15P1074#20P1082#22P1500#25P1665#27P1411#29P1500#30P1361T500"); delay(1000); |
② 程序源代码
* 本项目未获得作者开源授权,无法提供资料下载。
|