差速底盘有两个独立驱动的轮子(左右各一),通过调节两个轮子的速度差来实现:
常见于扫地机器人、AGV小车、教育机器人等。
# 关键参数
wheel_radius = 0.05 # 轮子半径(米)
wheel_distance = 0.30 # 两轮间距(米)
# 已知:左轮速度v_left,右轮速度v_right(单位:米/秒)
# 计算底盘运动:
def wheel_to_chassis(v_left, v_right):
# 底盘线速度(前进速度)
v = (v_right + v_left) / 2
# 底盘角速度(旋转速度)
omega = (v_right - v_left) / wheel_distance
return v, omega# 已知:期望的线速度v_desired,角速度omega_desired
# 计算需要的轮速:
def chassis_to_wheel(v_desired, omega_desired):
# 计算轮速
v_right = v_desired + (omega_desired * wheel_distance) / 2
v_left = v_desired - (omega_desired * wheel_distance) / 2
return v_left, v_right电机输入(PWM占空比) → 电机转速 → 轮子转速 → 底盘运动
# 电机参数
max_rpm = 200 # 电机最大转速(转/分钟)
gear_ratio = 30 # 减速比
max_pwm = 255 # PWM最大值
# 转速到PWM的映射
def rpm_to_pwm(rpm_target):
# 计算电机轴转速(考虑减速比)
motor_rpm_target = rpm_target * gear_ratio
# 线性映射到PWM(实际中可能需要更复杂的模型)
pwm_value = (motor_rpm_target / max_rpm) * max_pwm
# 限制范围
return max(-max_pwm, min(max_pwm, pwm_value))