智能科学与工程课程设计.docx
《智能科学与工程课程设计.docx》由会员分享,可在线阅读,更多相关《智能科学与工程课程设计.docx(13页珍藏版)》请在冰豆网上搜索。
智能科学与工程课程设计
机械臂课程设计
一、课程设计目的
1、培养学生掌握基本的实验方法与操作技能。
2、学会根据实验目的拟定实验线路,选择所需仪器仪表,遵守实验步骤,测取实际实验数据,进行分析研究,得出正确结论的能力。
3、了解学习与“机器智能”有关的基本理论、方法与技术。
4、培养在智能控制方法与技术领域具有系统的专业知识和较强的实践能力,从事智能机器和智能系统集成的研究、设计、开发及应用的工程应用人才。
5、通过实际操作,解决从结构设计到运动控制分析中的问题。
6、通过实验技能的训练,培养理论联系实际的作风、严谨的科学态度和独立分析与解决实际问题的能力。
二、实验前准备
先修课程要求:
学生在进行课程设计之前应先修《电路分析》、《模拟电子技术基础》、《数字电路与逻辑设计》、《微机原理与接口技术》、《数字信号处理》、《控制理论》、《智能传感与检测技术》、《人工智能》、《机器人学》等相关课程和相关实验课程。
本课程设计任务是利用博创科技的创意之星开发套件平台,采用C语言编写监控编程实时控制和监测机械手的运动位置,实现其机械手的运动操作的实时控制和监测;通过本设计进一步掌握机器人运动系统的基本原理,组成和设计方法,设计出相应的机器人运动系统,通过本课程设计,使学生初步具有控制系统设计的能力,从而培养和提高解决机器人工程问题的能力。
三、课程设计内容
博创创意之星开发系统机械手的运动操作作为被控对象,分析研究控制器的性能,实现实时控制与监测。
1、掌握VC编写程序;
2、理解典型控制算法,并能将其用到实际设计控制系统当中;
3、结合所设计的控制平台,调节控制算法参数,控制误差在要求的范围内。
4、编写基于NorthStar软件平台控制系统,此系统包括串口通信模块、坐标定位模块和控制模块组成,由坐标定位模块实现圆柱坐标三自由度XYZ位置定义,确定起始、终止坐标,然后控制直流电机的运动,实现圆柱坐标三自由度XYZ连动抓取目标物体并且要求系统抓取目标物体误差小于1%。
四、课程设计条件
1、PC机
2、NorthStar和AVRStdio软件安装盘
3、TEKTRONIXTDS100260MHZ示波器及万用表
4、博创科技创意之星实验箱
五、机械手控制系统组成
提供参考控制系统结构框图如图1所示。
图1控制系统参考结构框图
此控制过程包括:
首先要在抓取目标物体之前,要对目标物体有个坐标定位,并且这个坐标定位要结合机械手的坐标定位,在空间上和数值上要达到一致。
根据这个要求设计了一个机械手运动控制模型,此模型一方面起到定位坐标的作用,另一方面又起到了监控和计算机视觉作用。
其次要考虑控制移动及抓取问题。
此时要充分利用TML库中相关函数,利用MFC设计控制界面,很好的调用库函数,尽量做到提高移动的精确度。
最后完成两部分的充分结合,通过控制模型,运用控制指令在控制界面中完成基本操作。
六、舵机
1、性能
本实验采用proMOTIONCDS系列机器人伺服电机(如图2)
图2舵机示意图
他属于一种集电机、伺服驱动、总线式通讯接口为一体的集成伺服单元,非常适合替代RC舵机,作为微型机器人的关节、轮子、履带驱动,也可用于其他简单位置控制场合。
主要特点有:
●大扭矩:
16kgf.cm
●高转速:
最高0.16s/60°输出转速
●DC6.8V~14V供电
●0.32°位置分辨率
●双端输出轴,适合安装在机器人关节
●高精度全金属齿轮组,双滚珠轴承
●连接处O型环密封,防尘防溅水
●位置伺服控制模式下转动范围0-300°
●在速度控制模式下可连续旋转,调速
●总线连接,理论可串联254个单元
●高达1M通讯波特率
●0.25KHz的伺服更新率
●具备位置、温度、电压、速度反馈
CDS5516机器人舵机采用先进的伺服控制技术和高速微处理器,响应速度快、到位精确无抖动。
相比传统RC舵机50Hz的控制频率,CDS系列机器人舵机通过高达250Hz的控制频率,确保位置控制的精确和保持力矩的稳定性。
CDS5516机器人舵机采用周转型高精度电位器测量位置,舵机输出轴可连续整周旋转,运动扭矩输出高达16kgfcm。
CDS5516具备总线接口,理论多至254个机器人舵机可以通过总线组成链型,通过异步串行接口统一控制。
每个舵机可以设定不同的节点地址,多个舵机可以统一运动也可以单个独立控制。
CDS5516的通讯指令集完全开放,舵机通过异步串行接口与用户的上位机通讯,用户可对其参数设置、功能控制。
通过一部串行接口发送指令,CDS5516可以设置为电机模式或位置控制模式。
在电机模式下,CDS5516可以作为直流减速电机使用,速度可调;在位置控制模式下,CDS5516拥有0-300°的转动范围,在此范围内具备精确位置控制性能,速度可调。
2、连接方式
ProMOTIONCDS系列机器人舵机电气接口如图3所示,两组引脚定义一致的接线端子可将舵机诸葛串联起来。
图3多舵机连接连接方式
3、通讯方式
CDS55xx采用异步串行总线通讯方式,理论多至254个机器人舵机可以通过总线组成连接,通过UART异步串行接口统一控制,每个舵机可以设定不同的节点地址,多个舵机可以统一运动也可以单个独立控制。
CDS55xx的通讯指令集开放,通过异步串行接口与用户的上位机(控制器或PC机)通讯,您可对其进行参数设置、功能控制。
通过异步串行接口収送指令,CDS55xx可以设置为电机控制模式或位置控制模式。
在电机控制模式下,CDS55xx可以作为直流减速电机使用,速度可调;在位置控制模式下,CDS55xx拥有0-300°的转动范围,在此范围内具备精确位置控制性能,速度可调。
只要符合协议的半双工UART异步串行接口都可以和CDS55xx进行通讯,对CDS55xx进行各种控制。
主要有以下两种形式:
方式1:
通过调试器控制CDS55xx
PC机会将调试器识别为串口设备,上位机软件通过串口収出符合协议格式的数据包,经调试器转収给CDS55xx。
CDS55xx会执行数据包的指令,并且返回应答数据包。
方式2:
通过专用控制器控制CDS55xx
方式1可以快捷地调试CDS系列机器人舵机、修改各种性能不功能参数。
但是,这种方式离不开PC机,不能搭建独立的机器人构型。
您可以设计与用的控制器,通过控制器的UART端口控制舵机,示意图见图3。
图3舵机与控制器连接方式
4、UART接口
CDS系列机器人舵机用程序代码对UART异步串行接口迚行时序控制,实现半双工异步串行总线通讯,通讯速度可高达1Mbps,且接口简单、协议精简。
在您自行设计的控制器中,用于和CDS55xx通讯的UART接口必须如图4所示进行处理。
图4舵机连接电路
七、软件程序介绍
1、NorthStar图形化机器人开发环境
主要包括以下三个部分的功能:
用图形化、可视化的方式给机器人编程,同步生成C语言代码,在后台编译、并下载到机器人控制器上执行;
集成3D仿真。
可进行动作仿真、步态及路径规划等。
仿真数据能输入图形化编程环境;
集成实时、可视化数据采集与显示。
类似虚拟示波器的功能,能在机器人运行的时候实时监控机器人各部分的数据,并用波形的方式显示在PC机上。
与传统的使用C语言等高级语言的开发方式对比可视化,图形化,开发速度极快。
用户无需懂得计算机语言,只需要拖放图标、连线即可。
NorthSTAR自动生成代码,并编译执行。
跨处理器平台,实现一定程度的软硬件分离。
目前支持PXA270(32位/520MHz处理器)和AVR单片机(8位/16MHz)。
只要具备C语言编译器,并编写相应的驱动程序,即可用于其它平台,例如PC平台、C51平台等。
由于跨平台特性,程序移植容易,为A厂商的扫地机器人编写的程序,经过简单修改甚至不需修改即可用于B厂商的同类型扫地机器人。
与微软MSRS等机器人开发环境的对比:
代码的运行效率高的多。
程序是编译成机器码执行,而不是像MSRS那样需要中间语言,需要虚拟机支持,因此效率高得多。
MSRS编写的机器人程序至少需要400MHz以上的32位处理器才能运行,而NorthSTAR编写的程序可以在8位单片机上运行。
其应用领域要宽广得多,特别适合低成本的教育娱乐机器人。
代码实时性高。
由于编译执行的机制,在同等硬件条件下,实时性比MSRS高的多。
支持图形化编程和C语言混合开发。
普通用户用图形化编程即可;有特殊要求的高级用户或者机器人厂商,可以用图形化+C语言混合编程的方式开发,灵活性很强。
编程环境及界面见图6和图7。
图6NorthStar软件
图7NorthStar编程界面
2、RobotServoTerminal舵机调试程序
操作界面简单易懂,人性化界面易于操作,可设定CCS5516系列机器人舵机,拥有舵机、电机模式转换、同时控制多个舵机、舵机参数实时监控等功能。
界面见图8。
图8RobotServoTerminal界面
八、心得体会
通过本次智能科学与工程课程设计,我掌握了模拟舵机的控制方法以及其工作原理,可以熟练的对其操作,包括速度以及转角的控制。
熟悉了NorthStar开发平台的基本使用和AVR单片机的C语言编程,锻炼了我从结构设计到运动控制分析设计的能力。
九、参考文献
[1]姚宪华.创意之星:
模块化机器人创新设计与竞赛[M].北京:
北京航空航天大学出版社,2010年9月。
[2]崔光照.单片机原理与接口技术(第2版)[M].北京:
北京邮电大学出版社,2007年。
[3]马忠梅.单片机的C语言应用程序设计(第4版)[M].北京:
北京航空航天大学出版社,2007年1月。
附录
源程序代码:
#include"Apps/SystemTask.h"
uint8SERVO_MAPPING[7]={1,2,3,4,5,6,7};
intmain()
{
MFInit();
MFInitServoMapping(&SERVO_MAPPING[0],7);
MFSetPortDirect(0x00000FFF);
MFSetServoMode(1,0);
MFSetServoMode(2,0);
MFSetServoMode(3,0);
MFSetServoMode(4,0);
MFSetServoMode(5,0);
MFSetServoMode(6,0);
MFSetServoMode(7,0);
MFSetServoPos(1,512,150);
MFSetServoPos(2,512,150);
MFSetServoPos(3,512,150);
MFSetServoPos(4,512,150);
MFSetServoPos(5,512,150);
MFSetServoPos(6,512,150);
MFSetServoPos(7,512,150);
MFServoAction();
DelayMS(2000);
MFSetServoPos(1,498,150);
MFSetServoPos(2,550,150);
MFSetServoPos(3,795,150);
MFSetServoPos(4,528,150);
MFSetServoPos(5,565,150);
MFSetServoPos(6,486,150);
MFSetServoPos(7,557,150);
MFServoAction();
DelayMS(2000);
MFSetServoPos(1,498,150);
MFSetServoPos(2,540,150);
MFSetServoPos(3,512,150);
MFSetServoPos(4,519,150);
MFSetServoPos(5,528,150);
MFSetServoPos(6,486,150);
MFSetServoPos(7,313,150);
MFServoAction();
DelayMS(2000);
MFSetServoPos(1,629,150);
MFSetServoPos(2,540,150);
MFSetServoPos(3,512,150);
MFSetServoPos(4,519,150);
MFSetServoPos(5,528,150);
MFSetServoPos(6,486,150);
MFSetServoPos(7,313,150);
MFServoAction();
DelayMS(2000);
MFSetServoPos(1,629,150);
MFSetServoPos(2,540,150);
MFSetServoPos(3,923,150);
MFSetServoPos(4,404,150);
MFSetServoPos(5,388,150);
MFSetServoPos(6,486,150);
MFSetServoPos(7,546,150);
MFServoAction();
DelayMS(2000);
MFSetServoPos(1,629,150);
MFSetServoPos(2,550,150);
MFSetServoPos(3,510,150);
MFSetServoPos(4,561,150);
MFSetServoPos(5,487,150);
MFSetServoPos(6,486,150);
MFSetServoPos(7,318,150);
MFServoAction();
DelayMS(2000);
MFSetServoPos(1,794,150);
MFSetServoPos(2,550,150);
MFSetServoPos(3,510,150);
MFSetServoPos(4,561,150);
MFSetServoPos(5,487,150);
MFSetServoPos(6,486,150);
MFSetServoPos(7,318,150);
MFServoAction();
DelayMS(2000);
MFSetServoPos(1,835,150);
MFSetServoPos(2,550,150);
MFSetServoPos(3,352,150);
MFSetServoPos(4,400,150);
MFSetServoPos(5,395,150);
MFSetServoPos(6,506,150);
MFSetServoPos(7,318,150);
MFServoAction();
DelayMS(2000);
MFSetServoPos(1,224,150);
MFSetServoPos(2,565,150);
MFSetServoPos(3,499,150);
MFSetServoPos(4,529,150);
MFSetServoPos(5,511,150);
MFSetServoPos(6,506,150);
MFSetServoPos(7,318,150);
MFServoAction();
DelayMS(2000);
MFSetServoPos(1,224,150);
MFSetServoPos(2,559,150);
MFSetServoPos(3,832,150);
MFSetServoPos(4,529,150);
MFSetServoPos(5,511,150);
MFSetServoPos(6,506,150);
MFSetServoPos(7,318,150);
MFServoAction();
DelayMS(2000);
MFSetServoPos(1,224,150);
MFSetServoPos(2,559,150);
MFSetServoPos(3,832,150);
MFSetServoPos(4,529,150);
MFSetServoPos(5,511,150);
MFSetServoPos(6,506,150);
MFSetServoPos(7,555,150);
MFServoAction();
DelayMS(2000);
MFSetServoPos(1,525,150);
MFSetServoPos(2,540,150);
MFSetServoPos(3,492,150);
MFSetServoPos(4,553,150);
MFSetServoPos(5,483,150);
MFSetServoPos(6,518,150);
MFSetServoPos(7,555,150);
MFServoAction();
DelayMS(2000);
while
(1)
{
MFSetServoPos(1,525,150);
MFSetServoPos(2,602,150);
MFSetServoPos(3,492,150);
MFSetServoPos(4,553,150);
MFSetServoPos(5,483,150);
MFSetServoPos(6,518,150);
MFSetServoPos(7,555,150);
MFServoAction();
DelayMS(1000);
MFSetServoPos(1,525,150);
MFSetServoPos(2,495,150);
MFSetServoPos(3,492,150);
MFSetServoPos(4,553,150);
MFSetServoPos(5,483,150);
MFSetServoPos(6,518,150);
MFSetServoPos(7,555,150);
MFServoAction();
DelayMS(1000);
}
}
友情提示:
方案范本是经验性极强的领域,本范文无法思考和涵盖全面,供参考!
最好找专业人士起草或审核后使用。