Python编程
麦轮车底盘运动由前后向动力,左右向动力,旋转动力三者组合控制。我们将控制接口统一在了一个函数中,您只需要记忆一个接口函数即可。具体的示例如下。
坐标系说明
车身坐标系如图所示,运动控制接口的参数与车身坐标系有关。
车身前后方向为x轴,前方为x轴正方向。
车身左右方向为y轴,左方为y轴正方向。
车身上下方向为z轴,上方为z轴正方向。
运动控制接口
麦轮底盘运动函数
move(x=0, y=0, z=0, T=1)
x
- 沿x轴方向平移的动力,按百分比输出,取值范围为-100~100。y
- 沿y轴方向平移的动力,按百分比输出,取值范围为-100~100。z
- 绕z轴旋转的动力,按百分比输出,取值范围为-100~100。T
- 当xyz的运动是平移时,代表运动时长,单位为秒,当T>=0时,经过T秒后底盘会停止运动,当T<0时,底盘会持续保持移动;当xyz的运动是旋转或绕桩时,代表旋转角度,单位为度,转动到相应的旋转角度后底盘会停止运动。具体请参照下面的示例。
麦轮底盘停止运动函数
stop()
基础运动示例
前后平移
前后平移仅需要x向动力,x>0时向前平移,x<0时向后平移。
move(80) # 底盘向前平移1秒,动力为80%。
move(-80) # 底盘向后平移1秒,动力为80%。
move(80, T=2) # 底盘向前平移2秒,动力为80%。
左右平移
左右平移仅需要y向动力,y>0时向左平移,y<0时向右平移。
move(y=100) # 底盘向左平移1秒,动力为100%
move(y=-100) # 底盘向右平移1秒,动力为100%
move(y=100, T=2) # 底盘向左平移2秒,动力为100%
旋转
旋转仅需要绕z旋转动力,z>0时逆时针旋转,z<0时顺时针旋转。
move(z=80, T=90) # 底盘逆时针旋转90度,动力为80%
move(z=-80, T=90) #底盘顺时针旋转90度,动力为80%
组合运动示例
斜向平移
斜向平移同时需要x向动力和y向动力。
move(20, 100) # 底盘向左前平移1秒 x向动力为20%,y向动力为100%
move(20, -100) # 底盘向右前平移1秒 x向动力为20%,y向动力为100%
move(-20, 100) # 底盘向左后平移1秒 x向动力为20%,y向动力为100%
move(-20, -100) # 底盘向右后平移1秒 x向动力为20%,y向动力为100%
边前进(后退)边转弯
边前进(后退)边转弯同时需要x向动力和绕z旋转动力。
move(60, z=15) # 底盘边前进边左转,持续1秒。
move(60, z=-15) # 底盘边前进边右转,持续1秒。
move(-60, z=-15) # 小车边后退边左转,持续1秒。
move(-60, z=15) # 小车边后退边右转,持续1秒。
绕桩
绕桩同时需要y向动力和绕z旋转动力。
move(y=100, z=-5, T=90) # 车头对着圆心顺时针绕桩90度
move(y=-100, z=5, T=90) # 车头对着圆心逆时针绕桩90度
move(y=100, z=5, T=90) # 车尾对着圆心逆时针绕桩90度
move(y=-100, z=-5, T=90) # 车尾对着圆心顺时针绕桩90度
持续运动示例
move(x=60, T=-1) # 保持60%的动力往前运动
sleep(1) # 等待1秒
stop() # 停止
'''往前开 检测到障碍物停下'''
move(x=50, T=-1) # 保持50%的动力往前运动
while True:
d = car.hcsr04(16, 17) # 超声波传感器的距离返回值 trig16 echo17
if d < 30: break
stop()