正运动学解算和逆运动学解算的区别
在底盘控制中,运动学解算用于建立底盘的期望速度和轮子速度之间的关系。运动学解算分为正运动学和逆运动学,它们的方向相反:
-
正运动学解算(Forward Kinematics):
- 输入: 每个轮子的实际速度(或转速)。
- 输出: 底盘的实际速度(包括线速度和角速度)。
- 作用: 根据轮子的运动推算底盘的运动状态。
- 应用场景: 用于估计底盘的实际运动状态,例如在导航、定位等应用中。
-
逆运动学解算(Inverse Kinematics):
- 输入: 底盘的期望速度(包括线速度和角速度)。
- 输出: 每个轮子应该达到的速度(或转速)。
- 作用: 根据期望的底盘运动状态计算轮子的控制量。
- 应用场景: 用于控制底盘的运动,例如让底盘按照指定的轨迹运动、保持稳定的姿态等。
为什么需要区分正逆运动学解算?
区分正逆运动学解算的原因在于,它们解决的是不同的问题,服务于不同的目的:
- 控制: 逆运动学解算用于控制底盘的运动,根据期望的底盘运动状态计算轮子的控制量,从而实现对底盘的精确控制。
- 估计: 正运动学解算用于估计底盘的实际运动状态,根据轮子的实际运动推算底盘的运动状态,从而为导航、定位等应用提供数据支持。
如何区分正逆运动学解算?
区分正逆运动学解算的关键在于确定输入和输出:
-
正运动学:
- 输入: 轮子速度。
- 输出: 底盘速度。
-
逆运动学:
- 输入: 底盘速度。
- 输出: 轮子速度。
-
逆运动学解算: Chassis_Inverse_Kinematics(&chassis.solve, &chassis.expect_speed, chassis.expect_driver_speed); 输入: &chassis.expect_speed (底盘的期望速度)。 输出: chassis.expect_driver_speed (每个轮子应该达到的速度)。 正运动学解算: Chassis_Forward_Kinematics(&chassis.solve, temp_array, &chassis.observation_speed); 输入: temp_array (每个轮子的实际速度)。 输出: &chassis.observation_speed (底盘的实际速度)。