Files
clover/docs/simple_offboard.md
Oleg Kalachev 571c12061e Track 411 files into repository.
- untracked .gitattributes
- untracked .gitignore
- untracked apps/ios/.gitignore
- untracked apps/ios/cleverrc.xcodeproj/project.pbxproj
- untracked apps/ios/cleverrc.xcodeproj/project.xcworkspace/contents.xcworkspacedata
- untracked apps/ios/cleverrc.xcworkspace/contents.xcworkspacedata
- untracked apps/ios/cleverrc/AppDelegate.swift
- untracked apps/ios/cleverrc/Assets.xcassets/AppIcon.appiconset/cleverios180-1.png
- untracked apps/ios/cleverrc/Assets.xcassets/AppIcon.appiconset/cleverios180.png
- untracked apps/ios/cleverrc/Assets.xcassets/AppIcon.appiconset/Contents.json
- untracked apps/ios/cleverrc/Assets.xcassets/Contents.json
- untracked apps/ios/cleverrc/Assets.xcassets/Image.imageset/Contents.json
- untracked apps/ios/cleverrc/Base.lproj/LaunchScreen.storyboard
- untracked apps/ios/cleverrc/Base.lproj/Main.storyboard
- untracked apps/ios/cleverrc/BinUtils.swift
- untracked apps/ios/cleverrc/clever.svg
- untracked apps/ios/cleverrc/index.html
- untracked apps/ios/cleverrc/Info.plist
- untracked apps/ios/cleverrc/main.css
- untracked apps/ios/cleverrc/main.js
- untracked apps/ios/cleverrc/README.md
- untracked apps/ios/cleverrc/roslib.js
- untracked apps/ios/cleverrc/telemetry.js
- untracked apps/ios/cleverrc/ViewController.swift
- untracked apps/ios/Podfile
- untracked apps/ios/Podfile.lock
- untracked apps/ios/README.md
- untracked aruco_pose/CMakeLists.txt
- untracked aruco_pose/nodelet_plugins.xml
- untracked aruco_pose/package.xml
- untracked aruco_pose/src/aruco_pose.cpp
- untracked aruco_pose/src/fix.cpp
- untracked assets/11_1.png
- untracked assets/11_2.png
- untracked assets/11_3.png
- untracked assets/11_4.png
- untracked assets/11_5.png
- untracked assets/13_1.png
- untracked assets/13_10.png
- untracked assets/13_11.png
- untracked assets/13_2.png
- untracked assets/13_3.jpg
- untracked assets/13_4.png
- untracked assets/13_5.png
- untracked assets/13_6.png
- untracked assets/13_7.png
- untracked assets/13_8.png
- untracked assets/13_9.png
- untracked assets/15_1.png
- untracked assets/15_2.png
- untracked assets/15_3.png
- untracked assets/15_4.png
- untracked assets/15_5.png
- untracked assets/15_6.png
- untracked assets/15_7.png
- untracked assets/16_1.png
- untracked assets/16_2.png
- untracked assets/16_3.png
- untracked assets/16_4.png
- untracked assets/1_1.png
- untracked assets/1_10.png
- untracked assets/1_11.png
- untracked assets/1_12.png
- untracked assets/1_13.png
- untracked assets/1_2.png
- untracked assets/1_3.png
- untracked assets/1_4.png
- untracked assets/1_5.png
- untracked assets/1_6.png
- untracked assets/1_7.png
- untracked assets/1_8.png
- untracked assets/1_9.png
- untracked assets/2_1.png
- untracked assets/2_2.png
- untracked assets/2_3.png
- untracked assets/2_4.png
- untracked assets/2_5.png
- untracked assets/2_6.png
- untracked assets/2_7.png
- untracked assets/2_8.png
- untracked assets/2_9.png
- untracked assets/4_1.png
- untracked assets/4_2.png
- untracked assets/4_3.png
- untracked assets/4_4.png
- untracked assets/4_5.png
- untracked assets/4_6.png
- untracked assets/7_1.png
- untracked assets/7_2.png
- untracked assets/7_3.png
- untracked assets/7_4.png
- untracked assets/8_1.png
- untracked assets/8_2.png
- untracked assets/8_3.png
- untracked assets/8_4.png
- untracked assets/8_5.png
- untracked assets/8_6.png
- untracked assets/9_1.png
- untracked assets/9_2.png
- untracked assets/addEqipment.jpg
- untracked assets/airframeSetup.jpg
- untracked assets/allElements.png
- untracked assets/attentionSave.jpg
- untracked assets/brrc2205.png
- untracked assets/brrc2205on.png
- untracked assets/brrc2205ondeck.png
- untracked assets/calibrateaxcel.jpg
- untracked assets/calibrateaxcelstart.jpg
- untracked assets/calibratecompass.jpg
- untracked assets/calibrateESC.jpg
- untracked assets/calibrategyro.jpg
- untracked assets/calibratePIDparams.jpg
- untracked assets/calibrateView.jpg
- untracked assets/calibrateViewStart.jpg
- untracked assets/casebattery.png
- untracked assets/chooseSwitch.jpg
- untracked assets/Clever main.png
- untracked assets/clever.jpg
- untracked assets/Clevermain.png
- untracked assets/connectBattery.png
- untracked assets/connectingRadio.png
- untracked assets/connectionESCtoReceiver.png
- untracked assets/connectionLost.jpg
- untracked assets/connectionOK.jpg
- untracked assets/connectionPixhawk.png
- untracked assets/consistofTransmitter.jpg
- untracked assets/cutwire14AWG.jpg
- untracked assets/escDYSzap.png
- untracked assets/escWires.png
- untracked assets/explosion.png
- untracked assets/firmwarePX4.jpg
- untracked assets/flightModes.jpg
- untracked assets/helphand.jpg
- untracked assets/holderLegs.png
- untracked assets/isoViewmountHolder.png
- untracked assets/jumper.png
- untracked assets/keep.png
- untracked assets/lockradio.jpg
- untracked assets/lockradio.png
- untracked assets/lowsafeDeck.png
- untracked assets/mainWindow.jpg
- untracked assets/motorsTopview.png
- untracked assets/mount5vconnector.png
- untracked assets/mountAntenna.png
- untracked assets/mountBeams.png
- untracked assets/mountBottomDeck.png
- untracked assets/mountHolder.png
- untracked assets/mountPDB.png
- untracked assets/mountReceiverDeck.png
- untracked assets/mountReceiverStud.png
- untracked assets/mountxt60pinsocket.png
- untracked assets/notmoveslider.jpg
- untracked assets/pixhawk.png
- untracked assets/radioTransmitter.png
- untracked assets/readyBatteryholder.png
- untracked assets/receiver5V.png
- untracked assets/receiverPPM.png
- untracked assets/resolderingESC.png
- untracked assets/safehighRadial.png
- untracked assets/safeLegs.png
- untracked assets/safelowRadial.png
- untracked assets/safetybyassem.png
- untracked assets/safetyINflight.png
- untracked assets/safetyPower.png
- untracked assets/safetyPreflight.png
- untracked assets/soldering5VTOpdb.png
- untracked assets/solderingBrrc2205ondeckTOescDYSzap.png
- untracked assets/solderingPowerwires.png
- untracked assets/solderingxt60socketTOpdb.png
- untracked assets/stand.jpg
- untracked assets/startPDBtest.jpg
- untracked assets/testMotors.png
- untracked assets/topESCcaseview.png
- untracked assets/topPreview.png
- untracked assets/topviewmountPDB.png
- untracked assets/topviewpixhawk.png
- untracked assets/turnoffSafetyswitch.jpg
- untracked assets/xt60pinsocket.jpg
- untracked assets/zap.jpg
- untracked assets/zapPDBtest.jpg
- untracked clever/camera_info/fisheye_cam_320.yaml
- untracked clever/camera_info/fisheye_cam_640.yaml
- untracked clever/CMakeLists.txt
- untracked clever/launch/arduino.launch
- untracked clever/launch/aruco.launch
- untracked clever/launch/clever.launch
- untracked clever/launch/copter_visualization.launch
- untracked clever/launch/fpv_camera.launch
- untracked clever/launch/main_camera.launch
- untracked clever/launch/mavros.launch
- untracked clever/launch/sitl.launch
- untracked clever/launch/web_server.launch
- untracked clever/nodelet_plugins.xml
- untracked clever/package.xml
- untracked clever/requirements.txt
- untracked clever/src/aruco_vpe.cpp
- untracked clever/src/fcu_horiz.cpp
- untracked clever/src/fpv_camera
- untracked clever/src/global_local.py
- untracked clever/src/rc.cpp
- untracked clever/src/simple_offboard.py
- untracked clever/src/util.h
- untracked clever/src/util.py
- untracked clever/src/web_server.py
- untracked clever/srv/GetTelemetry.srv
- untracked clever/srv/Navigate.srv
- untracked clever/srv/SetAttitude.srv
- untracked clever/srv/SetAttitudeYawRate.srv
- untracked clever/srv/SetPosition.srv
- untracked clever/srv/SetPositionGlobal.srv
- untracked clever/srv/SetPositionGlobalYawRate.srv
- untracked clever/srv/SetPositionYawRate.srv
- untracked clever/srv/SetRates.srv
- untracked clever/srv/SetRatesYaw.srv
- untracked clever/srv/SetVelocity.srv
- untracked clever/srv/SetVelocityYawRate.srv
- untracked deploy/clever.service
- untracked deploy/clever_arudino.tar.gz
- untracked deploy/generate_ros_lib
- untracked deploy/roscore.env
- untracked deploy/roscore.service
- modified docs/3g.md
- modified docs/assemble.md
- untracked docs/deck.md
- modified docs/etcher.md
- modified docs/frames.md
- modified docs/les1.md
- modified docs/les11.md
- modified docs/les13.md
- modified docs/les15.md
- modified docs/les16.md
- modified docs/les2.md
- modified docs/les4.md
- modified docs/les7.md
- modified docs/les8.md
- modified docs/les9.md
- modified docs/modes.md
- untracked docs/powerConnection.md
- modified docs/radioerrors.md
- modified docs/radioerrors1.md
- modified docs/safety.md
- modified docs/setup.md
- modified docs/simple_offboard.md
- modified docs/tb.md
- untracked docs/testConnection.md
- modified docs/wifi.md
- untracked docs/zap.md
- removed gpsmd.md
- untracked image/apps.sh
- untracked image/git_release.py
- untracked image/iface.sh
- untracked image/image-config.sh
- untracked image/Jenkinsfile
- untracked image/ros.sh
- untracked image/yadisk.py
- removed img/11_1.png
- removed img/11_2.png
- removed img/11_3.png
- removed img/11_4.png
- removed img/11_5.png
- removed img/13_1.png
- removed img/13_10.png
- removed img/13_11.png
- removed img/13_2.png
- removed img/13_3.jpg
- removed img/13_4.png
- removed img/13_5.png
- removed img/13_6.png
- removed img/13_7.png
- removed img/13_8.png
- removed img/13_9.png
- removed img/15_1.png
- removed img/15_2.png
- removed img/15_3.png
- removed img/15_4.png
- removed img/15_5.png
- removed img/15_6.png
- removed img/15_7.png
- removed img/16_1.png
- removed img/16_2.png
- removed img/16_3.png
- removed img/16_4.png
- removed img/1_1.png
- removed img/1_10.png
- removed img/1_11.png
- removed img/1_12.png
- removed img/1_13.png
- removed img/1_2.png
- removed img/1_3.png
- removed img/1_4.png
- removed img/1_5.png
- removed img/1_6.png
- removed img/1_7.png
- removed img/1_8.png
- removed img/1_9.png
- removed img/2_1.png
- removed img/2_2.png
- removed img/2_3.png
- removed img/2_4.png
- removed img/2_5.png
- removed img/2_6.png
- removed img/2_7.png
- removed img/2_8.png
- removed img/2_9.png
- removed img/4_1.png
- removed img/4_2.png
- removed img/4_3.png
- removed img/4_4.png
- removed img/4_5.png
- removed img/4_6.png
- removed img/7_1.png
- removed img/7_2.png
- removed img/7_3.png
- removed img/7_4.png
- removed img/8_1.png
- removed img/8_2.png
- removed img/8_3.png
- removed img/8_4.png
- removed img/8_5.png
- removed img/8_6.png
- removed img/9_1.png
- removed img/9_2.png
- removed img/addEqipment.jpg
- removed img/airframeSetup.jpg
- removed img/allElements.png
- removed img/attentionSave.jpg
- removed img/brrc2205.png
- removed img/brrc2205on.png
- removed img/brrc2205ondeck.png
- removed img/calibrateaxcel.jpg
- removed img/calibrateaxcelstart.jpg
- removed img/calibratecompass.jpg
- removed img/calibrateESC.jpg
- removed img/calibrategyro.jpg
- removed img/calibratePIDparams.jpg
- removed img/calibrateView.jpg
- removed img/calibrateViewStart.jpg
- removed img/casebattery.png
- removed img/chooseSwitch.jpg
- removed img/Clever main.png
- removed img/clever.jpg
- removed img/Clevermain.png
- removed img/connectBattery.png
- removed img/connectingRadio.png
- removed img/connectionESCtoReceiver.png
- removed img/connectionLost.jpg
- removed img/connectionOK.jpg
- removed img/connectionPixhawk.png
- removed img/consistofTransmitter.jpg
- removed img/cutwire14AWG.jpg
- removed img/escDYSzap.png
- removed img/escWires.png
- removed img/explosion.png
- removed img/firmwarePX4.jpg
- removed img/flightModes.jpg
- removed img/helphand.jpg
- removed img/holderLegs.png
- removed img/isoViewmountHolder.png
- removed img/jumper.png
- removed img/keep.png
- removed img/lockradio.jpg
- removed img/lockradio.png
- removed img/lowsafeDeck.png
- removed img/mainWindow.jpg
- removed img/motorsTopview.png
- removed img/mount5vconnector.png
- removed img/mountAntenna.png
- removed img/mountBeams.png
- removed img/mountBottomDeck.png
- removed img/mountHolder.png
- removed img/mountPDB.png
- removed img/mountReceiverDeck.png
- removed img/mountReceiverStud.png
- removed img/mountxt60pinsocket.png
- removed img/notmoveslider.jpg
- removed img/pixhawk.png
- removed img/radioTransmitter.png
- removed img/readyBatteryholder.png
- removed img/receiver5V.png
- removed img/receiverPPM.png
- removed img/resolderingESC.png
- removed img/safehighRadial.png
- removed img/safeLegs.png
- removed img/safelowRadial.png
- removed img/safetybyassem.png
- removed img/safetyINflight.png
- removed img/safetyPower.png
- removed img/safetyPreflight.png
- removed img/soldering5VTOpdb.png
- removed img/solderingBrrc2205ondeckTOescDYSzap.png
- removed img/solderingPowerwires.png
- removed img/solderingxt60socketTOpdb.png
- removed img/stand.jpg
- removed img/startPDBtest.jpg
- removed img/testMotors.png
- removed img/topESCcaseview.png
- removed img/topPreview.png
- removed img/topviewmountPDB.png
- removed img/topviewpixhawk.png
- removed img/turnoffSafetyswitch.jpg
- removed img/xt60pinsocket.jpg
- removed img/zap.jpg
- removed img/zapPDBtest.jpg
- removed notes/deck.md
- removed notes/powerConnection.md
- removed notes/testConnection.md
- removed notes/zap.md
- removed primeri-programm.md
- modified README.md
- removed sborka.md
- removed sitl.md

