Подключение к симулятору и управление виртуальным дроном с помощью ROS
Перед тем как переходить к управлению реальным дроном – рекомендуем освоить навыки написания программ пилотирования с помощью симулятора. Ниже рассмотрим управление виртуальным дроном с помощью симулятора jmavsim.
Настройка сетевого доступа в ROS
В общем случае, программа управления полётом запускается на компьютере, отдельном от полётного контроллера дрона. Например, в качестве полётного контроллера может выступать ПК Pixracer комплекта ЖУЖА VIS, а в качестве бортового компьютера использоваться Raspberry PI. Поэтому при симуляци дрона также рекомендуем запускать симулятор на отдельном компьютере, а управлять им с помощью Raspberry PI.
Подключение симулятора и управление дроном из командной строки
Запуск симулятора рассмотрен в разделе «Симулятор дрона jmavsim». После после запуска симулатора на бортовом компьютере необходимо настроить сетевой доступ к ROS-мастеру компьютера симулятора. Делается это с помощью настройки переменных среды сеанса ROS_MASTER_URI и ROS_IP. В ROS_MASTER_URI нужно присвоить адрес мастера на врешнем компьютере. В ROS_IP – ip-адрес компьютера, например:
Обратите внимание, ROS_MASTER_URI необходимо задавать в виде строки с полным адресом (http…***), а ROS_IP – только ip-адрес. Узнать ip-адрес компьютера можно с помощью команды ifconfig.
После подключения к симулятору по сети – на бортовом компьютере должен появиться списко тописков mavros, что можно проверить с помощью команды rostopic list. Также подключение мавлинк к полётному контроллеру удобно проверять с помощью команды rostopic echo /mavros/state – так называемый heartbeat («сердцедиение») полётного контроллера. В случае успешного подключение в поле Connected должно быть значение True.
Если подключение прошло успешно – можно осуществить запуск виртуального дрона из командной строки. Для этого нужно запустить несколько команд параллельно в разных терминалах:
Публикуем целевую позицию коптера «2 метра над землёй» в соответствующий топик, 5 раз в секунду (для автоподбора аргументов можно пользоваться клавишей TAB):
rostopic pub -r 5 /mavros/setpoint_position/local geometry_msgs/PoseStamped "header:
Переводим полётный контроллер в режим OFFBOARD (в отдельном терминале):
Запускаем коптер (процедура запуска коптера по-английски называется «arm», поэтому в среде коптеристов бытует русская калька «армить»):
После выполнения указанных действий виртуальный дрон должен взлететь на высоту 2 метра и зависнуть. Коптер перейдёт в режим LAND и приземлится, если мы прервём публикацию сообщений в топик setpoint_position в первом терминале.
В случае, если бортовой компьютер, с которого запускаются команды, подключен к симулятору дрона по сети – переменные среды должны быть установлены в каждом из терминалов. Для этого можно написать небольшой bash-скрипт, и вызывать его при начале работы терминала с помощью команды source.
Last updated
Was this helpful?