資源簡介
本資源提供自己創作的機器人焊接軌跡規劃matlab仿真相關代碼,包括直線焊接、圓弧點焊、空間移動等功能,提供10余個m文件,可供直接建立功能調用使用

代碼片段和文件信息
function?[?p?]?=?calcCircleMotGlobalParameter(?pmArcWelding?)
%UNtitleD2?Summary?of?this?function?goes?here
%???Detailed?explanation?goes?here
quatFstPoint?=?angle2quat(mArcWelding.axisposPointS(4)mArcWelding.axisposPointS(5)mArcWelding.axisposPointS(6));
quatMidPoint?=?angle2quat(mArcWelding.axisposPointM(4)mArcWelding.axisposPointM(5)mArcWelding.axisposPointM(6));
quatEndPoint?=?angle2quat(mArcWelding.axisposPointE(4)mArcWelding.axisposPointE(5)mArcWelding.axisposPointE(6));
%%??這里好像有問題,當畫整圓時候就變成不畫了
if?abs(abs(mArcWelding.lrArcRotatedDegreeSigned)?-?2*pi)?0.0001
????tmpDot?=?0;
????angle1st?=?0;?
????angle2nd?=?0;
????circleOrientAngle?=?0;
else
????%%??計算前兩個姿態間夾角
????tmpDot?=?quatFstPoint(1)*quatMidPoint(1)?+?quatFstPoint(2)*quatMidPoint(2)?+?quatFstPoint(3)*quatMidPoint(3)?+?quatFstPoint(4)*quatMidPoint(4);
????if?tmpDot?>?1
????????angle1st?=?0;
????elseif?tmpDot?-1
????????????angle1st?=?360;
????else
????????????angle1st?=?2?*?acos(tmpDot)?*?180/pi;
????end
????if?abs(angle1st)?0.0001
????????angle1st?=?0;
????end
????%%??計算后兩個姿態間的夾角
????tmpDot?=?quatEndPoint(1)*quatMidPoint(1)?+?quatEndPoint(2)*quatMidPoint(2)?+?quatEndPoint(3)*quatMidPoint(3)?+?quatEndPoint(4)*quatMidPoint(4);
????if?tmpDot?>=?1
????????angle2nd?=?0;
????else?if?tmpDot?<=?-1
????????????angle2nd?=?360;
????????else
????????????angle2nd?=?2*acos(tmpDot)?*180/pi;
????????end
????end
????if?abs(angle2nd)?0.0001
????????angle2nd?=?0;
????end
????circleOrientAngle?=?angle1st?+?angle2nd;
????%%??將姿態角度賦給P變量
????p.arrCirclePhyPara(15)?=?circleOrientAngle;
????
????%%??分發加減速規劃算法
????p?=?IssueAccDecTime(pmArcWelding);
end
end
%%??速度加速度分發算法
function?[?p?]?=?IssueAccDecTime(?pmArcWelding?)
if?~mArcWelding.bWelding
????p=?AccDecNormalTime(pmArcWelding);
else
????switch?mArcWelding.nWeldingMode
????????case?0
????????????p?=?AccDecArcWeldingModeTime0(pmArcWelding);
??????????
????????case?1
????????????p?=?AccDecArcWeldingModeTime1(pmArcWelding);
????????????
????????case?2
????????????p?=?AccDecArcWeldingModeTime2(pmArcWelding);
????????????
????????case?3
????????????p?=?AccDecArcWeldingModeTime3(pmArcWelding);
???????????
????????case?4
????????????p?=?AccDecArcWeldingModeTime4(pmArcWelding);
????????????
????????otherwise
????????????p?=?AccDecArcWeldingModeTime0(pmArcWelding);
????end
end
???????????
end
%%??正常狀態下
function?[?p?]?=?AccDecNormalTime(?pmArcWelding?)
%%??2.1先計算圓弧位置運動所需時間
circleVConstPos?=?p.lrVelIn;
circleAccPos?=?p.lrAccIn;
circleDecPos?=?p.lrDecIn;
posTimeSpan?=?calculateNormalMoveTime(p.arrCirclePhyPara(5)circleAccPoscircleVConstPoscircleDecPos);
%%??2.2再計算直線姿態運動所需時間
circleVConstOrient?=?p.lrVelOri;
circleAccOrient?=?p.lrAccOri;
circleDecOrient?=?p.lrDecOri;
orientTimeSpan?=?calculateNormalMoveTime(p.arrCirclePhyPara(15)circleAccOrientcircleVConstOrientcircleDecOrient);
%%??2.3統籌位置和姿態運動各段時間
if?(sum(posTimeSpan)?>=?sum(orientTimeSpan))
???
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????9687??2018-10-16?15:35??Arc\calcCircleMotGlobalParameter.m
?????文件???????5683??2018-10-15?17:11??Arc\circleOrientInterp.m
?????文件???????2269??2018-10-16?14:32??Arc\circlePosInterp.m
?????文件??????13260??2018-10-16?08:30??Arc\GetSixAnglesIK.m
?????文件??????11067??2018-10-23?15:52??Arc\InvArc.m
?????文件???????2838??2018-10-16?14:33??Arc\IssueCalculateNextPos.m
?????文件???????1217??2018-09-07?10:58??Arc\IssueVel.m
?????文件????????436??2018-10-16?14:40??Arc\MoveArc.m
?????文件???????4872??2018-10-22?16:54??Arc\m_CalcCirCenterRadius.m
?????文件????????322??2018-10-22?17:43??Arc\test.m
?????文件?????????95??2018-10-22?17:38??Arc\try.m
?????目錄??????????0??2019-08-27?20:03??Arc
-----------?---------??----------?-----??----
????????????????51746????????????????????12
評論
共有 條評論