Auto commit by GitBook Editor
2018-02-19 22:22:08 +03:00

12 KiB
Raw Blame History

Simple offboard

Модуль simple_offboard пакета clever предназначен для упрощенного программирования автономного дрона (режим OFFBOARD). Он позволяет устанавливать желаемые полетные задачи и автоматически трансформирует систему координат.

Note

simple_offboard является высокоуровневым способом взаимодействия с полетным контроллером. Для более низкоуровневой работы см. mavros.

Основные сервисы get_telemetry (получение всей телеметрии разом), navigate (полет в заданную точку по прямой).

Общие для сервисов параметры:

  • auto_arm = true/false перевести коптер в OFFBOARD и заармить автоматически (коптер взлетит, если находится на полу!)
  • frame_id — система координат в TF2, в которой заданы координаты и рысканье (yaw), описание систем координат;
  • update_frame — считать ли систему координат изменяющейся (например, false для local_origin, fcu, fcu_horiz, true для marker_map);
  • x, y горизонтальные координаты в системе координат frame_id;
  • z — высота в системе координат frame_id;
  • yaw — рысканье в радианах в системе координат frame_id (0 коптер смотрит по оси X);
  • yaw_rate — угловая скорость по рысканью в радианах в секунду (против часовой);
  • thrust — уровень газа (от 0 [нет газа] до 1 [полный газ]).

