Робот сообщает о странном шуме. составь код для робота так, чтобы он дошёл до источника шума. используй как можно меньше команд

27 Сен в 19:40
129 +1
0
Ответы
1

Ниже — минимальная универсальная стратегия (градиентный подъём по громкости): быстро обойти/просканировать окружность, запомнить направление максимальной громкости, повернуть в это направление и двигаться вперёд до источника. Код — в виде компактного псевдо-Python, можно адаптировать под ваш API (замените get_sound(), turn(), forward(), stop()).

Параметры: SCANS = число шагов поворота при сканировании (напр., 12), TURN_ANGLE = 360/SCANS, STEP = шаг движения (м), THRESH = уровень громкости, при котором считаем, что дошли.

code:
SCANS = 12
TURN_ANGLE = 360/SCANS
STEP = 0.5
THRESH = 80 # dB или единицы вашего датчика

# быстрый обзор, найти направление максимальной громкости
best = get_sound(); best_angle = 0
for i in range(SCANS):
turn(TURN_ANGLE)
s = get_sound()
if s > best:
best = s
best_angle = (i+1)*TURN_ANGLE # направление максимума
# повернуть к максимуму и идти пока не близко
turn_to(best_angle)
while get_sound() < THRESH:
forward(STEP)
# при необходимости проверяйте препятствия и обновляйте best_angle при падении сигнала
stop()

Короткие рекомендации по адаптации:

Если есть датчик направленного микрофона, SCANS можно уменьшить до 2–4.Для робота с ощупыванием/избеганием препятствий добавьте проверку препятствий перед forward().Если сигнал шумный — усредняйте несколько измерений get_sound() перед сравнениями.

Скажите, под какой API/платформу писать (ROS, Arduino, VEX, Python-robot и т.п.), и я перепишу код точнее.

27 Сен в 20:02
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир