修复nxt python中的turn方法
当我的机器人遇到障碍物时,我希望能够阻止它移动。但是,修复nxt python中的turn方法,python,nxt,lego,nxt-python,Python,Nxt,Lego,Nxt Python,当我的机器人遇到障碍物时,我希望能够阻止它移动。但是,motor.py下的SynchronizedMotors类中的turn方法不允许我这样做。我怎样才能解决这个问题?有没有直接的解决办法?我确实尝试过使用线程,但没有成功。让伺服系统对传感器输入做出反应没有问题。以下操作应使机器人以最大功率前进,直到按下一个或多个触摸传感器,然后停止,等待片刻,然后切断伺服系统的所有电源 from time import sleep import nxt from nxt.motor import Motor
motor.py
下的SynchronizedMotors
类中的turn方法不允许我这样做。我怎样才能解决这个问题?有没有直接的解决办法?我确实尝试过使用线程,但没有成功。让伺服系统对传感器输入做出反应没有问题。以下操作应使机器人以最大功率前进,直到按下一个或多个触摸传感器,然后停止,等待片刻,然后切断伺服系统的所有电源
from time import sleep
import nxt
from nxt.motor import Motor, PORT_B, PORT_C
from nxt.sensor import Touch, PORT_1, PORT_2
class Robot(object):
def __init__(self, brick):
self.brick = brick
# left and right motors
self.lmotor = Motor(brick, PORT_B)
self.rmotor = Motor(brick, PORT_C)
# left and right touch sensors
self.ltouch = Touch(brick, PORT_1)
self.rtouch = Touch(brick, PORT_2)
def roll(self, left, right):
'''
Non-blocking function for modifying power to servos.
The servos will continue to operate at these power
levels until told to do otherwise. Values are given
as percentages of full power, so torque will change
as the battery loses charge. A negative value will
reverse the rotation of the respective servo.
For example, to spin on the spot, clockwise and at
full power, do
self.roll(100, -100)
'''
self.lmotor.run(left)
self.rmotor.run(right)
def halt(self):
'''
Stops and then holds both servos steady for
0.2 seconds, then cuts power to both servos.
'''
self.lmotor.brake()
self.rmotor.brake()
sleep(0.2)
self.lmotor.idle()
self.rmotor.idle()
brick = nxt.find_one_brick(name='R2')
robot = Robot(brick)
robot.roll(100, 100)
while True:
if robot.ltouch.is_pressed() or robot.rtouch.is_pressed():
robot.halt()