Warning

API модуля simple_offboard на данный момент нестабилен и может измениться.

Использование из языка Python

Объявление прокси ко всем сервисам:

import rospy
from clever import srv
from std_srvs.srv import Trigger

rospy.init_node('foo')

# Создаем прокси ко всем сервисам:

navigate = rospy.ServiceProxy('/navigate', srv.Navigate)

set_position = rospy.ServiceProxy('/set_position', srv.SetPosition)
set_position_yaw_rate = 
rospy.ServiceProxy('/set_position/yaw_rate', srv.SetPositionYawRate)

set_position_global = rospy.ServiceProxy('/set_position_global', srv.SetPositionGlobal)
set_position_global_yaw_rate = rospy.ServiceProxy('/set_position_global/yaw_rate', srv.SetPositionGlobalYawRate)

set_velocity = rospy.ServiceProxy('/set_velocity', srv.SetVelocity)
set_velocity_yaw_rate = rospy.ServiceProxy('/set_Velocity/yaw_rate', srv.SetVelocityYawRate)

set_attitude = rospy.ServiceProxy('/set_attitude', srv.SetAttitude)
set_attitude_yaw_rate = rospy.ServiceProxy('/set_attitude/yaw_rate', srv.SetAttitudeYawRate)

set_rates_yaw = rospy.ServiceProxy('/set_rates/yaw', srv.SetRatesYaw)
set_rates = rospy.ServiceProxy('/set_rates', srv.SetRates)

