约束、自由度和广义坐标
考虑由个刚体构成的多体系统,选取个广义坐标来描述每一个刚体的位姿。 这些广义坐标记为。 在无约束的情况下,系统的自由度是。 然而,它们之间未必是独立的,假设它们受到个形如
的独立方程的约束,于是系统的自由度还剩下个。
Note
为什么不一定等于?这取决于所选取的广义坐标,例如当使用四元数来描述刚体的方向时,每个刚体的位姿就有7个广义坐标,但还需要一个四元数模为1的约束方程。
About 13 min
考虑由个刚体构成的多体系统,选取个广义坐标来描述每一个刚体的位姿。 这些广义坐标记为。 在无约束的情况下,系统的自由度是。 然而,它们之间未必是独立的,假设它们受到个形如
的独立方程的约束,于是系统的自由度还剩下个。
Note
为什么不一定等于?这取决于所选取的广义坐标,例如当使用四元数来描述刚体的方向时,每个刚体的位姿就有7个广义坐标,但还需要一个四元数模为1的约束方程。
如图所示,坐标系为旋转得到,记其三个单位基向量, , 在系下的坐标表示分别为, , ,则旋转矩阵为:
根据内积的定义,有
绕x, y, z三个轴旋转角的旋转矩阵为:
Info
下文的旋转矩阵、向量、四元数等都用右上标表明是在哪个坐标系下描述的。
趁着腰伤赋闲在家,把前几天调试STM32的几个BUG给记录一下吧。
在设计FOC驱动模块的时候,我把BLDC的HALL传感器引线和STM32的TIM4 CH1~3连在一起了。本来这个事情很正常,可是问题是我用的是STM32G474CEU6这款MCU,它的TIM4有一个通道和BOOT0是复用的。这个问题本来我没在意,可是当我开始调试的时候,发现有时候复位可以正常进main,有时候却进不去,而且在调试界面看不到代码。这个时候我发现PC的值不是在0x08000000附近,而是在一个奇怪的位置——Bootloader。
仔细一想这个问题很容易解释,在还没有启动的时候,BOOT0脚并没有被我配置成TIM4的输入通道,这个时候它还是BOOT0,所以如果此时转子的位置恰好把这个脚拉到高电平了的话,就无法正常启动了。
本文作为10系自动控制原理课程的Matlab快速入门指南。