¹¤³Ì°¸Àý¡ª»úÆ÷ÈËAdamsÐéÄâʵÑéÏêϸ²½Öè(¾«) ÏÂÔØ±¾ÎÄ

ÄÚÈÝ·¢²¼¸üÐÂʱ¼ä : 2025/7/8 7:11:43ÐÇÆÚÒ» ÏÂÃæÊÇÎÄÕµÄÈ«²¿ÄÚÈÝÇëÈÏÕæÔĶÁ¡£

2.1.2 ¶¯Á¦Ñ§·ÖÎö

£¨1£© ´´½¨»úе±ÛÄ£ÐÍ¡£°´ÕÕ2.1.1½ÚµÄ£¨1£©~£¨6£©²½´´½¨Í¬ÑùµÄ»úе±Û£¬²¢Ìí¼ÓÔ˶¯¸±Ô¼Êø¡£

£¨2£© Ìí¼ÓÇý¶¯¡£ÓëÔ˶¯·ÖÎö²»Í¬£¬¶¯Á¦Ñ§·ÖÎöÌí¼ÓµÄÇý¶¯Îªµ¥·ÖÁ¿Á¦¾Ø¡£µ¥»÷¹¤¾ßÀ¸Éϵĵ¥·ÖÁ¿Á¦¾ØÑ¡Ïî

£¬½«Ñ¡ÏîÉèÖÃΪSpace Fixed¡¢Normal to Grid

ºÍConstant£¬È»ºó¹´Ñ¡TorqueÏî²¢ÊäÈë4000£¬È»ºóÔÚͼÐÎÇøµ¥»÷¹Ø½Ú1£¬ÔÙÔÚÆäÉϵ¥»÷ÈκÎÒ»µã¡£ÓÃͬÑùµÄ·½·¨Ìí¼Ó¹Ø½Ú2µÄÇý¶¯£¬²¢½«ÆäÖµÉèÖÃΪ-100£¬Èçͼ2.11Ëùʾ¡£

2.11 Ìí¼Óµ¥·ÖÁ¿Á¦¾Ø

£¨3£©Ô˶¯Ñ§¼ÆËã·ÂÕæ¡£µ¥»÷²Ëµ¥¡¾Simulate¡¿¡ú¡¾Iteractive Controls¡¿£¬´ò¿ª½»»¥Ê½·ÂÕæ¿ØÖƶԻ°¿ò£¬ÔÚ¶Ô»°¿òÖн«·ÂÕæÊ±¼äEnd TimeÉèÖÃΪ2£¬·ÂÕæ²½ÊýStepsÉèÖÃΪ500£¬·ÂÕæÀàÐÍTypeÉèÖÃΪDynamic£¬µ¥»÷·ÂÕæ¼ÆËã°´Å¥£¬¹Û¿´·ÂÕæ¶¯»­£¬Ä£Ðͽ«ÔÚÖØÁ¦ºÍÇý¶¯Á¦¾Ø×÷ÓÃÏÂÔ˶¯¡£

£¨4£©»æÖÆÔ˶¯¹ì¼£¡£µ¥»÷²Ëµ¥¡¾Review¡¿¡ú¡¾Create Trace Spline¡¿£¬È»ºóÑ¡Ôñ¹Ø½Ú2ÓҶ˵ãMarker4£¬ÔÙÑ¡Ôñ¹Ø½Ú1Óë´óµØµÄ½Â½Óµã£¬Êó±êÒÆ¶¯µ½Joint1´¦£¬µ¥»÷Êó±êÓÒ¼ü£¬ÔÚµ¯³ö¶Ô»°¿òÖÐÑ¡Ôñground£¬µ¥»÷OK´´½¨Ô˶¯¹ì¼££¬Èçͼ2.12Ëùʾ¡£

2.12 »úе±ÛÄ©¶ËÔ˶¯¹ì¼£

£¨5£©½á¹ûºó´¦Àí¡£ÔÚºó´¦ÀíÄ£¿é£¬Í¨¹ý²Ëµ¥¡¾View¡¿¡ú¡¾Load Animation¡¿¿ÉÒÔÔØÈ붯»­¡£µ¥»÷²¥·Å°´Å¥ºó¿ªÊ¼²¥·Å¶¯»­£¬ÔÚ²¥·Åͬʱ°´Ï¼Ç¼°´Å¥

£¬

½«¶¯»­±£´æµ½¶¯»­ÎļþÖС£

