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()