Настройка и тестирование MiddleAUV

MiddleAUV

Введение

Здесь описано всё необходимое для настройки и полного тестирования аппаратов MiddleAUV. Понадобится компьютер (при тестировании в аквариуме - желательно ноутбук) с установленным MUR IDE.

Если в ходе тестирования возникло подозрение, что присутствует аппаратная проблема, то надо обратиться к инженеру-электронищку.

Подключение к аппарату

Есть два варианта подключения: по WiFi или по Ethernet-кабелю. При тестировании нужно проверить на работоспособность оба способа подключения.

В любом случае, после успешного подключения аппарат будет доступен по IP-адресу 10.3.141.1. Для подключения к нему по ssh: логин - pi, пароль - raspberry

Рекомендуется изучить: SSH

WiFi

Спустя некоторое время после включения аппарата (придётся немного подождать) будет доступна WiFi-сеть mur_ssid, пароль - vladivostok. Беспроводное подключение годится для испытаний на суше, но не подходит при погружении в воду.

Ethernet

Необходим специальный кабель, один конец которого подключается к аппарату (не забываем надёжно закрутить, во избежание попадания воды), а на другом конце располагается обычный Ethernet, который можно воткнуть в компьютер.

Проверка работы прошивки и подключенной периферии

У прошивки mur-auv-software есть особенность: сервис может не запуститься, если отсутствует некоторая важная для работы периферия (например, некий датчик). Из-за этого иногда трудно понять в чём дело, когда есть подключение к сети аппарата, но нет связи с ним в MUR IDE.

Чтобы решить проблемы и проверить подключение периферии можно воспользоваться скриптом, которого будет достаточно в большинстве случаев, или же можно сделать всё вручную.

Скрипт автоматической проверки

Внимание!

Данный скрипт предназначен только для проверки аппаратов MiddleAUV CM3. Его не следует запускать с аппаратами серии CM4!

Если у вас MiddleAUV CM4, то вы можете получить информацию об ошибках, посмотрев логи сервиса mur, выполнив команду: sudo journalctl -u mur

В случае проблем, вы можете направить вопросы по адресу support@robocenter.org

Скрипт mur-auto-test выполняет подключение к аппарату по SSH и производит несколько проверок.

  1. На Windows нужно запустить run-mur-test.bat (проверялось на свежих версиях Windows 10, где доступен встроенный клиент OpenSSH: подробнее о SSH на Windows 10), если же на компьютере GNU/Linux, то надо запустить скрипт run-mur-test.sh.

  2. Потребуется ввести пароль - raspberry. При этом вводимые символы будут скрыты, это нормально.

  3. Возможно появится сообщение о необходимости перезагрузки:

    ### WARNING ### Fixing config!
    ### WARNING ### Please, restart!
    

    В таком случае следует отключить питание аппарата и включить заново.

    Подробнее об вносимых в конфигурацию изменениях сказано в следующем разделе.

  4. Скрипт автоматически производит проверки и выводит результаты. Если всё нормально, то у каждого пункта проверки будет статус OK, а в случае ошибок будут видны сообщения ### ERROR ### и это требует исправления. В первую очередь нужно проверить подключение устройств, возможны также и неполадки с конкретным и устройствами (например, бракованный датчик).

    Возможные ошибки:

    • MUR Service IS NOT RUNNING - ошибка запуска основной программы прошивки. Как правило, это связано с отсутствием требуемой периферии. Треубется проверить остальные ошибки.

    • SERIAL DEVICE ttyUSBX is missing - отсутствует устройство, подключенное по UART. Обязательно должен присутствовать /dev/ttyUSB1 - это навигационно-пилотажный датчик.

    • CAMERA X is missing - отсутствует камера.

    • I2C DEVICE (i2c-3) is missing - нет I2C-устройства, оно отвечает за передачу состояния батареи.

    • USB ETHERNET DEVICE is missing - отсутствует Ethernet-адаптер, подключённый по USB.

    • ETHERNET is NOT UP - Ethernet-сеть не работает.

    • WIFI is NOT UP - WiFi-сеть не работает.

    Если по всем пунктам всё OK, то с аппаратом должна работать связь через MUR IDE.

Ручное тестирование и настройка

Приветствуется наличие базовых навыков работы с GNU/Linux и консолью. Можно обратиться к различным урокам.

Подключённые устройства

