- Arducopter или «ух ты, он сам летает!»
- Ardupilot project
- Bugs? absolutely.
- Building using make
- Building using the arduino ide
- Chromeos
- Credits – happy to correct these credits if they are wrong or incomplete.
- Developers
- Development team
- Development using virtualbox
- Different map providers?
- Getting the source
- Installation
- Issue trackers
- Linux
- Mavproxy
- More info on some commands:
- Support
- Ubuntu linux
- Windows
- Видео через интернет
- Видеотрансляция
- Изменения прошивки arducopter 3.0.х для конфигурации квадрокоптер для apm 2.6 (2.5)
- Как обновить:
- Калибровка датчиков и настройка параметров автопилота
- Настройка и запуск ardupilot
- Обновление дистрибутива и установка необходимых пакетов
- По для управления дроном на пк и планшетах
- Телеметрия через интернет
- Улучшения по сравнению с 2.9.1b включают в себя:
- Установка образа ос на sd-карту
- Установка связи с дроном в локальной сети
Arducopter или «ух ты, он сам летает!»
Я уже рассказывал о своей гексе оснащенной контроллером AIOP. Конечно, ничего плохого про полетный контроллер AIOP сказать не могу http://www.radiocopter.ru/38737/blogs/view_entry/3263/ . Все работает без нареканий, но есть один существенный минус и заключается он в обновлении прошивки. И даже не сам процесс обновления, к нему я уже привык, либо через среду разработки http://www.radiocopter.ru/38737/blogs/view_entry/2815/ , либо через утилиту http://www.radiocopter.ru/38737/blogs/view_entry/4669/ все замечательно программируется, а вот сильное отставание обновлений вырабатывает только терпение. На данный момент для пользователей AIOP доступна стабильная версия 3.0.1 R4, в то время, когда для APM доступна новая прошивка 3.1.4. Понятно, что со временем стабильная версия будет портирована, остается только ждать.
Контроллер AIOP идеально настроить мне так и не удалось. В целом летал достаточно хорошо, но при порывах ветра аппарат нервозно реагировал. Поэтому в ветреную погоду я старался не летать.
В итоге, взвесив все за и против, я решил рискнуть и заказал уже в третий раз напрямую с HK контроллер 2.5.2, не может же постоянно не везти. Первый раз я заказал с HK и получил бракованный контроллер. Служба поддержки HK отмалчивалась, ничего не добившись от нее открыл претензию на paypal-e, в итоге мне вернули деньги. Вторая посылка уже с паркфлаера была утеряна в период проблем с доставкой. В третий раз, после длительного ожидания, присущего для отправлений из Китая, получил посылку с HKPolot-ом. К моему счастью, контроллер оказался живым и занял место AIOP. Наверно китайцы не захотели еще раз со мной связываться и отправили проверенную, много кратно протестированную плату. Ну что же будем пробовать.
Коробочка под плату у меня уже имелась, поэтому оставалось только установить и настроить полетный контроллер. Существенным недостатком данного корпуса является отсутствие возможности подключать GPS, телеметрию, внешний компас, датчик тока без его разборки, для этого требуется снимать верхнюю крышку. Я сразу вывел все необходимые провода.
Кусочек поролона прикрывает бародатчик. Внимательные заметят зеленую перемычку, ей я переключил тип входного сигнала, замкнув 2 и 3 ножки. Зачем я это сделал? Мне не удалось добиться, чтобы плата увидела футабовский приемник. Не видит и все тут.
Прошивка PPM энкодера не помогла. С помощью удобной утилиты Atmel Flip прошил микросхему согласно инструкции.
Пришлось купить конвертер сигнала FrSky SBus-CPPM.
Подключив, таким образом, в окне калибровки аппаратуры радиоуправления индикаторы ожили. Как говорится, счастью не было предела.
Теперь приемник к контроллеру подключен одним проводом, есть в этом свои плюсы. Снижение уровня вибраций, так как по проводам может передаваться вибрация на датчики. Кстати в комплекте идут дубовые провода, поэтому советую заменить их на мягкие. Второй плюс заключается в возможности использования свободных каналов приемника для подключения к нему напрямую дополнительного оборудования.
Прошивку ArduСopter-a загрузил версии 3.1.3.
Калибровка компаса в версии 3.1 и выше отличается, теперь не достаточно танца с коптером, как это было раньше. Новая процедура предусматривает закрашивание шара, в результате приходится крутить коптер во всех плоскостях, чтобы добиться равномерного распределения точек. Иначе калибровку придется повторить.
Compassmot выполнил, но результатом остался не доволен, измерения показали аж 74%.
Связано это, по всей видимости, с особенностями рамы. Контроллер установлен на нижнюю пластину, которая является распределителем питания. Пытался вынести всю электронику на верхнюю пластину, но такое размещение не понравилось. Электроника ничем не защищена, да и аккумулятор не удается внутри рамы надежно закрепить. Из-за этого думал, будет все печально, но полетел вполне прилично.
Первый полет
Коптер замечательным образом полетел на стоковых пид-ах. Но при порывах ветра аппарат начинало болтать, постоянно приходилось корректировать положение. В полный штиль гекса висела практически неподвижно, я мог отпустить стики в режиме стабилизации.
Продолжительность полета составила почти 14 минут.
Автоматическая настройка пид-ов
Раз уж контроллер может автоматически настроить свои параметры, чего же этим не воспользоваться.
В итоге вот такие вот значения у меня получились. Настройка выполнялась при небольшом ветре.
На следующий день мне показалось поведение коптера несколько дерганным, и я повторил процедуру настройки. Повторная настройка выполняется по времени гораздо быстрее. Вот какие получились новые значения параметров.
Проверка новых пид-ов
С новыми пид-ами поведение гексакоптера мне понравилось больше, поэтому я оставил их.
Далее предстояло попробовать различные полетные режимы. Как я уже рассказывал раньше, для управления коптером носил с собой ноутбук, но с появлением планшета необходимость в ноутбуке осталась только для выполнения настроек http://www.radiocopter.ru/38737/blogs/view_entry/4366/ .
Кстати совсем недавно в ассортименте HobbyKing-а появился вот такой держатель для мобильных устройств Система крепления для смартфона, мобильного телефона или портативного компьютера . Я сделал держатель для планшета сам еще задолго до появления, видимо китайцы подглядели http://www.radiocopter.ru/38737/blogs/view_entry/4676/ . Мне были сделаны замечания в комментариях, которые я учел. Для удобства транспортировки переделал кронштейн упирающийся в ручку пульта, теперь он складной. А также сделал более надежную фиксацию на ручке.
Расскажу свой самый первый опыт управления коптером с компьютера. Выбравшись в поле, стал пробовать. И каково было мое удивление, когда коптер после попытки взлететь в ручном режиме сорвался с места, резко набрал высоту около 50 метров и приземлился в нескольких метрах от точки взлета. Я был готов к взлету, но ощущение, что коптер не управляемо взмывает вверх безусловно меня напугало. На тот момент я не понимал что происходит. Анализируя свои действия, теперь делаю все аккуратно и не спеша, чтобы избежать подобной ситуации.
Не так давно появилась новая программа для мобильных устройств на Android-е – DroidPlanner 2.0. На данный момент актуальная версия 2.2.5. Разработчик тот же, что и у первой версии. В описании ПО отмечено, что это следующее поколение. Посмотрим, что скрывается за надписью «next generation».
Скачать приложение можно тут https://play.google.com/store/apps/details?id=org.droidplanner .
Интерфейс программы немного изменился. На экране какой-то минимализм.
Главный экран не загроможден информацией. Окно карты открывается практически на весь экран. Перед глазами четыре кнопки, для быстрого доступа. Их первым делом и попробую.
Составление полетного задания в DP2 сделано максимально простым. Рисуем траекторию полета на экране, а программа сама расставляет точки по маршруту. Остается только назначить точку взлета и приземления.
Из отличительных особенностей следует выделить возможность калибровки аппаратуры с мобильного устройства.
И режимы можно назначить
Чеклист
Списком все параметры
Посадка в автоматическом режиме (Land)
За посадку в автоматическом режиме отвечает кнопка Land. В той точке, где была нажата кнопка, происходит посадка. В первый момент не сразу и поймешь, что коптер выполняет команду. Все происходит медленно, размеренно. После получения команды, аппарат постепенно начинает опускаться, коснувшись земли, коптер подпрыгивает, как бы пытаясь поточнее приземлиться.
Если стик газа не в нуле, то пропеллеры продолжают вращаться. Опускаем ручку газа аппарат дизармится сам и больше не реагирует на команды с пульта.
По логу отчетливо видно, что от места взлета гексокоптер немного сместился, после чего приземлился.
Лог полета можно визуально оценить в трехмерном виде на сервисе Google Earth
Цветами выделены разные полетные режимы. Оранжевый цвет соответствует режиму Stabilize, желтый – Althold, зеленый – Loiter, синий – Land.
Возврат домой и автоматическая посадка (RTL)
Следующий тест заключался в том, что взлетаем, немного смещаемся от точки взлета и жмем Номе. Коптер поднимается на заданную высоту 20 метров, летит к точке взлета и осуществляет посадку.
Абсолютно аналогично работает команда RTL, аппарат возвращается на точку взлета и зависает над ней. Выбрать его можно в списке режимов, нажав на надпись Stabilize.
Полет в автоматическом режиме (Auto)
В первый раз, когда пробовал, самым не понятным был режим Auto. Жму авто и ничего не происходит. Арм и ничего. Оказалось все очень просто, когда разберешься. Выбираем Auto – Арм –далее стик газа в центральное положение и коптер полетел по маршруту.
На снимке экрана можно увидеть траекторию полета коптера по маршруту. Мною было задано пять точек для авто миссии. Первая точка взлет (Take of), она обозначена как бы стрелкой вверх. Следующие точки путевые. При движении по ним коптер спрямляет траекторию. Место посадки отмечено на карте стрелкой вниз.
Взлетает на полном газу на заданную высоту (20 метров). Далее поворачивается носом к следующей точке и начинает движение последовательно от точки к точке. Дойдя до последней точки, приземляется.
Напряжение питания бортовой электроники находится в допустимом пределе от 5,0 до 5,1 вольта, которое рекомендует производитель. Кстати колебания значительно ниже, чем с регулятором напряжения, который установлен на Tarot 680, были отмечены колебания до 5,3 вольта.
Лог полета в автоматическом режиме в трехмерном виде
Некоторым образом расстроили радиомодемы на 433 МГц. Радиус их действия оказался достаточно маленьким. Возникали проблемы с передачей миссии, модель находилась в нескольких метрах. Похоже, что антенны, которыми укомплектовал модемы RCtimer, не соответствую рабочей частоте.
Выводы
При подаче команд на выполнение, нужно быть предельно внимательным.
Обязательно убедиться, что спутники пойманы и их количество достаточное. У меня нашлось около 11 спутников.
В момент включения координаты базы постепенно уточняются, поэтому точка взлета постепенно может уплыть в сторону.
Еще для меня осталось не понятным, почему не отображается текущий полетный режим. В первой версии DroidPlanner в окне Hud-a меняется значение полетного режима при переключении или при выборе его из меню. Но после очередного обновления вроде бы все встало на свои места, буду проверять.
При загрузке миссии в коптер, сообщение о успешном выполнении передачи данных появляется и исчезает, этого можно и не заметить. Иногда для уверенности приходится процедуру повторять.
Хочу отметить, что в каждой программе есть свои приятные фишки, но так чтобы это было реализовано в одном приложении, к сожалению нет. В DroidPlanner2 появилась возможность настраивать радиоуправление. Честно сказать, DroidPlanner2 создал впечатление более простой программы. Скорее всего разработчики этого и добивались.
Другие мои статьи можно почитать в дневнике http://www.radiocopter.ru/blogs/user_feed/38737/
Ardupilot project
You can find lots of development information at the ArduPilot development site
Bugs? absolutely.
See BUGS page
Building using make
Before you build the project for the first time, you’ll need to run
make configure
from a sketch directory (i.e. ArduPlane, ArduCopter, etc…).
This will create aconfig.mk
file at the top level of the repository. You
can set some defaults inconfig.mk
In the sketch directory, type
make
to build for APM2. Alternatively,
make apm1
will build for the APM1 andmake px4
will build for the PX4.
The binaries will generated in/tmp/<i>sketchname</i>.build
.Type
make upload
to upload. You may need to set the correct default
serial port in yourconfig.mk
.
Building using the arduino ide
ArduPilot is no longer compatible with the standard Arduino
distribution. You need to use a patched Arduino IDE to build
ArduPilot.
Do not try to use the Arduino IDE to build in Linux–you should follow
the instructions in the “Building using make” section.
The patched ArduPilot Arduino IDE is available for Mac and Windows
from the downloads
page.Unpack and launch the ArduPilot Arduino IDE. In the preferences
menu, set your sketchbook location to your downloaded or cloned
ardupilot
directory.In the ArduPilot Arduino IDE, select your ArduPilot type (APM1 or
APM2) from the ArduPilot menu (in the top menubar).Restart the ArduPilot Arduino IDE. You should now be able to build
ArduPlane or ArduCopter from source.Remember that, after changing ArduPilot type (APM1 or APM2) in the
IDE, you’ll need to close and restart the IDE before continuing.
Chromeos
ArduPilot Configurator form ChromeOS is available in Chrome Web Store
Credits – happy to correct these credits if they are wrong or incomplete.
ctn – author and maintainer ofof stuff from which this project was forked.
Hydra – author and maintainer of stuff from which this project was forked.
Konstantin Sharlaimov/DigitalEntity – author and maintainer of stuff from which this project was forked.
Paweł Spychalski – author and maintainer of stuff from which this project was forked.
Developers
We accept clean and reasonable patches or PRs, submit them!
Development team
The ArduPilot project is open source and maintained by a team of volunteers.
Development using virtualbox
ardupilot has a standardized Linux virtual machine (VM) setup script
that uses the free VirtualBox virtualization software. You can use it
to create a standard, reproducible development environment in just a
few minutes in Linux, OS X, or Windows.
Different map providers?
See MAPS page
Getting the source
You can either download the source using the “ZIP” button at the top
of the github page, or you can make a clone using git:
Installation
Depending on target operating system, ArduPilot Configurator is distributed as standalone application or Chrome App.
Issue trackers
For ArduPilot configurator issues raise them here
Linux
- Visit release page
- Download Configurator for Linux platform (linux32 and linux64 are present)
- Extract tar.gz archive
- Make the ArduPilot-configurator file executable (chmod x ArduPilot-configurator)
- Run ARDUPILOT Configurator app from unpacked folder
Mavproxy
MAVProxy уже установлен в образе Navio. Его также можно
и на ПК (Windows, Linux, MacOS) для дальнейшего общения с автопилотом в консольном режиме.
Убедившись, что Ardupilot работает, запустим на Raspberry скрипт MAVProxy такой командой:
mavproxy.py --master=udp:127.0.0.1:14550
Параметр
–master=udp:127.0.0.1:14550
задает для скрипта источник данных. Это локальный UDP-порт, который был прописан в файле конфигурации Ardupilot. После запуска команды, MAVProxy соединиться с этим портом и выведет на экран сообщения автопилота, примерно как у меня:
pi@navio:~ $ mavproxy.py --master=udp:127.0.0.1:14550
Connect udp:127.0.0.1:14550 source_system=255
Failed to load module: No module named adsb. Use 'set moddebug 3' in the MAVProxy console to enable traceback
Log Directory:
Telemetry log: mav.tlog
Waiting for heartbeat from 127.0.0.1:14550
MAV> online system 1
STABILIZE> Mode STABILIZE
fence breach
GPS lock at 0 meters
APM: APM:Copter V3.5.5 (88a1ecdd)
APM: Frame: UNKNOWN
APM: PreArm: RC Roll not configured
APM: PreArm: Compass not calibrated
APM: PreArm: 3D Accel calibration needed
APM: PreArm: check firmware or FRAME_CLASS
APM: PreArm: Throttle below Failsafe
Так как автопилот еще не откалиброван и до конца не настроен, то об этом красноречиво говорят и сообщения. В этом режиме можно общаться с автопилотом посредством команд. Если бы дрон был полностью настроен, то вот такая последовательность двух команд привела бы к старту двигателей и взлету дрона на высоту 20 м:
arm throttle
takeoff 20
Не откалиброванный автопилот не полетит, а покажет сообщения с причинами, почему он этого сделать не сможет.
More info on some commands:
‘npm run dev’ runs to it from the source folder without bundling any resources, great for debug and code hacking. Its also the only way the code runs right this instant., sorry, we haven’t got any release ready yet. ‘npm start’ is very similar, but uses a ‘bundled’ main.html
‘npm start’ is supposed to be the alternative to running it in dev mode, but as we dont have any release yet, its not the way we use the app at the moment, so this comment is a reminder to not use this command yet.
no right-click, no developer tools..? If the app starts-up for you, but right-click doesnn’t allow you to use chrome-dev-tools or inspect stuff, then you don’t have the ‘sdk’ version of NW installed. Theese command/s to try to remedy that are (one or more of these might help), but are not part of a normal install, and you should not run them unless you somehow got the wrong ‘nw’ version:
nvm deactivate
mv ~/.npmrc ~/.npmrc.bak
rm -rf node_modules/nw
rm package-lock.json
npm install --save [email protected]
sudo npm install --save [email protected] -g
export NWJS_BUILD_TYPE=sdk; npm install
Bundling/releasing not working properly just now, but when it’s working it will run like this:
‘npm run gulp dist’ to bundle it.
‘npm run gulp release’ to make win32/win64/osx/linux32/linux64 packages.this ap can be used as a chrome plugin, but usually is use “integrated” with nw.js [expect bugs if u do this] :
- With NW.js: Run
npm start
[probably not working]. - With Chrome: Run
npm run gulp
. Then openchrome://extensions
, enable
theDeveloper mode
, click on theLoad unpacked extension...
button and select theArduConfigurator
directory.
- With NW.js: Run
Support
GitHub issue tracker is reserved for bugs and other technical problems. If you do not know how to setup
everything, hardware is not working or have any other support problem, please consult:
Ubuntu linux
The following packages are required to build ardupilot for the
APM1/APM2 (Arduino) platform in Ubuntu: gawk make git arduino-core g
To build ardupilot for the PX4 platform, you’ll first need to install
the PX4 toolchain and download the PX4 source code. See the PX4
toolchain installation
page.
The easiest way to install all these prerequisites is to run the
ardupilot/Tools/scripts/install-prereqs-ubuntu.sh script, which will
install all the required packages and download all the required
software.
Windows
- Visit release page
- Download Configurator for Windows platform (win32 or win64 is present)
- Extract ZIP archive
- Run ArduPilot Configurator app from unpacked folder
- Configurator is not signed, so you have to allow Windows to run untrusted application. There might be a monit for it during first run
Видео через интернет
Для ретрансляции видео установим на сервер VLC плеер:
sudo apt-get install vlc
После установки, запустим его как ретранслятор c UDP порта 5001 в RTSP канал
SERVER_IP:8554/live
cvlc -vvv udp://@:5001 --sout '#rtp{sdp=rtsp://:8554/live}' :demux=h264
На борту запустим видеотрансляцию с камеры на сервер по UDP (вместо
SERVER_IP
адрес сервера):
gst-launch-1.0 rpicamsrc bitrate=1000000 ! video/x-h264,width=640,height=480,framerate=25/1 ! h264parse ! udpsink host=SERVER_IP port=5001
Адрес потока теперь можно использовать как источник видео в настройках GCS или открыть в любом плеере, поддерживающим этот протокол.
Теперь можно спланировать маршрут полета и запустить дрон через интернет, предварительно его включив, например, с помощью помощника по телефону.
Очевидно, что из-за относительно большого времени путешествия видео и телеметрии по сети, такой способ вряд ли подойдет для FPV-полетов в ручном режиме между препятствиями.
Темы для последующих публикаций:
Продолжение следует…
Видеотрансляция
Проверим как работает видеотрансляция в сети WiFi. Такой командой можно запустить видео в TCP-порт на Raspberry с использованием родной утилиты raspivid для камеры Raspicam:
raspivid -t 0 -hf -fps 25 -w 640 -h 480 -o - | gst-launch-1.0 fdsrc ! h264parse ! rtph264pay config-interval=1 pt=96 ! gdppay ! tcpserversink host=0.0.0.0 port=5001
А вот такой командой делается тоже самое, только с использованием ранее скомпилированной обертки rpi-camsrc для gstreamer:
gst-launch-1.0 rpicamsrc sensor-mode=4 ! h264parse ! rtph264pay config-interval=1 pt=96 ! gdppay ! tcpserversink host=0.0.0.0 port=5001
В обоих случаях, трансляция в формате h264 доступна по IP-адресу Raspberry на порту 5001.
Посмотреть ее можно запустив на своем ПК такую команду (должен быть установлен gstreamer), вместо RPI_ADDRESS указываем адрес Raspberry в сети:
gst-launch-1.0 -v tcpclientsrc host=RPI_ADDRESS port=5001 ! gdpdepay ! rtph264depay ! avdec_h264 ! videoconvert ! autovideosink sync=false
В результате должно открыться окошко с видео.
Практически в любую GCS встроен видеоплеер, который может показывать RTSP-видеопоток. Чтобы сделать из Raspberry RTSP-сервер можно использовать консольный плеер VLC. Установка:
sudo apt-get install vlc
Видеотрансляция запускается так:
raspivid -o - -t 0 -n -w 320 -h 240 -fps 25 | cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/live}' :demux=h264
Видео доступно по адресу (вместо
RPI_ADDRESS
, адрес Raspberry):
rtsp://RPI_ADDRESS:8554/live
Настройка GCS:
Адрес потока можно использовать для подключения нескольких плееров на разных устройствах, но, так как видеозахват и трансляция для Raspberry весьма трудоемкий процесс, то для нескольких потребителей видео лучше использовать внешний сервер (описание ниже).
Изменения прошивки arducopter 3.0.х для конфигурации квадрокоптер для apm 2.6 (2.5)
Форум позволяет разработчикам отвечать на Ваши вопросы,
а также позволяет исследовать аналогичные ситуации.
Пожалуйста, выберите подфорум, который наиболее вам подходит для вики-страницы и вопросов, которые вам интересны.
Как обновить:
- 1. Убедитесь, что вы используете Planner Миссия 1.2.59 или новее (получить его здесь )
- 2. Нажмите на Initial Setup в Mission Planner, выберите раздел Firmware.
Номер версии должен появиться как “ArduCopter-3.0.1”,
а затем нажмите соответствующий значок рамы,
и он должен обновить как обычно. - 3. Уменьшить LOITER (слоняться) и Alt Hold (Держать высоту) PIDs,
если были изменены их значения от значений по умолчанию.
Измененные значения PID для APM можно увидеть на изображении ниже. - 4. Информация: если вы приобрели APM до марта 2023 года, обновить PPM энкодер до последней версии. (инструкции здесь ).
- 5. Попробуйте новую версию сначала в режиме Stabilize (стабилизация), а затем Alt-Hold (удержание высоты), потом LOITER (слонятся) и наконец RTL (Возврат на точку старта) и Авто.
Примечание: параметры Nav были объединены с LOITER (слоняться) так что не беспокойтесь, если вы их не найдете.
Отдельное спасибо Марко , DaveC и остальным бета-тестерам своих квадрокоптеров на период тестирования.
Калибровка датчиков и настройка параметров автопилота
Калибровку автопилота можно сделать почти в любой GCS. В документации Ardupilot она
во всех подробностях. Прежде всего устанавливаем тип рамы. У меня стандартная 4-х моторная компоновка, поэтому это
Quad X
Первый полет лучше все же сделать в ручном режиме. Подключаем и калибруем радиоуправление (приемник и передатчик).
Осталось откалибровать акселерометр и компас.
Для того, чтобы Ardupilot видел и учитывал данные с внешних датчиков, установим необходимые параметры:
Для PX4Flow (калибровка самого датчика и обновление прошивки)
FLOW_ENABLE = 1 (Enabled)FLOW_ADDR = 0 (0 = вариант для стандартного адреса 0х42)
Для лазерного высотомера VL53L0X (инструкция)
RNGFND_TYPE = 16 (VL53L0X)RNGFND_ORIENT = 25 (ориентация дальномера вниз)RNGFND_ADDR = 41 (I2C-адрес в десятичном виде). Адрес датчика по-умолчанию 0x29, что в десятичном виде = 41.RNGFND_SCALING = 1RNGFND_MIN_CM = 5RNGFND_MAX_CM = 120RNGFND_GNDCLEAR = 15 (расстояние от датчика до поверхности, когда дрон стоит на земле)
Для IRLock (подробная инструкция, wiki IR-Lock)
PLND_ENABLED = 1PLND_TYPE = 2PLND_BUS = 1
Для сонара переднего обзора (инструкция)
Настройка и запуск ardupilot
Релизы новых версий Ardupilot немного запаздывают в сборке от Emlid. Если необходимый функционал доступен в самой последней версии, то установить ее из исходников можно
Разработчики Navio добавили в свою сборку простую и удобную утилиту Emlid tool для проверки датчиков и настройки Ardupilot. Сначала проверим, видит ли Raspberry контроллер Navio:
emlidtool info
Если в ответ на эту команду выдает что-то вроде:
Vendor: Emlid Limited
Product: Navio 2
Issue: Emlid 2023-06-05 831f3b08594f2da17dccae980a2e3659115ef71f
Kernel: 4.14.34-emlid-v7
RCIO firmware: 0xcaec2284
значит видит. Проверим состояние датчиков (покажет список и состояние):
emlidtool test
и драйвера ШИМ-контроллера в ядре Linux:
cat /sys/kernel/rcio/status/alive
0 = не работает, 1 = работает.
Прошивка ШИМ-контроллера обновляется так:
sudo emlidtool rcio update
Теперь настроим Ardupilot:
sudo emlidtool ardupilot
В терминале откроется текстовый GUI с пошаговыми менюшками. Выбираем copter последней версии, тип
arducopter
, автозапуск при включении (
On boot: enable
), старт после настройки (
Ardupilot: start
Выходим через пункт меню Quit.
Проверим запустился ли Ardupilot:
sudo systemctl status arducopter
Обратите внимание, файл запуска в systemd называется
arducopter
, так как настроен был вариант
copter
Теперь нужно настроить Ardupilot так, чтобы он отправлял нам телеметрию. Для этого отредактируем файл конфигурации:
sudo nano /etc/default/arducopter
В нем должны быть такие строки:
TELEM1="-A udp:127.0.0.1:14550"
ARDUPILOT_OPTS="$TELEM1"
Сохраняем файл (
Ctrl X
, затем
Y
) и перезапускаем Ardupilot:
sudo systemctl daemon-reload
sudo systemctl restart arducopter
Проверить состояние процесса Ardupilot можно такой командой:
sudo systemctl status arducopter
С такими настройками Ardupilot будет транслировать телеметрию (пакеты
) в локальный UDP-порт 14550. Далее, скрипт
(описание ниже) будет забирать оттуда телеметрию и передавать в GCS или скрипт, а также отправлять в обратном направлении пакеты с командами.
Вместо локального адреса и порта можно записать IP-адрес ПК или планшета в локальной сети и пакеты будут транслироваться сразу туда.
Однако, такой подход оправдан, если данные телеметрии больше нигде не используются и у устройства с GCS статический IP адрес. Иначе каждый раз в настройках Ardupilot придется прописывать новый. Чтобы общаться с автопилотом по TCP могли одновременно несколько GCS с динамическими адресами и еще какие-нибудь скрипты на самом бортовом компьютере, удобнее использовать MAVProxy.
Этот скрипт (написан на Python) может получать пакеты MAVLink на локальный UDP-адрес и ретранслировать их на несколько локальных или удаленных IP-адресов как по UDP, так и по TCP. Пакеты передаются в обоих направлениях Ardupilot ⇔ GCS. Кроме того, MAVProxy представляет из себя полноценную GCS, но с текстовым интерфейсом.
Обновление дистрибутива и установка необходимых пакетов
Открываем SSH-клиент и соединяемся с Raspberry (локальный IP-адрес navio вместо
RASPBERRY_IP_ADDRESS
ssh pi@RASPBERRY_IP_ADDRESS
Стандартный пароль:
raspberry
. В первую очередь необходимо расширить файловую систему ОС на весь объем SD-карты:
sudo raspi-config --expand-rootfs
и перегрузиться:
sudo reboot
После перезагрузки, соединяемся еще раз и обновляем дистрибутив:
sudo apt-get update && sudo apt-get dist-upgrade -y
Устанавливаем дополнительные пакеты:
sudo apt-get install autoconf automake libtool pkg-config libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libraspberrypi-dev gstreamer1.0-tools gstreamer1.0-plugins-good gstreamer1.0-plugins-bad
и компилируем обертку
для
и родной камеры Raspicam:
По для управления дроном на пк и планшетах
Для управления БПЛА используются специальные программы GCS (Ground Control Station). Далее по тексту я буду использовать эту аббревиатуру. Мне по душе пришлась
, мультиплатформенная (Windows, Linux, MacOS, iOS, Android) GCS с открытым исходным кодом, которая стала частью проекта
. Но есть и альтернативы, бесплатные и коммерческие:
(DroidPlanner) для Android,
(iOS),
(iOS). А также консольная
Телеметрия через интернет
Чтобы GCS могла подключиться через интернет к дрону с динамическим IP-адресом, необходим промежуточный сервер со статическим IP, на котором будет запущен скрипт MAVProxy. Для этих целей я воспользовался арендой облачного сервера у одного из известных провайдеров.
Для MAVProxy подойдет самая минимальная конфигурация, но так как у меня этот же сервер будет заниматься ретрансляцией видео, то я выбрал вариант с чуть большей памятью (одно ядро и 1Гб памяти, Ubuntu 18.04). Для минимальной задержки в прохождении данных между бортом и GCS, сервер должен располагаться в максимальной географической близости к дрону и GCS.
Устанавливаем MAVProxy на сервер. Сначала зависимости:
sudo apt-get install python-dev python-opencv python-wxgtk3.0 python-pip python-matplotlib python-pygame python-lxml python-yaml
а потом и сам скрипт через PIP:
sudo pip install MAVProxy
пропишем путь:
Улучшения по сравнению с 2.9.1b включают в себя:
- Инерциальная навигация для режима LOITER (слоняться) и Auto дает
более точное управление (Рэнди, Леонард , JonathanC ). - 3D навигационный контроль реализован следующим образом: прямые линии во всех
измерениях между путевыми точками ( Leonard , Рэнди) - Параметры : WPNAV_SPEED, WPNAV_SPEED_UP, WPNAV_SPEED_DN, WPNAV_ACCEL позволяют настроить скорость
и ускорение в ходе маршрута - “Compassmot” для компенсации помех на компас с полетного контроллера, моторов,
регуляторов скорости (ESC) и батареи. (Рэнди, JonathanC ) (Настройка видео здесь ) - Улучшения безопасности:
- простая форма (виртуального забора) Geo Fence
- предварительная проверка проверяет все калибровки перед снятием с охраны (arming)
(можно отключить, установив ARMING_CHECK к нулю). (Видео описание здесь ) - безотказный (failsafe) GPS – переключается на режим LAND (посадка), если GPS теряется в течение 5 секунд
- улучшения стабильности, чтобы остановить быстрые подъемы в очень мощных и тюнингованых вертолетах
- Улучшения режима Круг (CIRCLE) включает режим “Панорама”, когда CIRCLE_RADIUS установлен в ноль (Рэнди, Леонард )
- Параметр SONAR_GAIN добавлен, чтобы позволить более лучше настраивать отслеживания
поверхности гидролокатора - CH8 вспомогательный переключатель (те же функции, как CH7)
- работает на PX4 (некоторые незначительные особенности еще не доступен) ( картридж , путь )
Установка образа ос на sd-карту
Для нормальной работы автопилота крайне рекомендуется использовать “быстрые” SD-карты (класс 10). Медленные карты памяти не успевают сохранять логи автопилота даже на небольшой частоте, в результате чего они получаются кривыми или вообще не пишутся. Свидетельством этого может быть ошибка “
No IO heartbeat
Установка связи с дроном в локальной сети
Остановим скрипт (
Ctrl C
) и снова запустим его в таком виде:
mavproxy.py --master=udp:127.0.0.1:14550 --out=tcpin:0.0.0.0:5762
С дополнительным параметром
–out=tcpin:0.0.0.0:5762
MAVProxy будет слушать порт 5762 на входящие TCP соединения от GCS. Как только GCS соединиться, пакеты с данными начнут перемещаться между дроном и GCS. Попробуем подключиться с ПК:
Если подключение удалось, то GCS покажет кучу сообщений с требованием откалибровать датчики и загрузит бортовые параметры с их текущими значениями: