======================
控制器æè¿°
======================
主循环
---------
.. image::../_static/diagram1.jpg
:align: center
:alt: 概述图
ä¸»ç¨‹åºæ˜¯ä½äºŽæ¤ç›®å½•下的 **run_robot.py** 。机器人代ç 以循环方å¼è¿è¡Œï¼Œé€šè¿‡æ“çºµæ†æŽ¥å£ã€æŽ§åˆ¶å™¨å’Œç¡¬ä»¶æŽ¥å£æ¥å调其行为。
æ“çºµæ†æŽ¥å£è´Ÿè´£ä»ŽUDP套接å—è¯»å–æ“纵æ†è¾“入,并将其转æ¢ä¸ºé€šç”¨çš„æœºå™¨äºº **命令** 类型。å¦ä¸€ä¸ªå•ç‹¬çš„ç¨‹åº **joystick.py** å‘布这些UDP消æ¯ï¼Œå®ƒè´Ÿè´£é€šè¿‡è“牙从PS4控制器读å–输入。控制器承担大部分工作,在ä¸åŒçжæ€ï¼ˆå°è·‘ã€è¡Œèµ°ã€ä¼‘æ¯ç‰ï¼‰ä¹‹é—´åˆ‡æ¢ï¼Œå¹¶ç”Ÿæˆèˆµæœºä½ç½®ç›®æ ‡ã€‚下é¢å±•示了控制器的详细模型。代ç 的第三个组件,å³ç¡¬ä»¶æŽ¥å£ï¼Œå°†æŽ§åˆ¶å™¨ç”Ÿæˆçš„ä½ç½®ç›®æ ‡è½¬æ¢ä¸ºPWMå 空比,然åŽå°†å…¶ä¼ 递给 **pigpiod** çš„Python绑定,该绑定éšåŽåœ¨è½¯ä»¶ä¸ç”ŸæˆPWMä¿¡å·ï¼Œå¹¶å°†è¿™äº›ä¿¡å·å‘é€åˆ°è¿žæŽ¥åˆ°æ ‘莓派的电机。
控制器细节
------------------
.. image::../_static/diagram2.jpg
:align: center
:alt: 控制器图
æ¤å›¾å±•示了机器人控制器的细分结构。在其ä¸ï¼Œä½ å¯ä»¥çœ‹åˆ°å››ä¸ªä¸»è¦ç»„ä»¶ï¼šæ¥æ€è°ƒåº¦å™¨ï¼ˆä¹Ÿç§°ä¸ºæ¥æ€æŽ§åˆ¶å™¨ï¼‰ã€ç«™ç«‹æŽ§åˆ¶å™¨ã€æ‘†åŠ¨æŽ§åˆ¶å™¨å’Œé€†è¿åЍ妿¨¡åž‹ã€‚
æ¥æ€è°ƒåº¦å™¨è´Ÿè´£è§„划在任何给定时间哪些脚应ç€åœ°ï¼ˆç«™ç«‹ï¼‰ï¼Œå“ªäº›è„šåº”å‘å‰ç§»åŠ¨åˆ°ä¸‹ä¸€æ¥ï¼ˆæ‘†åŠ¨ï¼‰ã€‚ä¾‹å¦‚åœ¨å°è·‘æ—¶ï¼Œå¯¹è§’çš„è…¿å¯¹åŒæ¥ç§»åŠ¨ï¼Œå¹¶åœ¨ç«™ç«‹å’Œæ‘†åŠ¨ä¹‹é—´è½®æµã€‚å¦‚å›¾æ‰€ç¤ºï¼Œæ¥æ€è°ƒåº¦å™¨å¯ä»¥è¢«è§†ä¸ºæ¯æ¡è…¿çš„æŒ‡æŒ¥è€…,éšç€æ—¶é—´æŽ¨ç§»åœ¨ç«™ç«‹å’Œæ‘†åŠ¨ä¹‹é—´åˆ‡æ¢ã€‚
站立控制器控制ç€åœ°çš„脚,实际上éžå¸¸ç®€å•。它查看期望的机器人速度,然åŽä¸ºè¿™äº›ç«™ç«‹çš„脚生æˆç›¸å¯¹äºŽèº«ä½“çš„ç›®æ ‡é€Ÿåº¦ï¼Œè¯¥é€Ÿåº¦ä¸ŽæœŸæœ›é€Ÿåº¦æ–¹å‘相å。它还包å«è½¬å‘åŠŸèƒ½ï¼Œåœ¨è¿™ç§æƒ…况下,它使脚相对于身体沿与期望身体旋转方å‘相å的方å‘转动。
摆动控制器抬起刚刚完æˆç«™ç«‹é˜¶æ®µçš„脚,并将其移动到下一个触地ä½ç½®ã€‚触地ä½ç½®çš„选择是为了使脚在摆动ä¸å‘å‰ç§»åŠ¨çš„è·ç¦»ä¸Žåœ¨ç«™ç«‹ä¸å‘åŽç§»åŠ¨çš„è·ç¦»ç›¸åŒã€‚例如,如果在站立阶段脚以 -0.4m/s 的速度å‘åŽç§»åŠ¨ï¼ˆä»¥å®žçŽ°èº«ä½“ +0.4m/s 的速度),且站立阶段æŒç» 0.5 秒,那么我们知é“脚将å‘åŽç§»åЍ -0.20mã€‚ç„¶åŽæ‘†åŠ¨æŽ§åˆ¶å™¨å°†è„šå‘å‰ç§»åЍ 0.20m,使其回到起始ä½ç½®ã€‚ä½ å¯ä»¥æƒ³è±¡ï¼Œå¦‚果摆动控制器åªå°†è…¿å‘å‰ç§»åЍ 0.15m,那么æ¯ä¸€æ¥è„šç›¸å¯¹äºŽèº«ä½“就会越æ¥è¶Šè½åŽ -0.05m。
站立和摆动控制器都会为脚生æˆç›¸å¯¹äºŽèº«ä½“质心的笛å¡å°”åæ ‡ä¸çš„ç›®æ ‡ä½ç½®ã€‚在笛å¡å°”åæ ‡ä¸è¿›è¡Œç«™ç«‹å’Œæ‘†åŠ¨è§„åˆ’å¾ˆæ–¹ä¾¿ï¼Œä½†æˆ‘ä»¬çŽ°åœ¨éœ€è¦å°†å…¶è½¬æ¢ä¸ºç”µæœºè§’度。这通过使用逆è¿åЍ妿¨¡åž‹æ¥å®Œæˆï¼Œè¯¥æ¨¡åž‹åœ¨ç¬›å¡å°”èº«ä½“åæ ‡å’Œç”µæœºè§’åº¦ä¹‹é—´è¿›è¡Œæ˜ å°„ã€‚è¿™äº›ç”µæœºè§’åº¦ï¼Œä¹Ÿç§°ä¸ºå…³èŠ‚è§’åº¦ï¼Œç„¶åŽè¢«å¡«å……到 **状æ€** å˜é‡ä¸ï¼Œå¹¶ç”±æ¨¡åž‹è¿”回。