问题描述
我想让我的机器人去到世界上想要的坐标。我唯一能做到的就是让机器人每次遇到障碍物时都会前进并转弯,但这都是随机的,我无法让机器人去世界上我想去的地方。 有什么建议吗?
from controller import Robot,Motor,distanceSensor,Compass
import time
robot = Robot()
timestep = int(robot.getBasictimestep())
MAX_SPEED = 12
distanciaLimite = 0.1
leftMotor = robot.getDevice('left wheel motor')
rightMotor = robot.getDevice('right wheel motor')
sensordistancias = []
nombreSensor = [
'ps0','ps1','ps2','ps3','ps4','ps5','ps6','ps7'
]
izq = True
compassXY = robot.getCompass('compassXY_01')
compassXY.enable(timestep)
compassZ = robot.getCompass('compassZ_01')
compassZ.enable(timestep)
for x in range(8):
sensordistancias.append(robot.getDevice(nombreSensor[x]))
sensordistancias[x].enable(timestep)
def foward():
rightMotor.setVeLocity(0.7 * MAX_SPEED)
leftMotor.setVeLocity(0.7 * MAX_SPEED)
rightMotor.setPosition(float('inf'))
leftMotor.setPosition(float('inf'))
def stop():
rightMotor.setVeLocity(0)
leftMotor.setVeLocity(0)
def turn_right():
tiempo=0
tiempoInicial=time.time()
while robot.step(timestep) != -1:
rightMotor.setVeLocity(-0.5 * MAX_SPEED)
leftMotor.setVeLocity(0.5 * MAX_SPEED)
rightMotor.setPosition(float('inf'))
leftMotor.setPosition(float('inf'))
lecturaSensor = []
for i in range(8):
lecturaSensor.append(sensordistancias[i].getValue())
obstaculo = lecturaSensor[4] < distanciaLimite or lecturaSensor[5] < distanciaLimite
if obstaculo:
print("asdad")
else:
print("no esta aqui")
return
tiempoFinal=time.time()
tiempo=tiempoFinal-tiempoInicial
return
def doblarIzquierda():
tiempo=0
tiempoInicial=time.time()
while robot.step(timestep) != -1:
leftMotor.setVeLocity(-0.5 * MAX_SPEED)
rightMotor.setVeLocity(0.5 * MAX_SPEED)
leftMotor.setPosition(float('inf'))
rightMotor.setPosition(float('inf'))
lecturaSensor = []
for i in range(8):
lecturaSensor.append(sensordistancias[i].getValue())
obstaculo = lecturaSensor[2] < distanciaLimite or lecturaSensor[3] < distanciaLimite
if obstaculo:
print()
else:
return
tiempoFinal=time.time()
tiempo=tiempoFinal-tiempoInicial
return
while robot.step(timestep) != -1:
avanzar()
XY = compassXY.getValues()
Z = compassZ.getValues()
print('compas XY',XY)
print('compas Z',Z)
lecturaSensor = []
for i in range(8):
lecturaSensor.append(sensordistancias[i].getValue())
#print(lecturaSensor)
obstaculo = lecturaSensor[2] < distanciaLimite or lecturaSensor[3] < distanciaLimite
#print(lecturaSensor[2]," ",distanciaLimite)
if obstaculo:
detener()
doblarIzquierda()
西班牙语中有一些东西,因为我说西班牙语,如果这会引起混淆。 我正在使用 firebird6 预制的 webots 机器人。 尝试使用指南针但没有用。请帮忙
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)