- 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
12 KiB
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– есть ли подключение к FCUarmed– состояниеarmedвинтов (винты включены, если true)mode- текущий полетный режимx, y, z– локальная позиция коптераlat, lon– широта, долгота (при наличии gps)vx, vy, vz– скорость коптераpitch– угол по тангажу (радианы)roll– угол по крену (радианы)yaw– угол по рысканью в фреймеframe_idpitch_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.