数学概念
1.矩阵乘法01.两个矩阵A和B相乘,需要满足A的列数等于B的行数02.单位矩阵 如果A是n×n矩阵,I是单位矩阵,则AI= A, IA = A03.逆矩阵 矩阵A的逆矩阵 A^-1, A A^-1=A^-1A= I,I是单位矩阵 当一个矩阵没有逆矩阵的时候,称该矩阵为奇异矩阵04. 转置矩阵 矩阵的转置就是行列互换,用A^T表示A的转置矩阵05. 对称矩阵: 如果一个矩阵转置后等于原矩阵,那么这个矩阵称为对称矩阵。由定义可知,对称矩阵一定是方阵 06. 若矩阵为方阵且其逆矩阵存在时,矩阵的逆的转置 等于 矩阵的转置的逆 设A为可逆方阵 (A^{-1})^T = (A^T)^{-1}),07. 矩阵的逆等于矩阵的转置的矩阵称为正交矩阵,满足 ( Q^{-1} = Q^T ) 或等价地 ( Q^T Q = I )(其中 ( I ) 为单位矩阵
2.矩阵乘法结合律遵循矩阵乘法结合律 最终变换结果相同数学上等价:Tx × P^T = (P × Tx^T)^T左乘:点云需要转置
3. 矩阵分块运算--分块上下三角矩阵P2 =R*P1 + T1 (先旋转再平移)变换矩阵的方式T1= R*T2 故 T2 = R^T *T1(先平移再旋转) P2 = R(P1 + T2) = R*P1 + R*T2分块矩阵的计算 分块矩阵 上三角矩阵的乘法[ R,T [ P, = [RP+T, 0,1] * 1] 1]
物理概念
计算机实现
points_h = np.hstack([points, np.ones((points.shape[0], 1),dtypes=np.float32)])# 左乘:T × P^Ttransformed = (transform_matrix @ points_h.T).T## points_h[:,:3] = np.dot(TX_L_V, points_h.T).T[:.:3]###左乘 外侧相同,内测从右往左P_imu = T_vehicle_2_imu * T_lidar_2_vehicle * P_lidar## 矩阵乘法的顺序是从右向左 从右向左应用变换:先应用 T_lidar_to_vehicle,再应用 T_vehicle_to_imu相当于:点_imu = T_vehicle_to_imu * (T_lidar_to_vehicle × 点_lidar)点_imu = T_vehicle_to_imu * T_lidar_to_vehicle * 点_lidar= T__lidar_2_imu * 点_lidarT_lidar_to_imu = T_vehicle_to_imu × T_lidar_to_vehicle
### 注意:这里使用的是左乘,即变换矩阵依次左乘点坐标使用 np.dot() 或 @ 运算符进行矩阵乘法注意矩阵乘法的顺序(从右向左应用变换)