В прошлом году в Монреале было проведено соревнование F1/10th, которое представляет собой основанную на исследованиях «битву алгоритмов», в которой автомобили в масштабе 1/10 соревнуются друг с другом автономно, используя датчики, алгоритмы и, возможно, картирование, чтобы соревноваться за звание самого быстрого. круги и побеждать в личных гонках.

Хотя команда, в которой я был (UNC-Chapel Hill), превзошла все остальные автомобили, сосредоточившись на скорости и местной навигации, наш выбор не использовать картографию привел к тому, что мы непреднамеренно выполняли развороты на трассе, когда на пути были определенные препятствия.

Одним из возможных решений, о котором я думаю, является использование датчика IMU и регистрация изменения направления/ориентации для запрета разворота (поворот против часовой стрелки на пути по часовой стрелке или наоборот)

Датчик, который у нас есть, от Sparkfun и имеет 9 степеней свободы, что означает, что он измеряет линейное ускорение, угловую скорость вращения и векторы магнитного поля. Чип содержит акселерометр, гироскоп и магнитометр. Кроме того, этот IMU представляет собой комбинированный IMU 9DoF и микропроцессор SAMD21. Эта комбинация позволяет перепрограммировать IMU и позволяет хранить память непосредственно на датчике.



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

Нам также понадобится плата The FTDI Basic Breakout — 3.3V.



Вместо платы мы можем использовать Arduino Uno и следующую настройку:

Откройте файл Razor_AHRS.ino из пакета razor_imu_9dof по адресу ~/catkin_ws/src/razor_imu_9dof/Razor_AHRS/Razor_AHRS.ino.

Инструкции, данные Ресурсами Ф1/10 следующие:

Теперь, чтобы установить пакеты для IMU, вернитесь в Jetson и установите пакет с помощью команды:

sudo apt−get install ros−indigo−razor−imu−9dof

Давайте оставим параметры по умолчанию нетронутыми и сделаем копию, чтобы внести некоторые изменения

roscd razor_imu_9dof/config 
cp razor.yaml my_razor.yaml

Теперь вы можете запустить «rostopic list» в другом окне и найти тему /imu. «rostopic echo /imu» позволит вам увидеть входящий поток данных. Итак, пакеты для обоих этих датчиков готовы. Вы можете выполнить аналогичные шаги, чтобы установить его в любой системе ROS. Лучше не засорять память Jetson бесполезными пакетами и, следовательно, устанавливать лишние пакеты на свой ноутбук. Например, для визуализации данных IMU вам необходимо установить пакет python-visual. Также установите пакеты IMU в вашей системе ROS. Затем установите python-visual с помощью:

sudo apt−get install python−visual

Теперь вам нужно использовать Arduino IDE для настройки платы.



Arduino — Программное обеспечение
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ARDUINO ПРЕДОСТАВЛЯЕТСЯ ВАМ «КАК ЕСТЬ
, И МЫ НЕ ПРЕДОСТАВЛЯЕМ НИКАКИХ ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ ГАРАНТИЙ В ОТНОШЕНИИ…www.arduino. копия»



  • После установки Arduino скопируйте прошивку Razor в Arduino Sketchbook:
roscd razor_imu_9of
cp -r src/Razor_AHRS ~/Arduino
  • Перезапустите Arduino IDE и откройте Razor_AHRS из Sketchbook.
  • В разделе HARDWARE OPTIONS раскомментируйте HW_VERSION_CODE 14001.
  • В «Инструментах» → «Плата» выберите «Arduino Pro или Pro Mini», а затем в «Процессоре» выберите «ATmega328P (3,3 В, 8 МГц)», а в «Порт» выберите порт, к которому он подключен. Для меня это был /dev/ttyACM1

Вы можете откалибровать IMU, перейдя по ссылке, приведенной в справочнике. и укажите измеренные значения смещения во вновь созданном файле. Для подтверждения связи IMU с интерфейсом ROS используйте любой из двух файлов запуска:

roslaunch razor_imu_9dof razor−pub.launch
roslaunch razor_imu_9dof razor−pub−and−display.launch

Однако при запуске этого кода он подключается, но затем отображает следующее сообщение и никогда не проходит мимо него.

[INFO] [1562691381.293220]: Giving the razor IMU board 5 seconds to boot...

* Кроме того, в качестве примечания мне было необходимо изменить путь устройства с /dev/TTYMO на /dev/TTYACM1 в новом файле конфигурации my_razor.yaml.

Я нашел правильный путь устройства датчика IMU с помощью следующего скрипта:

#!/bin/bash

for sysdevpath in $(find /sys/bus/usb/devices/usb*/ -name dev); do
    (
        syspath="${sysdevpath%/dev}"
        devname="$(udevadm info -q name -p $syspath)"
        [[ "$devname" == "bus/"* ]] && continue
        eval "$(udevadm info -q property --export -p $syspath)"
        [[ -z "$ID_SERIAL" ]] && continue
        echo "/dev/$devname - $ID_SERIAL"
    )
done

Следующим шагом будет установка пакета «python-visual». Этот пакет открывает графический интерфейс при запуске файла запуска «razor-pub-and-display.launch».

Графический интерфейс, который открывается при запуске файла razor-pub.launch, должен выглядеть примерно так: