Имитация световых индикаторов для Range Rover PROTO в сценарии обгона шоссе в Webots

Я пытаюсь смоделировать сценарий обгона, отредактировав существующий файл Highway_overtaking.wbt в Webots, чтобы перед переключением полосы движения световые индикаторы включались / выключались. Как мне использовать для этого библиотеку драйверов?

В модифицированном сценарии у меня сейчас только 3 машины в средней полосе, а серая машина Lincoln находится между двумя другими машинами. Я использовал функцию setIndicator (), чтобы установить световые индикаторы (как показано в фрагменте кода ниже), но я не наблюдаю никаких изменений, когда автомобиль Lincoln обгоняет впереди идущую машину.

Ниже приведен модифицированный фрагмент кода из файла Highway_overtaking.py.

if (is_vehicle_on_side("left") and
                (not safeOvertake or sensors["rear left"].getValue() > 0.8 * sensors["rear left"].getMaxValue()) and
                sensors["left"].getValue() > 0.8 * sensors["left"].getMaxValue() and
                currentLane < 2):
            driver.setIndicator(1)
            currentLane += 1
            overtakingSide = 'right'
            lane_change = True
elif (is_vehicle_on_side("right") and
                (not safeOvertake or sensors["rear right"].getValue() > 0.8 * sensors["rear right"].getMaxValue()) and
                sensors["right"].getValue() > 0.8 * sensors["right"].getMaxValue() and
                currentLane > 0):
            driver.setIndicator(2)
            currentLane -= 1
            overtakingSide = 'left'
            lane_change = True

Я прочитал значение индикатора с помощью функции getIndicator () и заметил, что значение индикатора было изменено с 0 на 1, когда я установил его на 1. Но я не наблюдаю, как световые индикаторы меняют цвет в окне. Пожалуйста помоги!


person Bot_potato    schedule 16.08.2019    source источник


Ответы (1)


Это связано с автоматическим отключением индикаторов (при повороте руля в направлении, противоположном индикатору, индикатор автоматически выключается). Это вызывает проблемы в этой симуляции, потому что команды, отправляемые на рулевое колесо, довольно шумны.

Одно простое решение исправить это - отключить этот механизм автоматического отключения с помощью функции 'enableIndicatorAutoDishibited' (https://www.cyberbotics.com/doc/automobile/car-library?tab=python#wbu_car_enable_indicator_auto_dishibited).

Однако для использования этой функции следует использовать класс Car вместо класса Driver (класс Car наследуется от класса Driver). Для этого необходимо добавить соответствующий импорт:

from vehicle import Car

И вызовем конструктор Car вместо конструктора Driver:

driver = Car()

Еще одна небольшая деталь: вы не должны использовать целочисленное значение с setIndicator, а вместо этого используйте одно из предопределенных значений, например:

driver.setIndicator(Driver.INDICATOR_OFF)
driver.setIndicator(Driver.INDICATOR_RIGHT)
driver.setIndicator(Driver.INDICATOR_LEFT)
person David Mansolino    schedule 16.08.2019
comment
Большое спасибо за ваш ответ! Я поменял машину на модель BMW и увидел, что световые индикаторы работают, но только спереди. Я проверил документацию для def getBackwardsLights (self), в ней говорится, что задний ход и стоп-сигналы включаются автоматически библиотекой, когда это необходимо. Но я не вижу, чтобы индикаторы работали сзади. Кроме того, световые индикаторы работают только для модели автомобиля BMW, а не для других моделей. Можно ли включить мигание индикаторов на задней стороне автомобиля BMW? Я очень ценю ваш ответ! - person Bot_potato; 17.08.2019
comment
Кстати, недавно мы улучшили яркость автомобильных огней: github.com/omichel/ webots / pull / 812 Это будет включено в следующий выпуск Webots. - person David Mansolino; 19.08.2019
comment
Что касается задних мигающих светодиодов, это действительно зависит от сетки индикаторов, некоторые модели автомобилей включают задний индикатор, а некоторые нет. Модель BMW не включает задний индикатор, если вы хотите добавить их, вам придется отредактировать эту сетку: github.com/omichel/webots/blob/revision/projects/vehicles/ и github.com/omichel/webots/blob/revision/projects/vehicles/ - person David Mansolino; 19.08.2019
comment
Спасибо за информацию. Я перешел на использование автомобиля Lincoln вместо автомобиля BMW, и световые индикаторы работают отлично спереди и сзади !! Большое спасибо! Я очень ценю помощь. - person Bot_potato; 19.08.2019