肖 刚,习佳俊,曹明恒,杨 龙,梁 彤,许圆圆
(宝鸡文理学院 机械工程学院,陕西 宝鸡 721016)
随着已有公路使用年限的增加,我国大批公路即将进入养护阶段。据有关数据统计,我国每年有12%的公路需要翻修和养护,旧沥青废弃量高达每年240万吨之巨,而且这个数字以每年15%的速度增长。为了减少养护过程中的环境污染,2018年交通部和陕西省交通厅印发了《关于进一步加强公路养护工程项目环境保护工作的通知》陕交函〔2018〕1102号,通知明确要求采用机械化设备提高养护效率,养护过程严格按照“绿色、循环、低碳”的原则。2018年开始政府部门相继推出了《服务机器人科技发展“十二五”专项规划》《中国制造2025》《机械工业“十三五”质量管理规划纲要》《机器人产业发展规划(2016-2020年)》等文件,文件提出将机器人相关产业列为未来重点攻关领域。
在此背景下,本文在查阅已有研究资料基础上,首先通过UG建立公路养护机械臂装置三维实体简化模型,然后利用机械人相关理论中的D-H法建立了所设计机械臂的数学模型,在数学模型基础上通过MATLAB软件对机械臂末端运动轨迹进行分析与规划,得到公路养护车机械臂装置的最优设计结果,最后,利用ARDUINO控制芯片、电机和继电器等构件搭建了机械臂及控制系统实物模型。
利用UG软件建立的机械臂三维模型如图1所示。机械臂工作主要承力支架由电机结构支撑架7、8和可转位养护设备支撑架14组成,由机械臂底座1固定在养护车的后承受板上,电机4用于控制可转位养护设备在横向的转动,电机6用于控制可转位养护设备在纵向的转动,使可转位设备到达工作区域,电机10、13控制可转位设备的水平及其工作刀口方向运动,电机16安装在支撑架14上,通过电机10、13来驱动设备精准到达工作区域,由锥形齿轮19传输电机18动力带动铣刨切割刀具17工作。
1-机械臂底座;2,11,12-电机机槽;3-螺丝;4,5-水平运动电机;6,10,13-垂直运动电机;7,8-电机机械臂支架;9-机械臂支架螺母;14-可转位养护设备支撑架;15-可转位设备外罩;16,18-可转位动力电机;17-铣刨、切割刀具;19-锥形齿轮
机械臂参数影响末端轨迹,末端轨迹关系到机械臂是否可以有效工作,因此进行末端轨迹分析主要是为了避免运动过程中的干涉,合理选择参数,就可确保机械臂具有较大的有效工作范围,图2为机械臂运动学模型。
图2中,坐标系X0Y0Z0位于底座的回转中心,X1Y1Z1为一节臂回转中心,底座和一节臂之间通过圆柱销链接,底座可以绕Z0转动,s和h分别为两个坐标系横向和纵向之间的距离。
根据图2,利用D-H法建立机械手末端相对于固定坐标系的位置方程:
图2 机械臂运动学模型
(1)
其中:θ123=Φ3+Φ2-Φ1;θ12=Φ2-Φ1。
根据表1中的机械臂运动参数,取转台摆动角度Φ0为-30°~30°,Φ1为30°~70°,Φ2为50°~130°,臂长l1=1.8 m,二节臂长l2=1.5 m,可得机械臂在XYZ空间的运动范围,如图3所示。
表1 机械臂运动参数
图3 机械手末端运动轨迹
利用MATLAB设计的主程序如下:
clear all;clc;
s=0.2;h=0.8;L3=2.5;L1=1.8;L2=1.5;
v1=3*pi/18:pi/18:7*pi/18;v2=5*pi/18:2*pi/36:13*pi/18;
m1=length(v1);m2=length(v2);D=zeros(m1,m2);Z=zeros(m1,m2);
DX=zeros(m1,m2);DY=zeros(m1,m2);v0=-3*pi/18:pi/36:3*pi/18;
m3=length(v0);
for ii=1:m3
for i=1:m1
for j=1:m2
D(i,j)=s+L1.*cos(v1(i))+L2.*cos(v2(j)-v1(i));
DX(i,j)=cos(v0(ii)).*D(i,j);DY(i,j)=sin(v0(ii)).*D(i,j);
Z(i,j)=h+L1*sin(v1(i))-L2*sin(v2(j)-v1(i))-L3;
scatter3(DX(i,j),DY(i,j),Z(i,j),'r')
hold on
end
end
hold on
end
xlabel('X');ylabel('Y');zlabel('Z')
(1)机械臂舵机的初始化到等待状态代码:
void myservosetup()
{sea=myservoA.read();seb=myservoB.read();sec=myservoC.read();
sed=myservoD.read();see=myservoE.read();sef=myservoF.read();
myspeed=500;
for(pos=0;pos<=myspeed;pos+=1)
{myservoA.write(int(map(pos,1,myspeed,sea,66)));
myservoB.write(int(map(pos,1,myspeed,seb,90)));
myservoC.write(int(map(pos,1,myspeed,sec,50)));
myservoD.write(int(map(pos,1,myspeed,sed,90)));
myservoE.write(int(map(pos,1,myspeed,see,120)));
myservoF.write(int(map(pos,1,myspeed,sef,90)));
delay(1);}}
(2)控制程序主要定义引脚:
{Serial.begin(9600,SERIAL_8N1);
mycomflag=2;//机械臂默认上电状态为:2 自动运行
myservoA.attach(3);//控制腰部(A)的端口是~3号
myservoB.attach(5);//控制大臂(B)的端口是~5号
myservoC.attach(6);//控制小臂(C)的端口是~6号
myservoD.attach(9);//控制小臂旋转(D)的端口是~9号
myservoE.attach(10);//控制腕部(E)的端口是~10号
myservoF.attach(11);//控制腕部旋转(F)的端口是~11号
myservoA.write(66);myservoB.write(90);myservoC.write(55);
myservoD.write(90);myservoE.write(120);myservoF.write(90);}
(3)压力测控部分主程序代码:
{long PRESS_AO =0;
int VOLTAGE_AO =0;int value =analogRead(pin);
DEBUGSerial.print("AD =");DEBUGSerial.print(value);
DEBUGSerial.print(" ,");
VOLTAGE_AO =map(value,0,1023,0,5000);
DEBUGSerial.print("V =");
DEBUGSerial.print(VOLTAGE_AO);DEBUGSerial.print(" mv,");
if(VOLTAGE_AO {PRESS_AO =0;}else if(VOLTAGE_AO >VOLTAGE_MAX) {PRESS_AO =PRESS_MAX;} else {PRESS_AO =map(VOLTAGE_AO,VOLTAGE_MIN,VOLTAGE_MAX,PRESS_MIN,PRESS_MAX);} return PRESS_AO;} 图4为搭载在公路养护车上的机械臂,主要用于驱动可转位养护设备。图4中,1为机械臂的底座,主要用于机械臂的安装;2为机械臂的水平旋转电机,其作用是驱动机械臂进行水平旋转移动;3为机械臂驱动可转位设备的主要电机;4为机械臂驱动可转位养护设备的主要承受臂;5为机械臂垂直移动辅助电机,其主要作用是配合电机3驱动机械臂进行垂直运动;6为机械臂驱动可转位养护设备电机,其功能是驱动旋转可转位养护设备;7为可转位养护设备的结构控制机架;8为控制可转位养护设备切换的电机。图5为机械臂装置实物图,主要采用ARDUINO和继电器控制。 1-机械臂底座;2-水平运动电机;3,5,6-垂直运动电机;4-机械臂支撑架;7-可转位设备支撑架;8-可转位电机 本文利用UG建立起吊装置的三维简化模型,设计机械臂控制系统,对机械臂装置进行运动轨迹规划,通过对机械臂装置进行参数化设计,得到公路养护车机械臂装置的最优设计结果,可为公路养护车机械臂装置的设计和改进提供一定的参考。 1-机械臂支撑架;2,3,5-运动电机;4-可转位设备支撑架;6-可转位设备4 实物模型搭建
5 结论