get_telemetry = rospy.ServiceProxy('/get_telemetry', srv.GetTelemetry)
release = rospy.ServiceProxy('/release', Trigger)

Неиспользуемые фукнции-прокси можно удалить из кода.

Список сервисов

get_telemetry

Получить полную телеметрию коптера. Параметр: frame_id – фрейм для значений x, y, z, vx, vy, vz. Пример: local_origin, fcu_horiz, aruco_map.

Ответ:

  • frame_id – фрейм
  • connected есть ли подключение к FCU
  • armed состояние armed винтов (винты включены, если true)
  • mode - текущий полетный режим
  • x, y, z – локальная позиция коптера
  • lat, lon широта, долгота (при наличии gps)
  • vx, vy, vz скорость коптера
  • pitch – угол по тангажу (радианы)
  • roll угол по крену (радианы)
  • yaw – угол по рысканью в фрейме frame_id
  • pitch_rate – угловая скорость по тангажу
  • roll_rate – угловая скорость по крену
  • yaw_rate – угловая скорость по рысканью
  • voltage общее напряжение аккумулятор
  • cell_voltage напряжение аккумулятора на ячейку

Пример. Вывести координаты x, y и z коптера в локальной системе координат:

telemetry = get_telemetry()
print telemetry.x, telemetry.y, telemetry.z

