ev3dev-将超声波传感器与python结合使用

时间:2019-02-16 07:54:25

标签: python robot lego mindstorms ev3

我对编程和机器人技术还很陌生,并且在以下方面苦苦挣扎。我正在使用Lego Mindstorms EV3积木并设置ev3dev2环境。我想对机器人进行编程,使其与超声波传感器之间的距离恒定不变,并在低于某个值时停止。我的第一次尝试是这样的:

from ev3dev2.auto import *

m_right = LargeMotor(OUTPUT_A)
m_left = LargeMotor(OUTPUT_D)
us = UltrasonicSensor(INPUT_4)
us.MODE_US_DIST_CM = 'US_DIST_CM'

def move_timed():
    m_right.run_timed(time_sp=3000, speed_sp=400)
    m_left.run_timed(time_sp=3000, speed_sp=400)
    m_right.wait_while('running')
    m_left.wait_while('running')

def move_stop():
    m_right.stop()
    m_left.stop()

def start_moving():
    dist=us.value()/10
    while dist < 20:
        move_timed()
    else:
        move_stop()

start_moving()

当这些函数称为us.value()时,该距离仅测量一次,而不是连续测量。在ev3dev-lib中,还存在属性UltrasonicSensor.distance_centimeters,但是我无法获得其值。尽管我试图获得这些价值的尝试失败了。当我将其更改为:

def start_moving():
    dist=us.distance_centimeters
    while dist < 20:
        move_timed()
    else:
        move_stop()

我总是得到“一个或多个参数超出范围或无效”。感谢您有任何想法如何不断获得价值!

ev3dev版本:4.14.96-ev3dev-2.3.2-ev3

ev3dev-lang-python版本:python3-ev3dev 1.2.0

0 个答案:

没有答案