第2章
2.1启动小车
go (左轮功率,右轮功率,持续时长)
使用 go 函数操纵小车以 50% 的功率前进 2 秒
go(50, 50, 2)
行动模块 -> 前进 -> 50 -> 50 ->2
下面以此类推
2.2 控制小车方向
2.2.1 小车的左转
左轮马力 20%,右轮马力 90%,运行时间 1s
go(20, 90, 1)
2.2.2 小车的右转
左轮马力 90%,右轮马力 20%**,运行时间 1s
go(90, 20, 1)
2.2.3 原地旋转
左轮马力 -20%,右轮马力 20%,运行时间 2s
go(-20, 20, 2)
2.2.4 学会控制你的小车
左轮马力 -100% / -80% / -60% / -40% /-20%,右轮马力 100% / 80% / 60% / 40% / 20%,运行时间 1s
go(-100, 100, 1)
go(-80, 80, 1)
go(-60, 60, 1)
go(-40, 40, 1)
go(-20, 20, 1)
2.3 控制小车通过 U 型赛道
尝试环节咱就不说了
go(100, 100, 2)
go(100, 30, 1.9)
go(100, 100, 1)
go(100, 20, 1.7)
go(100, 100, 2.2)
2.4 控制小车完成指定道路
2.4.1 前进一条边
go(100, 100, 2.45)
2.4.2 右转 90°
def turn_right():
go(100, (-100), 0.65)
go(10, (-10), 0.3)
turn_right()
2.4.3 正方形路线
def turn_right():
go(100, (-100), 0.65)
go(10, (-10), 0.3)
for count in range(4):
go(100, 100, 2.45)
turn_right()
2.5 车载传感器的认识及应用
2.5.1 认识传感器
1 -> 左前传感器
2 -> 右前传感器
3 -> 前传感器
4 -> 后传感器
2.5.2 超声传感器
小车自动停止(1)
setTarget(3)
time = 0.1
while get_ultrasound()[2] > 100:
go(100, 100, time)
小车自动停止(2)
setTarget(4)
time = 0.1
while get_ultrasound()[2] < 800:
go((-100), (-100), time)
2.5.3 颜色传感器
小车颜色检测(1)
setTarget(6)
while get_color()[0][0] < 128:
go(100, 100, 0.1)
小车颜色检测(1)
setTarget(7)
while get_color()[0][0] < 128:
go(100, 100, 0.1)
while get_color()[1][0] < 128:
go((-100), (-100), 0.1)
2.6 小车巡线行驶
2.6.1 循迹模块设计
def getLineLoc():
colors = get_color() #4 * [R,G,B,L]
res = -1
res_max = 0
for i in range(4):
if colors[i][0] > res_max:
res_max = colors[i][0]
res = i
return res
while get_color()[0][2] < 128:
res = getLineLoc()
if res == 0:
go(-20,40,1/10)
elif res == 1:
go(30,50,1/10)
elif res == 2:
go(50,30,1/10)
elif res == 3:
go(40,-20,1/10)
2.7 小车测距行驶
2.7.1 开环控制行走
go(50, 70, 4)
go(70, 50, 2)
2.7.2 闭环控制行走
get_distance()
start = get_distance()[0]
if start - get_distance()[0] > 0:
turn(10)
start = get_distance()[0]
if start - get_distance()[0] > 0:
turn(-10)
dt = 50
while get_color()[0][2] < 128:
if get_ultrasound()[0] - get_ultrasound()[1] > dt:
go(20,80,1/12)
elif get_ultrasound()[1] - get_ultrasound()[0] > dt:
go(80,20,1/12)
else:
go(90,90,1/12)
2.8 复杂线路下小车的测距行驶
2.8.1.利用测距传感器转弯
dt = 50
while inCurrentTask():
if get_ultrasound()[0] - get_ultrasound()[1] > dt:
go(20,80,1/6)
elif get_ultrasound()[1] - get_ultrasound()[0] > dt:
go(80,20,1/6)
else:
go(90,90,1/4)