GitHub – sunxfancy/ArduCopter

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. Понятно, что со временем стабильная версия будет портирована, остается только ждать.

 
GitHub - sunxfancy/ArduCopter 

Контроллер AIOP идеально настроить мне так и не удалось. В целом летал достаточно хорошо, но при порывах ветра аппарат нервозно реагировал. Поэтому в ветреную погоду я старался не летать.

В итоге, взвесив все за и против, я решил рискнуть и заказал уже в третий раз напрямую с HK контроллер 2.5.2, не может же постоянно не везти. Первый раз я заказал с HK и получил бракованный контроллер. Служба поддержки HK отмалчивалась, ничего не добившись от нее открыл претензию на paypal-e, в итоге мне вернули деньги. Вторая посылка уже с паркфлаера была утеряна в период проблем с доставкой. В третий раз, после длительного ожидания, присущего для отправлений из Китая, получил посылку с HKPolot-ом. К моему счастью, контроллер оказался живым и занял место AIOP. Наверно китайцы не захотели еще раз со мной связываться и отправили проверенную, много кратно протестированную плату. Ну что же будем пробовать.

Коробочка под плату у меня уже имелась, поэтому оставалось только установить и настроить полетный контроллер. Существенным недостатком данного корпуса является отсутствие возможности подключать GPS, телеметрию, внешний компас, датчик тока без его разборки, для этого требуется снимать верхнюю крышку. Я сразу вывел все необходимые провода.

GitHub - sunxfancy/ArduCopter  GitHub - sunxfancy/ArduCopter

Кусочек поролона прикрывает бародатчик. Внимательные заметят зеленую перемычку, ей я переключил тип входного сигнала, замкнув 2 и 3 ножки. Зачем я это сделал? Мне не удалось добиться, чтобы плата увидела футабовский приемник. Не видит и все тут.

Прошивка PPM энкодера не помогла. С помощью удобной утилиты Atmel Flip прошил микросхему согласно инструкции.

GitHub - sunxfancy/ArduCopter 

Пришлось купить конвертер сигнала FrSky SBus-CPPM.

GitHub - sunxfancy/ArduCopter

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

Теперь приемник к контроллеру подключен одним проводом, есть в этом свои плюсы. Снижение уровня вибраций, так как по проводам может передаваться вибрация на датчики. Кстати в комплекте идут дубовые провода, поэтому советую заменить их на мягкие. Второй плюс заключается в возможности использования свободных каналов приемника для подключения к нему напрямую дополнительного оборудования.

Прошивку ArduСopter-a загрузил версии 3.1.3.

Калибровка компаса в версии 3.1 и выше отличается, теперь не достаточно танца с коптером, как это было раньше. Новая процедура предусматривает закрашивание шара, в результате приходится крутить коптер во всех плоскостях, чтобы добиться равномерного распределения точек. Иначе калибровку придется повторить.

GitHub - sunxfancy/ArduCopter

Compassmot выполнил, но результатом остался не доволен, измерения показали аж 74%.

GitHub - sunxfancy/ArduCopter 

Связано это, по всей видимости, с особенностями рамы. Контроллер установлен на нижнюю пластину, которая является распределителем питания. Пытался вынести всю электронику на верхнюю пластину, но такое размещение не понравилось. Электроника ничем не защищена, да и аккумулятор не удается внутри рамы надежно закрепить. Из-за этого думал, будет все печально, но полетел вполне прилично.

Первый полет

Коптер замечательным образом полетел на стоковых пид-ах. Но при порывах ветра аппарат начинало болтать, постоянно приходилось корректировать положение. В полный штиль гекса висела практически неподвижно, я мог отпустить стики в режиме стабилизации.

Продолжительность полета составила почти 14 минут.

Автоматическая настройка пид-ов

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

В итоге вот такие вот значения у меня получились. Настройка выполнялась при небольшом ветре.

GitHub - sunxfancy/ArduCopter 

На следующий день мне показалось поведение коптера несколько дерганным, и я повторил процедуру настройки. Повторная настройка выполняется по времени гораздо быстрее. Вот какие получились новые значения параметров.

GitHub - sunxfancy/ArduCopter 


Проверка новых пид-ов

С новыми пид-ами поведение гексакоптера мне понравилось больше, поэтому я оставил их.

Далее предстояло попробовать различные полетные режимы. Как я уже рассказывал раньше, для управления коптером носил с собой ноутбук, но с появлением планшета необходимость в ноутбуке осталась только для выполнения настроек 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 .

GitHub - sunxfancy/ArduCopter

Интерфейс программы немного изменился. На экране какой-то минимализм. 

GitHub - sunxfancy/ArduCopter

Главный экран не загроможден информацией. Окно карты открывается практически на весь экран. Перед глазами четыре кнопки, для быстрого доступа. Их первым делом и попробую.

Составление полетного задания в DP2 сделано максимально простым. Рисуем траекторию полета на экране, а программа сама расставляет точки по маршруту. Остается только назначить точку взлета и приземления.

GitHub - sunxfancy/ArduCopter 

Из отличительных особенностей следует выделить возможность калибровки аппаратуры с мобильного устройства.

GitHub - sunxfancy/ArduCopter

И режимы можно назначить

GitHub - sunxfancy/ArduCopter

Чеклист

GitHub - sunxfancy/ArduCopter 

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

GitHub - sunxfancy/ArduCopter 

Посадка в автоматическом режиме (Land)

За посадку в автоматическом режиме отвечает кнопка Land. В той точке, где была нажата кнопка, происходит посадка. В первый момент не сразу и поймешь, что коптер выполняет команду. Все происходит медленно, размеренно. После получения команды, аппарат постепенно начинает опускаться, коснувшись земли, коптер подпрыгивает, как бы пытаясь поточнее приземлиться.
Если стик газа не в нуле, то пропеллеры продолжают вращаться. Опускаем ручку газа аппарат дизармится сам и больше не реагирует на команды с пульта.

Смотрите про коптеры:  Лекции Техносферы. 2 семестр. Современные методы и средства построения систем информационного поиска / Хабр

GitHub - sunxfancy/ArduCopter 

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

Лог полета можно визуально оценить в трехмерном виде на сервисе Google Earth

GitHub - sunxfancy/ArduCopter

Цветами выделены разные полетные режимы. Оранжевый цвет соответствует режиму Stabilize, желтый – Althold, зеленый – Loiter, синий – Land.

Возврат домой и автоматическая посадка (RTL)

Следующий тест заключался в том, что взлетаем, немного смещаемся от точки взлета и жмем Номе. Коптер поднимается на заданную высоту 20 метров, летит к точке взлета и осуществляет посадку.

GitHub - sunxfancy/ArduCopter

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

Полет в автоматическом режиме (Auto)

В первый раз, когда пробовал, самым не понятным был режим Auto. Жму авто и ничего не происходит. Арм и ничего. Оказалось все очень просто, когда разберешься. Выбираем Auto – Арм –далее стик газа в центральное положение и коптер полетел по маршруту.

GitHub - sunxfancy/ArduCopter 

На снимке экрана можно увидеть траекторию полета коптера по маршруту. Мною было задано пять точек для авто миссии. Первая точка взлет (Take of), она обозначена как бы стрелкой вверх. Следующие точки путевые. При движении по ним коптер спрямляет траекторию. Место посадки отмечено на карте стрелкой вниз.

Взлетает на полном газу на заданную высоту (20 метров). Далее поворачивается носом к следующей точке и начинает движение последовательно от точки к точке. Дойдя до последней точки, приземляется.

GitHub - sunxfancy/ArduCopter 

Напряжение питания бортовой электроники находится в допустимом пределе от 5,0 до 5,1 вольта, которое рекомендует производитель. Кстати колебания значительно ниже, чем с регулятором напряжения, который установлен на Tarot 680, были отмечены колебания до 5,3 вольта.

Лог полета в автоматическом режиме в трехмерном виде

GitHub - sunxfancy/ArduCopter 

