您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 教学型六自由度模块化手臂参考手册
教学型六自由度模块化手臂开发手册1教学型六自由度模块化手臂开发手册教学型六自由度模块化手臂开发手册2一、主要技术参数1)六自由度小型模块化手臂:六自由度;夹持力:120g;手爪:±45度;独立驱动电源/电池供电;聚合物可充电动力锂电池:7.2V,2000mAH;专用充电器,自动检测充电状态,过流过热保护;臂长:270mm;控制方式:独立控制芯片,最多可达8自由度控制;通讯方式:串口控制(UART),可直接与MT-U机器人通讯;安装方式:可以直接装配在大学版机器人MT-U上。2)小型模块化手臂与PC机通讯专用接口模块:采用RS232通讯方式;光电隔离;独立电源供电。3)小型模块化手臂配套专用PC机控制软件可以通过PC机直接控制各个关节;开放PC机控制的函数接口及控制协议;可以通过编程实现运动规划设计。4)伺服电机技术指标Type:MT-SERVO-20Dimension:66x30x64mm;Stalltorque:20kg/cm;Operatingspeed:0.20sec/60degree(4.8v);Operatingvoltage:4.8-7.2V;Temperaturerange:0℃_55℃;Deadbandwidth:10us.Type:MT-SERVO-10Dimension:40x20x42mmStalltorque:10kg/cmOperatingspeed:0.20sec/60degreeOperatingvoltage:4.8-7.2V教学型六自由度模块化手臂开发手册3Temperaturerange:0℃_55℃Deadbandwidth:10usType:MT-SERVO-6Dimension:40x20x42mmStalltorque:5kg/cmOperatingspeed:0.20sec/60degreeOperatingvoltage:4.8-7.2VTemperaturerange:0℃_55℃Deadbandwidth:10us二、装配方式(1)总体装配效果图(2)主要部件拆解图三、系统控制原理及接线图(3)系统控制原理伺服舵机控制器通讯接口控制接口18MT-U机器人串行接口(UART)接口模块PC机串行接口(RS-232)教学型六自由度模块化手臂专用控制软件教学型六自由度模块化手臂开发手册41)伺服舵机连接插头引脚定义:2)伺服舵机控制器端口定义:8路输出端口定义(Servo1~Servo8):输出端口与伺服舵机连接插头对应方式,如下图:3)控制端口及通讯端口:Servo1Servo2Servo3Servo4Servo5Servo6Servo7Servo82脚:SERVOPOWER+(电源+)1脚:control(控制信号线)3脚:GND(电源-)电源开关(PowerSwitch)电源指示灯(PowerLed)充电接口(RechargeSocket)通讯端口(Communication)此面朝上(有铜芯外露)2脚:SERVOPOWER+(电源+)1脚:control(控制信号线)3脚:GND(电源-)教学型六自由度模块化手臂开发手册54)PC专用串行通讯模块:(4)PC机串行通讯电缆接口(5)串行通讯模块电源输入接口5)其它配件:(6)聚合物动力锂电池充电器/外接电源(7)PC机串行通讯电缆教学型六自由度模块化手臂开发手册6五、伺服舵机控制器通讯协议1)接收数据:每一帧控制指令:4个字节;第一个字节:0xAF----数据帧起始字节;第二个字节:0x00~0x08----舵机序号(Servo1~Servo8);第三个字节:0x00~0xB4----旋转角度设定(-90°~+90°);第四个字节:0xFA----数据帧结束字节。2)返回数据:当正确接收一帧数据之后,伺服舵机控制器会返回一个字节数据做为接收确认信息。返回数据为:大写字母‘R’的ASCII码。六、详细使用方法当机器运行时,请远离机器,以免被机器撞伤。1)接线操作步骤:将PC机串行通讯电缆一端接在pc机的串口上,另一端接在手臂的USB口上。分别将两个电源的一端接在100V~240V插座上,另一端接在手臂相应接口,如图所示:(8)控制器电源输入接口(9)串行通讯模块电源输入接口教学型六自由度模块化手臂开发手册7拨动手臂底座上的开关,手臂上电,注意上电后手臂会自动找到机械零点位置。2)Demo软件操作方法:打开ArmControl文件夹,双击Tools文件夹内的Reg.bat文件。双击Bin文件夹内的ArmControl.exe。控制界面如下图所示:(10)软件运行界面选择port,注意port号可通过查看PC机设备管理器得到,如图所示:选择要控制的通道,程序中共有六个通道,Pan为通道1,Tilt为通道2,依次类推,单击“OpenComm”。(1)相对零点标定:各关节实际运行时的角度范围都在0~180度之间,但由于机械安装上的限制,有的关节可能达不到0或180度时就会卡住,因此在首次运行时需要对各关节设置最大角度和最小角度及相对零度点,并通过按钮“Save”将教学型六自由度模块化手臂开发手册8其保存到c:\\ServoControl.ini内,下面详细介绍标定方法:选中“SetZero?”,如图所示:以第一个通道为例,如图所示:设定最小值:鼠标左键向左拖动Pan对应的Slider滚动条,angle/(deg)内可看到此时的角度值,假如拖动到45度,单击“SetZero”按钮,第一通道对应的关节将运行到45度,如果舵机没有卡住,继续向左拖动滚动条,直到关节运行到最小的角度后,单击“MinAngle”,设定最小值完成。设定最大值:鼠标左键向右拖动滚动条,直到关节运行到最大的角度后,单击“MaxAngle”,设定零点:鼠标左键向左拖动滚动条,直到关节1运行到所需的位置,单击“Save”按钮,关节1标定完成,依次类推同样方法标定其他关节。单击“Reset”按钮,手臂运行到设置的零位(该零点与手臂上电时的零点不同,即为相对零点),如图所示:教学型六自由度模块化手臂开发手册9注:如果有偏差,请重新设置零点。(2)单自由度模块运动控制:滑动滚动条设置各自由度角度值,单击“Drive”按钮可驱动各自由度模块运动,并可在speed内分别设定每个自由度的速度值,如图所示:注:每个自由度模块运行角度的定义,均相对于前面标定的相对零点。(3)复位操作:单击“Reset”按钮,手臂复位至相对零点状态。(4)演示教学型六自由度模块化手臂开发手册10图1单击“OpenFile”按钮,会弹出如图2对话框,(1)选择已有文件,单击“Browse…”,到Bin里找Angle.mdb文件,图2教学型六自由度模块化手臂开发手册11图3单击“Teach”按钮,手臂会按上面的序列值往复运动,按“Stop”按钮停止运动。假如鼠标左键单击图3中sn为2号序列,相应的angle值也都变成相应的值,如图4:图4单击“Drive”按钮,手臂会运行到相应的角度。改变图4中的角度值,可单击“Insert”按钮将该组值插入到序列中,单击“Modify”可修改已有的序列,单击“Delete”删除已有序列。(2)新建文件单击“OpenFile”按钮,单击“Browse…”,将图2中*.mdb中的*改成文件名。其他与(1)相同。教学型六自由度模块化手臂开发手册12接口函数说明:ServoControl.h函数说明:(1)bool__stdcallInit(intnPort,DWORDdwBaud);参数说明:nPort:串口号dwBaud:波特率9600函数说明:打开串口(2)void__stdcallSetPostionCallback(SERVO_POSITION_CALLBACK*cbPosition,void*pParam);函数说明:设定事件处理过程(接收到数据)参数说明:SERVO_POSITION_CALLBACK:传入一个函数指针,该函数接收到事件后,交由该指针指向的函数处理函数原形为:typedefvoidSERVO_POSITION_CALLBACK(void*pParam,inttype,float*value,intnum);value为返回接收到的确认值‘R’;num为value下标值pParam:SERVO_POSITION_CALLBACK指向的函数所需的参数,一般为一个类或结构的指针(3)voiddrive(intJointID,intAngle);函数说明:控制各关节相对零点运动,运动范围在(MinAngle-ZeroAngle,MaxAngle-ZeroAngle)之间。参数说明:JointID:通道号Angle:相对角度(4)voidSetZero(intJointID,intAngle);函数说明:控制各关节绝对运动,运动范围在(MinAngle,MaxAngle)之间。参数说明:JointID:通道号Angle:绝对角度(5)voidInitialize(intJointID,intAngle);函数说明:初始化各关节的零点值。参数说明:JointID:通道号Angle:零点角度教学型六自由度模块化手臂开发手册13调用接口函数库方法:解决方案-〉右键单击ArmControl-〉属性输出目录:../bin,因为bin文件夹有该可执行文件所需要用的MTServoControl.dllC\C++常规-〉附加包含目录../include,该文件夹内有需要用到的头文件ServoControl.h;链接器常规-〉附加库目录../lib,该文件夹内有需要用到的静态链接库。链接器输入-〉附加依赖项内输入MTServoControl.lib简单介绍程序的编写:首先按上面的方法修改属性,添加头文件#includeServoControl.h,添加成员变量CServoControlm_ServoControl;首先要获得保存好的各关节的最大值最小值及零点位置,m_bOpen=m_ServoControl.Init(m_Port,9600);//打开串口,如果打开成功返回值为true,反之为falsefor(inti=0;i6;i++){m_ServoControl.Initialize(i+1,m_ZeroArray[i]);//注意在控制之前必须先初始化零点角度}m_ServoControl.SetPostionCallback(ServoPositionCallback,this);//设定事件处理过程在源文件开始位置定义voidServoPositionCallback(void*pParam,inttype,float*value,intnum);此时就可以编写控制各关节的函数了,如m_ServoControl.drive(num,m_Angle);控制各关节运动,注意要加设定条件:intm_Min,m_Max;m_Min=m_MinAngle[num-1]-m_ZeroArray[num-1];m_Max=m_MaxAngle[num-1]-m_ZeroArray[num-1];教学型六自由度模块化手臂开发手册14if(m_Anglem_Max){m_Angle=m_Max;}if(m_Anglem_Min){m_Angle=m_Min;}设定零点:m_ServoControl.SetZero(num,m_Angle);注意:向下位机发送运动控制指令时,假如关节1处于0度要运行到45度,实验证明45毫秒发送一度手臂运行平滑
本文标题:教学型六自由度模块化手臂参考手册
链接地址:https://www.777doc.com/doc-2384838 .html