北京邮电大学
机电综合实训实验
实验名称:仿生蛇形机器人
一 实验目的
1. 了解蛇形机器人的概念,蛇形机器人的动作规划,步态规划的基本知识。
2. 熟悉蛇形机器人的构架搭接。
3. 掌握创意之星机器人的构建搭接的技巧与方法。
4. 熟悉掌握各种搭建元件的使用方法和电机舵机的使用技巧。
二 实验材料
本实验使用博创科技的“创意之星”的全套实验器材,以及一些实验工具,电脑一台,参考书博创实验指导书。
三 实验步骤
1.清理自己的实验材料,找全本实验所需的各个器件。
2.关节的搭建
搭建一个关节
首先我们需要搭建出 5 个单独的关节,以组合出完整的机器人。单个关节的结构部分(不包括舵机和舵盘)如下图所示:
下图的装配示意图表明了该关节的安装方式。
A 为 3 个 M3x10 螺钉,D 是 3 个 M3 自锁螺母。A 和 D 把零件 C、E 固定在一起。C 为零件“U3-4-3”, E 为零件“舵机固定板 2”。
B 为 4 个 M3x10 螺钉, G 是 4 个 M3 自锁螺母。B 和 G 把 F(舵盘)固定在零件 C 上。
装配的时候需要注意的是以下几点: G 可以预先放到 F 的螺母槽中,便于装配。C 和 E 的连接要注意位置。C 的中间横梁(图中连接位置)有三组孔,必须使用中间的一组孔。并且,为了下一步安装舵机方便,这里只使用三组螺钉。预先把螺母放进六角套筒,再用螺丝刀紧固螺钉,可以更方便、省力地连接。
请检查连接好后,各个位置是否如下图所示:
下一步是要装入舵机。使用 M3x10 螺钉和自锁螺母把舵机连接到“舵机固定架 2”零件的安装孔上去。如下图所示:
需要注意的是,连接舵机的一共有 4 个螺钉孔位,但是我们只用其中三个,如上图所示。空出一个来的原因是空位的空间紧凑,很难把螺母对到位置上去并拧紧。我们在上一步中,连接 C 和 E 的时候只使用三颗螺钉也是为了留出空间来,便于拧紧固定舵机的螺母。此处拧紧螺母仍然需要使用六角套筒。
完成的关节应该如下图所示:
完成整机装配
完成一个关节之后,重复上述过程,再完成其余的 4 个关节。只是,最后一个关节不需要安装舵机。完成所有关节后,即可将它们组装在一起,如下图所示:
现在这个简单的机器蠕虫的结构已经完全搭建好。美中不足的是舵机引出的电缆太短,并且散乱很不美观,还会影响运动。所以我们最好用电缆套管将线缆包裹起来。具体包裹方式并不固定,只需要以不影响运动、清晰明了为原则。
完成这一步后,蠕虫机器人就完成了。
3.下面我们需要连接所有线缆
需要连接的电缆一共有三种:
(1)3 芯的舵机线,共有 15个舵机,4 条线;按照从头到尾的顺序,把 15个舵机的引线分别顺序插入上面图 F 区的 PW0~PW3。黄色线是信号线,插好之后应该位于靠电路板内侧。请注意,这里各个舵机的顺序必须是按照机体上的头尾顺序,从 1 号到 15号,或者从 15号到 1 号。
(2)232 通讯电缆,需要和 USB-232 转换电缆配合使用。将 232 通讯电缆和 USB-232 转换电缆连接好,5 针插头插到图上 D 区的 5 针排针。插好之后标签应该位于电路板的外侧。USB 端子插入计算机的 USB 接口,并从“控制面板/设备管理器”中查看新增加的 RS-232 串口号,如下图所示。记下这个端口号,后面我们在 UP-MRcommander 软件中将要使用。注意:这个端口号会随着插入的不同 USB 端口而改变。每次更换 USB 端口的时候需要重新察看新的端口号是多少。
(3)电源线。需要插到 MultiFLEX 控制卡上以提供电源。将适配器插上交流电源,输出端白色端子插入 MultiFLEX 控制卡的电源插座(图上 A 区),控制卡上的红黄两色指示灯会亮起,表示工作正常。验证完 MultiFLEX 控制卡工作正常后,断开电源.
连接好电缆后应该如下图所示
完成电缆连接工作后,插上适配器电源,此时将会看到尚未完成的蠕虫机器人运动了。它有可能处于一个扭曲的姿态,可能如上图所示,也可能是别的姿态。这是因为我们在安装舵机的时候并没有调节它的初始位置。舵机是依靠一个花键(可以当成一个有很多牙的圆柱)和舵盘上的花键槽连接的。可以通过调整花键和花键槽之间的安装角度来调整舵机及与其相连的结构件的相对角度。
4 .机器人动作的写入
以上完成了硬件的结构搭建,下来为机器人导入动作:
1.打开 UP-MRcommander 软件,如下图所示。点击菜单栏中的按钮,打开“蛇形机器人/10 关节蠕动-步距 0.125 波长-正弦波.mra”这个动作文件。我们这里使用蛇形机器人的动作文件,是为了简单起见。暂时不考虑怎么为它编写动作,尽快让我们的第一个机器人运动起来!
调入动作文件后,程序界面如下图所示
通过调节对各个舵机进行控制,实现对机器人的控制。完成各个动作,观察实验结果,分析蛇形机器人的运动。
Solidworks 仿真图如下:
四实验总结:
在做这个试验后,掌握了机器人搭建的基本方法,知道了是怎么具体的控制每个运动,怎么实现预定的动作,怎么实现在线调试,怎么烧制程序到控制板中,怎么样才能把各个电路线路连接的整齐美观,完成一个机器人的构架的搭建,对于机械设计知识理解,对于自动控制都有了一个全面的认知。而在做完蛇形机器人后,蛇形机器人可以完成一定的工作了。这只是一个最原始的机器人,只有 15个自由度,并且不具备传感器,无法根据工作情况来调整自己的反应。从这个意义上来说,它甚至不应该被称为“机器人”。
但是我们还要继续组装这样的各种构型的机器人。我们的目的是通过这些组装和学习,掌握“创意之星”套件的使用,从而能够灵活地发挥自己的想象力,最终用这个套件设计和组装出自己的机器人。也是自己对以前所学习的理论知识有了一个很好的掌握,现在将实际中动手操作,组装了一台机器人,对机器人,电机还有机械构架的装配有了更好而且切身的体会,现在对已整体刚度的理解和以后试验中要注意的事项有了一个更好的而且深刻的理解。达到了自己做实验的目的。同时也提高了自己动手能力,达到了理论和实际相结合的目的。
五 附录
程序如下:
#include "Apps/SystemTask.h"
uint8 SERVO_MAPPING[9] = {1,2,3,4,5,6,7,8,9};
int main()
{
int i = 0;
int j = 0;
MFInit();
MFInitServoMapping(&SERVO_MAPPING[0],9);
MFSetPortDirect(0x00000FFF);
MFSetServoMode(1,0);
MFSetServoMode(2,0);
MFSetServoMode(3,0);
MFSetServoMode(4,0);
MFSetServoMode(5,0);
MFSetServoMode(6,0);
MFSetServoMode(7,0);
MFSetServoMode(8,0);
MFSetServoMode(9,0);
//红外距离传感器
j = MFGetAD(0);
MFSetServoPos(1,512,512);
MFSetServoPos(2,512,512);
MFSetServoPos(3,512,512);
MFSetServoPos(4,512,512);
MFSetServoPos(5,512,512);
MFSetServoPos(6,512,512);
MFSetServoPos(7,512,512);
MFSetServoPos(8,512,512);
MFSetServoPos(9,512,512);
MFServoAction();
DelayMS(500);
MFSetServoPos(1,620,512);
MFSetServoPos(2,512,512);
MFSetServoPos(3,512,512);
MFSetServoPos(4,512,512);
MFSetServoPos(5,512,512);
MFSetServoPos(6,512,512);
MFSetServoPos(7,512,512);
MFSetServoPos(8,512,512);
MFSetServoPos(9,512,512);
MFServoAction();
DelayMS(500);
MFSetServoPos(1,620,512);
MFSetServoPos(2,620,512);
MFSetServoPos(3,512,512);
MFSetServoPos(4,512,512);
MFSetServoPos(5,512,512);
MFSetServoPos(6,512,512);
MFSetServoPos(7,512,512);
MFSetServoPos(8,512,512);
MFSetServoPos(9,512,512);
MFServoAction();
DelayMS(500);
MFSetServoPos(1,620,512);
MFSetServoPos(2,620,512);
MFSetServoPos(3,620,512);
MFSetServoPos(4,512,512);
MFSetServoPos(5,512,512);
MFSetServoPos(6,512,512);
MFSetServoPos(7,512,512);
MFSetServoPos(8,512,512);
MFSetServoPos(9,512,512);
MFServoAction();
DelayMS(500);
MFSetServoPos(1,404,512);
MFSetServoPos(2,620,512);
MFSetServoPos(3,620,512);
MFSetServoPos(4,620,512);
MFSetServoPos(5,512,512);
MFSetServoPos(6,512,512);
MFSetServoPos(7,512,512);
MFSetServoPos(8,512,512);
MFSetServoPos(9,512,512);
MFServoAction();
DelayMS(500);
MFSetServoPos(1,404,512);
MFSetServoPos(2,404,512);
MFSetServoPos(3,620,512);
MFSetServoPos(4,620,512);
MFSetServoPos(5,620,512);
MFSetServoPos(6,512,512);
MFSetServoPos(7,512,512);
MFSetServoPos(8,512,512);
MFSetServoPos(9,512,512);
MFServoAction();
DelayMS(500);
MFSetServoPos(1,404,512);
MFSetServoPos(2,404,512);
MFSetServoPos(3,404,512);
MFSetServoPos(4,620,512);
MFSetServoPos(5,620,512);
MFSetServoPos(6,620,512);
MFSetServoPos(7,512,512);
MFSetServoPos(8,512,512);
MFSetServoPos(9,512,512);
MFServoAction();
DelayMS(500);
MFSetServoPos(1,620,512);
MFSetServoPos(2,404,512);
MFSetServoPos(3,404,512);
MFSetServoPos(4,404,512);
MFSetServoPos(5,620,512);
MFSetServoPos(6,620,512);
MFSetServoPos(7,620,512);
MFSetServoPos(8,512,512);
MFSetServoPos(9,512,512);
MFServoAction();
DelayMS(500);
MFSetServoPos(1,620,512);
MFSetServoPos(2,620,512);
MFSetServoPos(3,404,512);
MFSetServoPos(4,404,512);
MFSetServoPos(5,404,512);
MFSetServoPos(6,620,512);
MFSetServoPos(7,620,512);
MFSetServoPos(8,620,512);
MFSetServoPos(9,512,512);
MFServoAction();
DelayMS(2000);
while (1)
{
if (j>400)
{
MFSetServoPos(1,620,512);
MFSetServoPos(2,620,512);
MFSetServoPos(3,549,512);
MFSetServoPos(4,630,512);
MFSetServoPos(5,630,512);
MFSetServoPos(6,620,512);
MFSetServoPos(7,651,512);
MFSetServoPos(8,634,512);
MFSetServoPos(9,695,512);
MFServoAction();
}
else
{
MFSetServoPos(1,620,512);
MFSetServoPos(2,620,512);
MFSetServoPos(3,620,512);
MFSetServoPos(4,404,512);
MFSetServoPos(5,404,512);
MFSetServoPos(6,404,512);
MFSetServoPos(7,620,512);
MFSetServoPos(8,620,512);
MFSetServoPos(9,620,512);
MFServoAction();
DelayMS(500);
MFSetServoPos(1,404,512);
MFSetServoPos(2,620,512);
MFSetServoPos(3,620,512);
MFSetServoPos(4,620,512);
MFSetServoPos(5,404,512);
MFSetServoPos(6,404,512);
MFSetServoPos(7,404,512);
MFSetServoPos(8,620,512);
MFSetServoPos(9,620,512);
MFServoAction();
DelayMS(500);
MFSetServoPos(1,404,512);
MFSetServoPos(2,404,512);
MFSetServoPos(3,620,512);
MFSetServoPos(4,620,512);
MFSetServoPos(5,620,512);
MFSetServoPos(6,404,512);
MFSetServoPos(7,404,512);
MFSetServoPos(8,404,512);
MFSetServoPos(9,620,512);
MFServoAction();
DelayMS(500);
MFSetServoPos(1,404,512);
MFSetServoPos(2,404,512);
MFSetServoPos(3,404,512);
MFSetServoPos(4,620,512);
MFSetServoPos(5,620,512);
MFSetServoPos(6,620,512);
MFSetServoPos(7,404,512);
MFSetServoPos(8,404,512);
MFSetServoPos(9,404,512);
MFServoAction();
DelayMS(500);
MFSetServoPos(1,620,512);
MFSetServoPos(2,404,512);
MFSetServoPos(3,404,512);
MFSetServoPos(4,404,512);
MFSetServoPos(5,620,512);
MFSetServoPos(6,620,512);
MFSetServoPos(7,620,512);
MFSetServoPos(8,404,512);
MFSetServoPos(9,404,512);
MFServoAction();
DelayMS(500);
MFSetServoPos(1,620,512);
MFSetServoPos(2,620,512);
MFSetServoPos(3,404,512);
MFSetServoPos(4,404,512);
MFSetServoPos(5,404,512);
MFSetServoPos(6,620,512);
MFSetServoPos(7,620,512);
MFSetServoPos(8,620,512);
MFSetServoPos(9,404,512);
MFServoAction();
DelayMS(500);
MFSetServoPos(1,620,512);
MFSetServoPos(2,620,512);
MFSetServoPos(3,549,512);
MFSetServoPos(4,630,512);
MFSetServoPos(5,630,512);
MFSetServoPos(6,620,512);
MFSetServoPos(7,651,512);
MFSetServoPos(8,634,512);
MFSetServoPos(9,695,512);
MFServoAction();
DelayMS(500);
}
}
}
北京邮电大学课程设计报告
北京邮电大学课程设计报告