Некоторым образом расстроили радиомодемы на 433 МГц. Радиус их действия оказался достаточно маленьким. Возникали проблемы с передачей миссии, модель находилась в нескольких метрах. Похоже, что антенны, которыми укомплектовал модемы RCtimer, не соответствую рабочей частоте.

Выводы

При подаче команд на выполнение, нужно быть предельно внимательным.
Обязательно убедиться, что спутники пойманы и их количество достаточное. У меня нашлось около 11 спутников.

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

Еще для меня осталось не понятным, почему не отображается текущий полетный режим. В первой версии DroidPlanner в окне Hud-a меняется значение полетного режима при переключении или при выборе его из меню. Но после очередного обновления вроде бы все встало на свои места, буду проверять.

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

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

GitHub - sunxfancy/ArduCopter 

Другие мои статьи можно почитать в дневнике 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

  1. 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 a config.mk file at the top level of the repository. You
    can set some defaults in config.mk

  2. In the sketch directory, type make to build for APM2. Alternatively,
    make apm1 will build for the APM1 and make px4 will build for the PX4.
    The binaries will generated in /tmp/<i>sketchname</i>.build.

  3. Type make upload to upload. You may need to set the correct default
    serial port in your config.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.

  1. The patched ArduPilot Arduino IDE is available for Mac and Windows
    from the downloads
    page
    .

  2. Unpack and launch the ArduPilot Arduino IDE. In the preferences
    menu, set your sketchbook location to your downloaded or cloned
    ardupilot directory.

  3. In the ArduPilot Arduino IDE, select your ArduPilot type (APM1 or
    APM2) from the ArduPilot menu (in the top menubar).

  4. Restart the ArduPilot Arduino IDE. You should now be able to build
    ArduPlane or ArduCopter from source.

  5. 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

  1. Visit release page
  2. Download Configurator for Linux platform (linux32 and linux64 are present)
  3. Extract tar.gz archive
  4. Make the ArduPilot-configurator file executable (chmod x ArduPilot-configurator)
  5. 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 соединиться с этим портом и выведет на экран сообщения автопилота, примерно как у меня:

[email protected]:~ $ 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 deactivatemv ~/.npmrc ~/.npmrc.bakrm -rf node_modules/nwrm package-lock.jsonnpm install --save [email protected]sudo npm install --save [email protected] -gexport 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 open chrome://extensions, enable
      the Developer mode, click on the Load unpacked extension... button and select the ArduConfigurator directory.

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

  1. Visit release page
  2. Download Configurator for Windows platform (win32 or win64 is present)
  3. Extract ZIP archive
  4. Run ArduPilot Configurator app from unpacked folder
  5. Configurator is not signed, so you have to allow Windows to run untrusted application. There might be a monit for it during first run

Видео через интернет

image

Для ретрансляции видео установим на сервер 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 можно увидеть на изображении ниже.
  • Примечание: параметры Nav были объединены с LOITER (слоняться) так что не беспокойтесь, если вы их не найдете.

  • 4. Информация: если вы приобрели APM до марта 2022 года, обновить PPM энкодер до последней версии. (инструкции здесь ).
  • 5. Попробуйте новую версию сначала в режиме Stabilize (стабилизация), а затем Alt-Hold (удержание высоты), потом LOITER (слонятся) и наконец RTL (Возврат на точку старта) и Авто.

Отдельное спасибо Марко , DaveC и остальным бета-тестерам своих квадрокоптеров на период тестирования.

Калибровка датчиков и настройка параметров автопилота


Калибровку автопилота можно сделать почти в любой GCS. В документации Ardupilot она

Смотрите про коптеры:  FPV & Микро: Новинки FPV

во всех подробностях. Прежде всего устанавливаем тип рамы. У меня стандартная 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 2022-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 [email protected]_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 покажет кучу сообщений с требованием откалибровать датчики и загрузит бортовые параметры с их текущими значениями:

Оцените статью
Радиокоптер.ру
Добавить комментарий

Adblock
detector