核心内容摘要
天府之国的“成都BBBB弱弱BBBB”:一场关于味蕾的温柔探索
1 第一部分ä½�å§¿ä¸�旋转矩阵在纯粹的数å—世界如 ChatGPTä¸ä¿¡æ�¯çš„æœ€å°�å�•ä½�是 Token而在具身智能的物ç�†ä¸–界ä¸ä¿¡æ�¯çš„æœ€å°�å�•ä½�是ä½�å§¿Pose。如æ�œä½ æ— æ³•ç²¾ç¡®åœ°ç”¨æ•°å¦è¯è¨€æ��述“我的手在哪里â€�以å�Šâ€œæˆ‘的手æœ�å�‘哪里â€�那么任何高层的规划Planningéƒ½æ— æ³•è�½åœ°ä¸ºæ‰§è¡ŒControl。è¿�动å¦Kinematicsæ˜¯ç ”ç©¶è¿�åŠ¨çš„å‡ ä½•æ€§è´¨è€Œä¸�考虑å�—力的å¦ç§‘它是è¿�æ�¥â€œæ„ŸçŸ¥â€�ä¸�“行动â€�çš„ç¬¬ä¸€ä¸ªæ•°å¦æ¡¥æ¢�。
刚体å�‡è®¾ä¸�ä½�å§¿æ��è¿° (Position and Orientation)åœ¨å…·èº«æ™ºèƒ½ä¸æˆ‘们通常将机器人如机械臂ã€�人形机器人的躯干视为刚体Rigid Body。定义刚体上任æ„�两点之间的è·�离在è¿�动过程ä¸ä¿�æŒ�ä¸�å�˜ã€‚è¿™æ„�味ç�€æˆ‘们ä¸�需è¦�åƒ�æµ�体力å¦é‚£æ ·è®¡ç®—æ¯�一个粒å�的状æ€�å�ªéœ€è®¡ç®—刚体上固è¿�å��æ ‡ç³»Body Frame的状æ€�。
1 自由度 (Degrees of Freedom, DOF)åœ¨ä¸‰ç»´ç©ºé—´ä¸æ��è¿°ä¸€ä¸ªè‡ªç”±æµ®åŠ¨çš„åˆšä½“ä¾‹å¦‚æ— äººæœºæˆ–å°šæœªå›ºå®šçš„æœºæ¢°æ‰‹æœ«ç«¯éœ€è¦� 6 个å�‚æ•°å�³6-DOFä½�ç½® (Position, 3-DOF)æ��述刚体在空间ä¸çš„å��æ ‡ (x, y, z)。姿æ€� (Orientation, 3-DOF)æ��述刚体在空间ä¸çš„æœ�å�‘滚转ã€�俯仰ã€�å��航。
2 å��æ ‡ç³»çš„æ˜ å°„å…³ç³»æœºå™¨äººå¦æœ¬è´¨ä¸Šæ˜¯å¤„ç�†ä¸�å�Œå��æ ‡ç³»ä¹‹é—´å�˜æ�¢çš„å¦ç§‘。世界å��æ ‡ç³» (World Frame,)固定的ã€�ç»�对的å�‚考系例如机械臂的底座或房间的角è�½ã€‚机体å��æ ‡ç³» (Body Frame,)附ç�€åœ¨è¿�动物体上的å��æ ‡ç³»ä¾‹å¦‚æœºæ¢°è‡‚çš„æœ«ç«¯æ‰§è¡Œå™¨æˆ–æœºå™¨ç‹—çš„èº¯å¹²ä¸å¿ƒã€‚æ ¸å¿ƒä»»åŠ¡æˆ‘ä»¬éœ€è¦�找到一ç§�æ•°å¦æ��述能够将系ä¸çš„ç‚¹æ˜ å°„åˆ°ç³»ä¸è¡¨ç¤ºã€‚æ•°å¦è¡¨è¾¾ä¸ºå…¶ä¸ç‚¹ P 在世界å��æ ‡ç³»ä¸‹çš„å��æ ‡ã€‚ç‚¹ P 在机体å��æ ‡ç³»ä¸‹çš„å��æ ‡ã€‚æ��述相对äº�的旋转本节é‡�点。æ��è¿°å�Ÿç‚¹ç›¸å¯¹äº�å�Ÿç‚¹çš„平移。
旋转矩阵 (Rotation Matrix) çš„æ�¨å¯¼ä¸�本质平移Translationå�ªæ˜¯ç®€å�•çš„å�‘é‡�åŠ æ³•çº¿æ€§ä¸”ç›´è§‚ã€‚æ—‹è½¬Rotationæ˜¯å…·èº«æ™ºèƒ½ä¸æ•°å¦å¤�æ�‚性的主è¦�æ�¥æº�也是导致é��线性的主è¦�å�Ÿå› 。最基础的æ��è¿°æ–¹å¼�是旋转矩阵。
1 ä»�基å�‘é‡�投影的角度ç�†è§£ä¸�è¦�æ»è®°ç¡¬èƒŒæ—‹è½¬å…¬å¼�。ä»�投影的角度ç�†è§£æœ€ä¸ºä¸¥è°¨ã€‚å�‡è®¾å��æ ‡ç³»çš„ä¸‰ä¸ªä¸»è½´å�•ä½�å�‘é‡�为。 å��æ ‡ç³»çš„ä¸‰ä¸ªä¸»è½´å�•ä½�å�‘é‡�为。我们想æ��述相对äº�的姿æ€�。这æ„�味ç�€æˆ‘们需è¦�知é�“这三个å�‘é‡�在å��æ ‡ç³»é‡Œçš„åˆ†é‡�æ˜¯å¤šå°‘ã€‚æ ¹æ�®å�‘é‡�点积Dot Productçš„å‡ ä½•æ„�义投影长度我们å�¯ä»¥å†™å‡ºå°†è¿™ä¸‰ä¸ªåˆ—å�‘é‡�拼å�ˆåœ¨ä¸€èµ·å°±å½¢æˆ�了旋转矩阵å®�例说æ˜�å�‡è®¾ä¸€ä¸ªå®‰è£…在机器人头顶的摄åƒ�头其å��æ ‡ç³»ç›¸å¯¹äº�机器人底座旋转了 90度绕 Z 轴。摄åƒ�头的 X è½´çš„å‰�方指å�‘了底座的 Y è½´æ–¹å�‘。摄åƒ�头的 Y 轴的左方指å�‘了底座的 -X è½´æ–¹å�‘。摄åƒ�头的 Z 轴的上方ä¾�然指å�‘底座的 Z è½´æ–¹å�‘ã€‚åˆ™æ—‹è½¬çŸ©é˜µä¸ºç¬¬ä¸€åˆ—æ£æ˜¯çš„ X 轴在ä¸çš„表示。
2 旋转矩阵的群性质SO(
这一点对äº�编写é²�棒的æ�§åˆ¶ä»£ç �至关é‡�è¦�。旋转矩阵ä¸�是任æ„�的矩阵它必须å±�äº�特殊æ£äº¤ç¾¤ (Special Orthogonal Group, SO(
)。一个矩阵 R è¦�æˆ�ä¸ºæœ‰æ•ˆçš„æ—‹è½¬çŸ©é˜µå¿…é¡»æ»¡è¶³ä¸¤ä¸ªä¸¥æ ¼çº¦æ�Ÿæ£äº¤æ€§ (Orthogonality)或者说。物ç�†å�«ä¹‰å��æ ‡ç³»çš„è½´å¿…é¡»ä¸¤ä¸¤å�‚直且长度为 1å�•ä½�å�‘é‡�。旋转ä¸�会改å�˜å�‘é‡�的长度也ä¸�会改å�˜å�‘é‡�间的夹角。行列å¼�为 1 (Determinant
。物ç�†å�«ä¹‰é�µå¾ªå�³æ‰‹å®šåˆ™ã€‚如æ�œåˆ™æ„�味ç�€å��æ ‡ç³»å�‘生了“镜åƒ�â€�或“翻转â€�这在刚体物ç�†è¿�åŠ¨ä¸æ˜¯ä¸�å�¯èƒ½é€šè¿‡è¿�ç»æ—‹è½¬å�‘生的除é��ä½ æŠŠæœºå™¨äººçš„å·¦æ‰‹æ‹†ä¸‹æ�¥è£…æˆ�å�³æ‰‹ã€‚工程éš�æ‚£å®�例 在长时间的数值计算如SLAM或机器人积分æ�¨æ¼”ä¸ç”±äº�浮点数误差矩阵 Rå�¯èƒ½ä¼šé€�æ¸�å��离 SO(
æµ�形比如列å�‘é‡�ä¸�å†�æ£äº¤ã€‚å��æ�œæœºå™¨äººçš„æ•°å—模å�‹ä¼šè®¤ä¸ºè‡ªå·±çš„æ‰‹è‡‚在“å�˜é•¿â€�或“剪切å�˜å½¢â€�。对ç–必须定期对旋转矩阵进行æ£äº¤åŒ–Orthogonalizationä¿®æ£ä¾‹å¦‚使用 Gram-Schmidt 过程或 SVD 分解。
基本旋转矩阵 (Basic Rotations)为了æ�„建å¤�æ�‚的姿æ€�我们通常ä»�绕主轴X, Y, Z的基本旋转开始。 æ ¹æ�®å�³æ‰‹å®šåˆ™æ‹‡æŒ‡æŒ‡å�‘è½´çš„æ£æ–¹å�‘四指弯曲方å�‘ä¸ºæ£æ—‹è½¬æ–¹å�‘。绕 X 轴旋转角 ():绕 Y 轴旋转角 ():(注æ„�这里 sin 的符å�·ä½�ç½®ä¸�其他两个ä¸�å�Œè¿™æ˜¯ç”±å�³æ‰‹å®šåˆ™åœ¨ä¸‰ç»´è½®æ�¢ä¸çš„顺åº�决定的)绕 Z 轴旋转角 ():我们已ç»�建立了刚体è¿�动å¦çš„地基ä½�姿是具身智能的数æ�®å�Ÿå�。旋转矩阵本质上是å��æ ‡è½´çš„æŠ•å½±æ��述。SO(
约æ�Ÿä¿�è¯�了物ç�†ä¸–界的刚体性质ä¸�被数å¦è®¡ç®—ç ´å��。然而旋转矩阵有æ˜�显的缺点它用了 9 ä¸ªæ•°å—æ�¥æ��è¿° 3 个自由度冗余计算é‡�大且难以æ�’值。如æ�œæˆ‘们è¦�æ��述“先绕X轴转å†�绕Y轴转â€�就会引入欧拉角的概念但这å�ˆä¼šå¸¦æ�¥è‡´å‘½çš„万å�‘节æ»é”�。第二部分欧拉角ä¸�万å�‘节æ»é”�
欧拉角 (Euler Angles)ç›´è§‰çš„ä»£ä»·æ¬§æ‹‰è§’çš„æ ¸å¿ƒæ€�想是将一次å¤�æ�‚的旋转分解为三次绕特定轴的简å�•旋转。最常è§�çš„æ��è¿°æ–¹å¼�是RPY è§’Roll-Pitch-Yaw广泛应用äº�航空ã€�æ— äººæœºå’Œæœºå™¨äººæœ«ç«¯æ‰§è¡Œå™¨ã€‚Roll (滚转,)绕 X 轴旋转如é£�机翻滚。Pitch (俯仰,)绕 Y 轴旋转如é£�机机头抬å�‡ã€‚Yaw (å��航,)绕 Z 轴旋转如é£�机水平转å�‘。
1 旋转顺åº�çš„é‡�è¦�性 (Sequence Matters)这是åˆ�å¦è€…最容易犯错的地方。矩阵乘法ä¸�满足交æ�¢å¾‹å› æ¤æ—‹è½¬çš„顺åº�决定了最终的姿æ€�。如æ�œä½ 告诉机器人“先绕 X 轴转 90 度å†�绕 Y 轴转 90 度â€�ä¸�“先绕 Y 轴转 90 度å†�绕 X 轴转 90 度â€�其结æ�œæ˜¯æˆªç„¶ä¸�å�Œçš„。在工业机器人和 ROS (Robot Operating System) 䏿œ€å¸¸ç”¨çš„æ ‡å‡†æ˜¯Z-Y-X 顺åº�对应 Yaw-Pitch-Roll。 å�³å…ˆç»• Z 轴转å†�绕新的 Y 轴转最å��绕新的 X 轴转。
2 é�™æ€�è½´ä¸�动æ€�è½´ (Extrinsic vs. Intrinsic)为了逻辑缜密必须区分两ç§�旋转å�‚考é�™æ€�è½´ (Extrinsic / Fixed Frame)æ¯�次旋转都绕ç�€å›ºå®šçš„世界å��æ ‡ç³»è½´æ—‹è½¬ã€‚æ•°å¦æ“�作左乘旋转矩阵 ()。动æ€�è½´ (Intrinsic / Body Frame)æ¯�次旋转都绕ç�€ç‰©ä½“å�˜æ�¢å��çš„æ–°è½´æ—‹è½¬ã€‚æ•°å¦æ“�作å�³ä¹˜æ—‹è½¬çŸ©é˜µ ()。具身智能ä¸çš„æƒ¯ä¾‹æˆ‘们通常谈论的是动æ€�è½´Intrinsicå› ä¸ºä¼ æ„Ÿå™¨IMU和执行器是绑在机器人身上的。
万å�‘节æ»é”� (Gimbal Lock)æ•°å¦å¥‡ç‚¹æ¬§æ‹‰è§’虽然直观且节çœ�å˜å‚¨å�ªç”¨ 3 个数但它å˜åœ¨ä¸€ä¸ªæ— æ³•æ ¹é™¤çš„ç¼ºé™·ä¸‡å�‘节æ»é”�。这并ä¸�是指机械关节被物ç�†å�¡ä½�äº†è€Œæ˜¯æ•°å¦æ��述上的自由度丢失Singularity。
1 ç�°è±¡æ��述当ä¸é—´çš„æ—‹è½¬è½´åœ¨ Z-Y-X 顺åº�䏿˜¯ Y è½´å�³ Pitch旋转到时第三个旋转轴X 轴就会ä¸�第一个旋转轴Z 轴在空间ä¸é‡�å�ˆæˆ–者由平行å�˜ä¸ºå…±çº¿ã€‚æ¤æ—¶æœºå™¨äººåœ¨ç©ºé—´ä¸è™½ç„¶çœ‹èµ·æ�¥è¿˜å�¯ä»¥è½¬åЍ但ä»�æ•°å¦æ�§åˆ¶çš„角度看它失å�»äº†ä¸€ä¸ªè‡ªç”±åº¦ã€‚ç³»ç»Ÿæ— æ³•åŒºåˆ†â€œç»• Z 轴旋转â€�和“绕 X 轴旋转â€�å› ä¸ºå®ƒä»¬ç�°åœ¨çš„æ•ˆæ�œæ˜¯ä¸€æ ·çš„。
2 严密的数å¦è¯�æ˜�为了深入ç�†è§£æˆ‘们展开 Z-Y-X 顺åº�的旋转矩阵乘积。设。乘积结æ�œçš„通å¼�é��常å¤�æ�‚但我们å�ªå…³æ³¨æ»é”�时刻。 当Pitch时。代入å��的矩阵å�˜ä¸ºåˆ©ç”¨ä¸‰è§’函数和差公å¼�逻辑æ�¨æ¼”结论 观察矩阵ä¸çš„项所有的å�˜é‡�都å�˜æˆ�了的形å¼�。 è¿™æ„�味ç�€æ— è®ºä½ æ€�么改å�˜ Roll () 或 Yaw ()å�ªè¦�它们的和ä¸�å�˜å¾—åˆ°çš„æ—‹è½¬çŸ©é˜µå°±æ˜¯å®Œå…¨ä¸€æ ·çš„ã€‚æ–¹ç¨‹ç»„æœ‰æ— ç©·å¤šè§£ã€‚æ�§åˆ¶å™¨æ— 法解算出唯一的和。å��æ�œæœºå™¨äººä¼šå�‘ç”Ÿå‰§çƒˆçš„æŠ–åŠ¨æˆ–è€…åœ¨æ‰§è¡Œè·¯å¾„è§„åˆ’æ—¶å› ä¸ºé›…å�¯æ¯”矩阵Jacobian行列å¼�为 0 而报错导致程åº�崩溃。
å®�例ç�°å®�世界ä¸çš„ç�¾éš¾
1 工业机械臂的“奇异点â€�å½“ä½ æ�§åˆ¶ä¸€ä¸ª 6 轴机械臂å�»ç„Šæ�¥ä¸€ä¸ªæ£ä¸Šæ–¹çš„点时如æ�œä¸�幸机械臂的第 5 è½´Wrist Pitch转到了 90 度第 4 轴和第 6 轴就会对é½�。 æ¤æ—¶å¦‚æ�œä½ 命令机器人“å�‘左微调â€�机器人å�¯èƒ½ä¼šçª�ç„¶ç–¯äº†ä¸€æ ·å¿«é€Ÿæ—‹è½¬ç¬¬ 4 轴和第 6 è½´ 180 度试图凑出这个ä½�姿。这ç§�剧烈è¿�动æ��易打æ–线缆或æ’�å��工件。
2 阿波罗登月舱阿波罗é£�船使用了三轴万å�‘节Gimbalæ�¥æµ‹é‡�å§¿æ€�。为了é�¿å…�æ»é”�NASA 的工程师ä¸�å¾—ä¸�给宇航员一æ�¡ä¸¥æ ¼æŒ‡ä»¤â€œæ°¸è¿œä¸�è¦�让é£�船的姿æ€�进入æ»é”�红区â€�。如æ�œå¿…é¡»ç»�过那个角度需è¦�手动æ“�作é£�船绕个大圈é�¿å¼€ã€‚为了彻底解决这个问题让具身智能体能够进行全方ä½�çš„ã€�è¿�ç»çš„ã€�æ— å¥‡ç‚¹çš„æ—‹è½¬è®¡ç®—æ¯”å¦‚ä½“æ“�机器人或战斗机我们必须引入一ç§�更高维度的数å¦å·¥å…·â€”—四元数。这是所有高级机器人æ�§åˆ¶ç®—法ã€�游æˆ�引æ“�Unity/Unreal以å�Šæ— 人机é£�æ�§åº•层必须æ�Œæ�¡çš„æ ¸å¿ƒæ•°å¦ã€‚第三部分四元数ä¸�ç�ƒé�¢æ�’值
四元数 (Quaternion)高维的优雅å¨�廉·哈密顿William Hamilton在 1843 å¹´å�‘æ˜�四元数时并ä¸�知é�“它在 100 多年å��æˆ�为了计算机图形å¦å’Œæœºå™¨äººå¦çš„基石。为了é�¿å…�万å�‘节æ»é”�我们需è¦�一ç§�没有奇点且计算高效的方法。旋转矩阵用 9 个数太多欧拉角用 3 个数太少导致æ»é”�。数å¦å‘Šè¯‰æˆ‘们æ��è¿°ä¸‰ç»´ç©ºé—´çš„æ— å¥‡ç‚¹æ—‹è½¬æœ€å°‘éœ€è¦�4 个å�‚数。
1 æ•°å¦å®šä¹‰å››å…ƒæ•°æ˜¯å¤�æ•°Complex Numbers在四维空间的扩展。一个四元数由一个å®�部Scalar,和三个虚部Vector,组æˆ�或者写æˆ�å�‘é‡�å½¢å¼�在具身智能的工程å®�è·µä¸ä¸ºäº†æ��述旋转我们å�ªä½¿ç”¨å�•ä½�四元数 (Unit Quaternion)å�³æ¨¡é•¿ä¸º
1