Вывод текущей телеметрии из командной строки:

rosservice call /get_telemetry "{frame_id: ''}"

navigate

Прилететь в обозначенную точку по прямой.

Параметры:

  • x, y, z координаты в системе frame_id
  • yaw угол по рысканью
  • speed скорость полета (скорость движения setpoint)
  • frame_id, update_frame, auto_arm.

Примеры:

# плавно взлететь на высоту 1.5 м со скоростью взлета 0.5 м/с
navigate(x=0, y=0, z=1.5, speed=0.5, frame_id='fcu_horiz', auto_arm=True)
# прилететь по прямой в точку 5:0 (высота 2)
# в локальной системе координат со скоростью 0.8 м/с
navigate(x=5, y=0, z=3, speed=0.8)
# пролететь вправо относительно коптера на 3 м
navigate(x=0, y=-1, z=0, speed=1, frame_id='fcu_horiz')
# прилететь в точку 3:2 (высота 2) в системе координат маркерного поля
# со скоростью 1 м/с
navigate(x=3, y=2, z=2, speed=1, frame_id='aruco_map', update_frame=True)

Пример взлета на коптере на 2 метра из командной строки:

rosservice call /navigate "{x: 0.0, y: 0.0, z: 2, yaw: 0.0, speed: 0.5, frame_id: 'fcu_horiz', update_frame: false, auto_arm: true}"