Всё, что проделывается скриптом, можно сделать и вручную. Основное - это проверка наличия устройств в /dev. Например, командой ls /dev/ttyUSB* можно посмотреть все устройства, путь к которым соответствует заданной маске.

  • ls /dev/ttyUSB* - проверка UART-устройств, должны присутствовать ttyUSB0 и ttyUSB1.
  • ls /dev/i2c* - проверка I2C (должен быть i2c-3)
  • ls /dev/video* - проверка камер (ожидается наличие video0 и video1)

С помощью lsusb можно посмотреть устройства, подключенные по USB, а командой ifconfig проверить состояние сети.

Используя эти команды можно диагностировать причины, по которым не работает прошивка или отсутствуют некоторые показатели телеметрии.

Отдельно можно проверить из консоли навигационно-пилотажный датчик, для этого следует собрать данный пример (или воспользоваться собранным под RPi бинарником.

mur service

Рекомендуется изучить: systemd

Основная программа прошивки (mur-auv-software) запускается через systemd-сервиc mur.

  • sudo service mur status - проверить состояние (запущен или нет)
  • sudo service mur restart - перезапустить сервис. Можно сделать именно так вместо полной перезагрузки всего устройства, если пришлось что-то подправить в конфиге.

Конфигурация прошивки

Путь к основному конфигу - /etc/mur/config.ini. Для редактирования можно использовать редактор nano, например - sudo nano /etc/mur/config.ini, при этом не забывая редактировать с админскими правами.

Наиболее важные (и проблемные) места в конфиге (после редактирования надо не забыть перезапустить сервис mur или перезагрузить аппарат):

  • "IMU_DEVICE": "/dev/ttyUSB3", - путь к навигационно-пилотажному датчику, сразу заменяем на /dev/ttyUSB1.

  • DIR_MULS - направления движителей (это коэффициенты умножения - если умножаем на минус, то движитель будет крутиться в обратную сторону). Если при испытании робот, например, погружается вместо всплытия то надо исправить коэффициенты. Скорее всего, правильной будет такая конфигурация (первый и четвёртый - вертикальные, второй и третий - маршевые):

    "DIR_MULS": [
        -1,
        -1,
        1,
        1,
        1,
        1
    ],
    

Испытания

Для проведения испытаний нужно подключиться к аппарату по сети (см. пункт "Подключение к аппарату"), также должен быть запущен MUR IDE. Наличие зелёного значка ракеты в верхнем левом углу говорит об успешном подключении.

Также нужно помнить о важной особенности:

При нулевом уровне заряда, скрипты на аппарате выполняться не будут!

Для открытия встроенных скриптов в MUR IDE, надо выбрать пункт меню Help / Examples.

Телеметрия

Нужно проверить, что телеметрия передаётся и датчики исправны

Когда MUR IDE успешно подключен к аппарату, можно посмотреть телеметрию, нажав на кнопку (i) в правом верхнем углу.

Особенно нужно обратить внимание на навигационно-пилотажный датчик (значения yaw, pitch, roll). В полном покое они не должны аномально увеличиваться или уменьшаться (бывает, что неисправный датчик "плывёт" на месте, будто бы аппарат постоянно вращается). Можно покрутить аппарат и посмотреть на изменения значений. Достаточно на глаз проверить адекватность поступающих значений.

Проверить датчик давления можно, сильно зажав его пальцем, после чего значение depth должно поменяться.

Также стоит обратить внимание на индикатор заряда. Если точно известно, что аппарат совсем недавно был полностью заряжен, то нулевое значение должно вызвать подозрения.

Светодиодная лента

Нужно проверить, что все светодиоды исправны

Для проверки светодиодов есть встроенный скрипт auv_led.py:

auv.set_rgb_color(0, 0, 50) # синий (rgB)
time.sleep(3)

auv.set_rgb_color(0, 50, 0) # зеленый (rGb)
time.sleep(3)

auv.set_rgb_color(50, 0, 0) # красный (Rgb)
time.sleep(3)

Типичные неисправности, требуемые ремонта:

  • наличие светодиодов, которые не могут отобразить определённый цвет или вообще не горят (поэтому надо внимательно визуально проверять работоспособность всех светодиодов).
  • постороннее частое мерцание светодиодной ленты, когда это не предусмотрено кодом.

Движители

Нужно проверить, что все моторы работают

Для проверки моторов можно воспользоваться встроенным скриптом auv_motors_test.py, который на короткое время подаст тягу на все 4 движителя. Надо обратить внимание, что работают все движители!

Режим телеуправления (геймпад и камеры)

Нужно проверить, что работает передача видео и управление геймпадом

Если в MUR IDE нажать на значок геймпада, то будет включён режим телеуправления:

  • на вкладке Remote будет отображаться изображение с камер,
  • станет возможным управлять аппаратом с помощью геймпада,
  • можно будет включить регулятоыр по курсу и глубине.

При проверке изображения с камер надо учесть, что приемлимая частота кадров обеспечивается лишь при проводном подключении к аппарату. При беспроводном подключении, наблюдается "дёрганая картинка", также есть задержки при передаче команд на аппарат - WiFi-сеть сильно перегружается при передаче видео с аппарата. Поэтому при подключении по WiFi лучше проверять камеры в последнюю очередь.

Испытания в воде, регуляторы по глубине и курсу

Нужно проверить, что конфигурация движителей в прошивке корректна и регуляторы работают

Проводить испытания в воде стоит при подключённом проводном соединении с аппаратом.

Опустив аппарат в воду и включив режим телеупралвения можно начать управлять им с геймпада. Нужно учесть, что из-за разницы между разными геймпадами, может понадобиться дополнительная настройка осей (Settings / Gamepad). Стоит проверить соответствие управления ожиданиям, включая повороты.

На вкладке Remote находятся кнопки регуляторов:

  • Auto Yaw - регулятор по курсу. Включив регулятор, аппарат будет пытаться сохранить определённый курс. Курс задаётся геймпадом. Можно попробовать рукой повернуть робота в аквариуме, и он должен возвращаться в определенное положение. Если он неадекватно разворачивается, то возможно надо разобраться с направлениями движителей (см. DIR_MULS в конфиге).

  • Auto Depth - регулятор по глубине. Аппарат будет пытаться сохранять определённую глубину, которая также задаётся геймпадом. Можно попробовать "утопить" аппарат рукой, и он должен подняться на прежний уровень. Если вместо поднятия он лишь сильнее погружается, значит надо исправить в конфиге направления движителей.

Аналогично можно ещё и запустить проверку скриптами auv_depth_preg и auv_yaw_preg (но это уже не режим телеуправления).

Чтобы проверить работоспособность OpenCV на аппарате, можно попробовать вывести в консоль версию OpenCV (не забыв создать новый файл вместо перезаписи примера):

import cv2
print(cv2.__version__)

Финал

Если всё хорошо, то вынимаем аппарат из воды, не забывая пользоваться сухими салфетками, надо следить, чтобы вода не попала внутрь разъёма.

После всех тестов можно зайти по SSH и очистить историю запущенных команд в консоли: history -c

Отмечаем в таблице "Тестирование MUR" пункты, которые попадают в нашу зону ответственности.

Типичные неисправности

  • Всё работает (загрузка кода, управление с геймпада) но нет изорабжения с камер. При этом, камеры точно подключены (присутствуют /dev/camera0 и /dev/camera1).

    • Возможно, соединение блокирует файрвол (брандмауэр, сетевой экран и прочее антивирусное ПО). Можно попробовать отключить встроенный брандмауэр Windows и отключить антивирус. Если помогло - значит, надо добавить исключение для MUR IDE. Кстати, при первом запуске MUR IDE на Windows как правило возникает запрос на предосталвение доступа к сети.

  • На аппарате не работает запуск скриптов, а также управление с геймпада. При этом прошивка работает и телеметрия передаётся.

    • Проверьте уровень заряда батареи. При достижении нуля, отключается возможность запуска скриптов и управления движителями.

  • Робот погружается, когда надо всплывать или поворачивает не в ту сторону.

    • См. конфигурирование прошивки.

  • Полностью чёрное изображение с камеры.

    • Проверье, что с камер снята защитная крышка.

  • Некоторые странные проблемы с аппаратом могут быть связаны с модулем Raspberry Pi:

    • Например, возникла ситуация, когда на аппарате не работал один разъём для движка, и это удалось решить лишь заменой модуля RPi.
    • Или другой случай: аномально нестабильный WiFi удалось побороть повторной прошивкой.
    • Не исключена и ситуация, когда во время прошивки что-то идёт не так, и при записи происходит ошибка - однажды был замечен "сломанный" исполняемый файл, что также было решено перепрошивкой.