ÔÚºó´¦ÀíÄ£¿éÖУ¬Í¨¹ý²Ëµ¥¡¾View¡¿¡ú¡¾Load Plot¡¿£¬Í¨¹ýÑ¡ÔñÏàÓ¦µÄÑ¡Ï»æÖƳöÏàÓ¦µÄ½á¹ûÇúÏß¡£Èç¹û2.13¡¢2.14Ëùʾ£¬·Ö±ð»æÖƳö»úе±ÛÄ©¶ËµãµÄËÙ¶ÈÇúÏߺͼÓËÙ¶ÈÇúÏß¡£

2.13 »úе±ÛÄ©¶ËËÙ¶ÈÇúÏß

2.14 »úе±ÛÄ©¶Ë¼ÓËÙ¶ÈÇúÏß

2.1.3 ¹ì¼£¹æ»®

±¾Àý½«½¨Á¢ÔÚADAMS/ViewÖÐÓÃContros Toolkits½¨Á¢¿ØÖÆÏµÍ³£¬Í¨¹ýPID»·½Ú½øÐпØÖÆ£¬¿ØÖƶÔÏóÊÇ×÷ÓÃÔÚÿ¸ö¹Ø½Úµ¥·ÖÁ¿Á¦¾Ø£¬Ê¹»úе±ÛµÄÄ©¶ËÔ˶¯¹ì¼£ÎªÔ²¡£

ÒòΪ¹Ø½Ú1µÄÒ»¶ËÓë´óµØ£¨Ground£©Ô­µã½Â½Ó£¬Òò´Ë½«Ô²µÄ·½³ÌÉèΪ£¨x-550£©222

+y=50£¬ÓòÎÊýÐÎʽ±íʾ¾ÍÊÇx=550+50*cos£¨t£©£¬y=50*sin£¨t£©£¬ÒªÊ¹¹Ø½Ú2µÄÄ©¶ËÔ˶¯¹ì¼£°´Ö¸¶¨µÄ¹ì¼£Ô˶¯£¬ÕâʱÐèҪͨ¹ý¹ì¼£·½³Ì¼ÆËã³öÁ½¸ö¹Ø½ÚµÄ¹Ø½Ú±äÁ¿£¬È»ºó½«ÕâÁ½¸ö¹Ø½Ú±äÁ¿×÷Ϊ¿ØÖÆÏµÍ³Ä£Ð͵ĹؽÚÊäÈë¡£ÓÃMATLAB±à³Ì£¬¼ÆËãÁ½¹Ø½Ú±äÁ¿£¬Óõ½µÄº¯ÊýÊÇÇó½â·ÇÏßÐÔ·½³Ì×éµÄº¯Êýfsolve£¬Éè?1 £¬?2·Ö±ðΪ¹Ø½Ú1ºÍ¹Ø½Ú2µÄ½ÇÎ»ÒÆ£¬l1£¬l2ΪÁ½¹Ø½ÚµÄ³¤¶È£¬·ÇÏßÐÔ·½³Ì×éΪ

?x?l1*cos(?1)?l2*cos(?2)£¬MATLAB³ÌÐò¼ÆËã´úÂëÈçÏ£º ??y?l1*sin(?1)?l2*sin(?2)global x1 y1 %ÃüÁîÎļþ t=0: pi/200:2*pi£» x=550+50*cos£¨t£©£» y=50*sin£¨t£©£» temp=[0£¬0]'£» for n=1:401 x1=x£¨n£©£» y1=y£¨n£©£»

Q=fsolve£¨'myfunfun'£¬temp£¬optimset£¨'Display'£¬'off'£©£©£» temp=Q£»

q1£¨n£©=Q£¨1£©£» q2£¨n£©=Q£¨2£©£» end

function q=myfunfun£¨p£© %µ÷Óõĺ¯ÊýÎļþ global x1 y1 qq1=p£¨1£©£» qq2=p£¨2£©£»

q£¨1£©=300*cos£¨qq1£©+300*cos£¨qq1+qq2£©-x1£» q£¨2£©=300*sin£¨qq1£©+300*sin£¨qq1+qq2£©-y1£» ¼ÆËãÍê³Éºó£¬¾ØÕóq1ÀïÃæ±£´æµÄÊǹؽÚ1µÄ½ÇÎ»ÒÆ£¬¾ØÕóq2ÀïÃæ±£´æµÄÊǹؽÚ2µÄ½ÇÎ»ÒÆ£¬È»ºóÔÙ½«ÕâÁ½¸ö¹Ø½Ú±äÁ¿ÒÔSPLINEµÄÐÎʽÊäÈëµ½ADAMSÖУ¬×÷ΪģÐ͵ĹؽÚÊäÈë¡£

½¨Á¢¿ØÖÆÏµÍ³¾ßÌå²½ÖèÈçÏ£º

£¨1£© ½¨Á¢»úе±ÛµÄÄ£ÐÍ£¬ÔÚÁ½¸ö¹Ø½Ú´¦·Ö±ðÌí¼Óµ¥·ÖÁ¿Á¦¾Ø£¬È»ºó½«ÊýÖµÉèΪ0¡£

£¨2£© ½«MATLAB¼ÆËã³öµÄÊý¾ÝÒÔSplineÐÎʽµ¼ÈëADAMS¡£½¨Á¢Îı¾Îĵµ±£´æÔÚADAMS¹¤×÷Ŀ¼Ï£¬ÎĵµÖеĴæÓÐÁ½ÁÐÊý¾Ý£ºµÚÒ»ÁÐΪʱ¼ä£¬µÚ¶þÁÐΪq1¾ØÕó¡£µ¥»÷²Ëµ¥¡¾File¡¿¡ú¡¾Import¡¿¡ú¡¾Test Data¡¿ºó£¬Ñ¡ÖÐCreate Splines£¬È»ºóÔÚFile To ReadÊäÈë¿òÖе¥»÷Êó±êÓÒ¼ü£¬ÔÚµ¯³öµÄ¿ì½Ý²Ëµ¥ÖÐÑ¡Ôñ¡¾Browse¡¿ÔÚµ¯³öµÄ¶Ô»°¿òÖÐÑ¡ÔñÏàÓ¦µÄÎı¾Îļþ£¬ÔÚIndependent Column IndexÖÐÊäÈë1£¬

±íʾĬÈϵÚÒ»ÁÐΪʱ¼ä£¬È»ºóµ¥»÷OK°´Å¥´´½¨ÁËSPLINE¡£Èçͼ2.15Ëùʾ¡£È»ºóÓÃͬÑùµÄ·½·¨µ¼Èë¹Ø½Ú2µÄÊý¾Ý¡£

2.16 µ¼ÈëÊý¾ÝÎļþ½¨Á¢SPLINES

£¨3£© ½¨Á¢¿ØÖÆÏµÍ³µÄÊäÈë»·½Ú¡£µ¥»÷²Ëµ¥¡¾Build¡¿¡ú¡¾Controls Toolkit¡¿¡ú¡¾Standard Control Blocks¡¿ºó£¬µ¯³ö´´½¨¿ØÖÆ»·½Ú¹¤¾ß°ü£¬ÔÚÆäÖе¥»÷ÊäÈë»·½Ú°´Å¥

£¬½«NameÊäÈë¿òÖеÄÃû³ÆÐÞ¸ÄΪ.Control_PID.joint1_input£¬µ¥»÷

£¬£¬µ¯³öº¯Êý¹¹ÔìÆ÷£¬ÔÚÆäº¯ÊýÏÂÀ­±íÖÐÑ¡SplineÏ

functionÊäÈë¿òºóµÄ°´Å¥

È»ºóµ¥»÷Assist°´Å¥£¬µ¯³öº¯Êý¸¨Öú¶Ô»°¿ò£¬ÔÚFirst Independent VariableÖÐÊäÈë

1£¬È»ºóÔÚSpline NameÖе¥»÷Êó±êÓÒ¼ü£¬ÔÚµ¯³ö¿ì½Ý²Ëµ¥ÖÐÑ¡Ôñ¡¾Spline¡¿¡ú¡¾Guesses¡¿¡ú¡¾Spline1¡¿£¬µ¥»÷OK°´Å¥£¬Èçͼ2.16Ëùʾ£¬È»ºóµ¥»÷OK°´Å¥¡£

2.16 ½¨Á¢ÊäÈë»·½Ú

ÓÃͬÑùµÄ·½·¨ÔÙ½¨Á¢ÊäÈë»·½Ú£¬½«Ãû³Æ¸ÄΪ.Control_PID.joint1.angl£¬ÔÚµ¯³öµÄº¯Êý¹¹ÔìÆ÷ÖÐÑ¡ÔñDisplacementÏȻºóÔÚÆäÏÂÃæµÄº¯ÊýÁбíÖУ¬µ¥»÷Angle about z£¬µ¥»÷Assist°´Å¥£¬µ¯³öº¯Êý¸¨Öú¶Ô»°¿ò£¬To MakerÊäÈë¿òÖе¥»÷Êó±êÓÒ¼ü£¬Ôڲ˵¥ÖÐÑ¡Ôñ¡¾Marker¡¿¡ú¡¾Pick¡¿ÏȻºóµ¥»÷ÓëÐýת¸±Ïà¹ØÁªµÄPART_2.MARKER_3£¬ÓÃͬÑù·½·¨ÎªFrom MarkerÊäÈë¿òÊÐÇøÐýת¸±Ïà¹ØÁªµÄground.MARKER_4£¬µ¥»÷OK°´Å¥¡£

£¨4£© ´´½¨±È½Ï»·½Ú¡£µ¥»÷¿ØÖÆ»·½Ú¹¤¾ß°üÖеıȽϻ·½Ú°´Å¥

£¬½«Name

ÊäÈë¿òÖеÄÃû×Ö¸ÄΪ.Control_PID.sum1£¬ÔÚInput 1ÊäÈë¿òÖе¥»÷Êó±êÓÒ¼ü£¬ÔÚµ¯³öµÄ¿ì½Ý²Ëµ¥ÖÐÑ¡Ôñ¡¾controls_input¡¿¡ú¡¾Guesses¡¿¡ú¡¾Joint1_input¡¿£¬ÔÚInput 2ÊäÈë¿òÖе¥»÷Êó±êÓÒ¼ü£¬ÔÚµ¯³öµÄ¿ì½Ý²Ëµ¥ÖÐÑ¡Ôñ¡¾controls_input¡¿¡ú¡¾Guesses¡¿¡ú¡¾Joint1_angl¡¿£¬ÆäËûÑ¡ÏîĬÈÏ¡£ÓÃͬÑùµÄ·½·¨½¨Á¢¹Ø½Ú2µÄ±È½Ï»·½Ú.Control_PID.sum2¡£

£¨5£© ´´½¨PID»·½Ú¡£µ¥»÷¿ØÖÆ»·½Ú¹¤¾ß°üÖеÄPID°´Å¥£¬ÔÚInputÊäÈë¿òÖе¥»÷Êó±êÓÒ¼ü£¬ÔÚµ¯³öµÄ¿ì½Ý²Ëµ¥ÖÐÑ¡Ôñ¡¾controls_sum¡¿¡ú¡¾Guesses¡¿¡ú¡¾sum_1¡¿£¬ÔÚInput 2ÊäÈë¿òÖе¥»÷Êó±êÓÒ¼ü£¬ÔÚµ¯³öµÄ¿ì½Ý²Ëµ¥ÖÐÑ¡Ôñ¡¾controls_input¡¿¡ú¡¾Guesses¡¿¡ú¡¾Joint1_angl¡¿£¬ÆäËûÑ¡ÏîĬÈÏ£¬Èçͼ2.17Ëùʾ¡£ÓÃͬÑùµÄ·½·¨½¨Á¢¹Ø½Ú2µÄPID¿ØÖÆ»·½Ú¡£

2.17 ´´½¨PID»·½Ú

£¨6£© ½«µ¥·ÖÁ¿Á¦¾Ø²ÎÊý»¯¡£ÔÚͼÐÎÇøË«»÷µ¥·ÖÁ¿Á¦¾ØµÄͼ±ê£¬ÔÚµ¯³öµÄ±à¼­¶Ô»°¿òÖУ¬µ¥»÷FunctionÊäÈë¿òºóµÄº¯Êý¹¹ÔìÆ÷°´Å¥£¬ÔÚGetting Object DataÏÂÀ­²Ëµ¥ÖÐÑ¡ÔñMeasures£¬È»ºóÔÚÊäÈë¿òÖе¥»÷Êó±êÓÒ¼ü£¬Ñ¡Ôñ¡¾Runtme_Measure¡¿¡ú¡¾Guesses¡¿¡ú¡¾pid_1¡¿£¬È»ºóÔÚµ¥»÷Insert Object Name°´Å¥£¬µ¥»÷OK£¬Èçͼ2.18Ëùʾ¡£ÓÃͬÑùµÄ·½·¨½«¹Ø½Ú2µÄµ¥·ÖÁ¿Á¦¾ØÓëpid_2Ïà¹ØÁª¡£