set_position

Установить цель по позиции и рысканью.

Hint Для полета на точку по прямой или взлета используйте более высокоуровневый сервис navigate.

Параметры: x, y, z, yaw, frame_id, update_frame

Задание позиции относительно текущей позиции коптера:

set_position(x=0, y=0, z=3, frame_id='fcu_horiz', auto_arm=true)  #  взлет на 3 метра
set_position(x=1, y=0, z=0, frame_id='fcu_horiz')  # пролететь вперед на 1 метр
set_position(x=0, y=-1, z=0, frame_id='fcu_horiz')  # пролететь вправо на 1 метр

Задание позиции относительно системы маркеров (фрейм aruco_map не будет опубликован, пока коптер хоть раз не увидит один из маркеров):

set_position(x=2, y=2, z=3, frame_id='aruco_map', update_frame=True)  #  полет в координату 2:2, высота 3 метра

set_position_yaw_rate

Установить цель по позиции и угловую скорость по рысканью.

Параметры: x, y, z, yaw_rate, frame_id, update_frame

set_position_global

Полет в позицию в глобальной системе координат (широта/долгота).

Параметры: lat (широта), lon (долгота), z (высота в системе координат frame_id), yaw (рысканье в системе координат frame_id), update_frame.

Полет в глобальную точку (оставаясь на текущей высоте):

set_position_global(lat=55.707033, lon=37.725010, z=0, frame_id='fcu_horiz')

set_position_global_yaw_rate

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

Параметры: lat (широта), lon (долгота), z (высота в системе координат frame_id), yaw_rate (угловая скорость по рысканью), update_frame.

set_velocity

Установить скорости и рысканье. Параметр frame_id влияет только на ориентацию результирующего вектора скорости, но не на его длину.

Параметры: vx, vy, vz, yaw, frame_id, update_frame

Полет по кругу:

set_velocity_yaw_rate(vx=0.2, vy=0.0, vz=0, yaw_rate=0.5, frame_id: 'fcu_horiz', update_frame: true)

set_velocity_yaw_rate

Установить скорости и угловую скорость по рысканью.

Параметры: vx, vy, vz, yaw_rate, frame_id, update_frame

set_attitude

Установить тангаж, крен, рысканье и уровень газа. Имеет смысл использовать этот сервис со значением frame_id равным fcu_horiz.

Параметры: pitch, roll, yaw, thrust, frame_id, update_frame

set_attitude_yaw_rate

Установить тангаж, крен, угловую скорость по рысканью и уровень газа. Имеет смысл использовать этот сервис со значением frame_id равным fcu_horiz. Возможно, не поддерживается в PX4.

Параметры: pitch, roll, yaw_rate, thrust

set_rates_yaw

Установить угловые скорости по тангажу и крену, рысканье и уровень газа.

Параметры: pitch_rate, roll_rate, yaw, thrust, frame_id, update_frame

set_rates

Установить угловые скорости по тагажу, крену и рысканью и уровень газа.

Параметры: pitch_rate, roll_rate, yaw_rate, thrust

release

Перестать публиковать команды коптеру (отпустить управление). Возможно продолжение управления средствами MAVROS, Веб-пультом управления.

Посадка

Для посадки можно использовать режим AUTO.LAND. Land detector должен быть включен и указан в LPE_FUSION. Параметр COM_DISARM_LAND должен быть установлен в значение > 0.

from mavros_msgs.srv import SetMode

# ...

set_mode = rospy.ServiceProxy('/mavros/set_mode', SetMode)  # объявляем прокси к сервису переключения режимов

# ...

set_mode(base_mode=0, custom_mode='AUTO.LAND')  # включаем режим посадки

Для полетов в поле ArUco-макеров см. навигация по ArUco.