diff --git a/docs/simple_offboard.md b/docs/simple_offboard.md index 56c0df8c..e7732776 100644 --- a/docs/simple_offboard.md +++ b/docs/simple_offboard.md @@ -51,6 +51,8 @@ release = rospy.ServiceProxy('release', Trigger) Описание API --- +> **Note** Незаполненные числовые параметры устанавливаются в значение 0. + ### get_telemetry Получить полную телеметрию коптера. @@ -77,6 +79,8 @@ release = rospy.ServiceProxy('release', Trigger) * `voltage` – общее напряжение аккумулятора; * `cell_voltage` – напряжение аккумулятора на ячейку; +> **Note** Недоступные по каким-то причинам значения будут содержать в себе `NaN`. + Вывод координат `x`, `y` и `z` коптера в локальной системе координат: ```python @@ -91,6 +95,16 @@ telemetry = get_telemetry(frame_id='aruco_map') print telemetry.z ``` +Проверка доступности глобальной позиции: + +```python +import math +if not math.isnan(get_telemetry().lat): + print 'Global position presents' +else: + print 'No global position' +``` + Вывод текущей телеметрии (командная строка): ```bash @@ -110,43 +124,43 @@ rosservice call /get_telemetry "{frame_id: ''}" * `auto_arm` – перевести коптер в `OFFBOARD` и заармить автоматически (**коптер взлетит, если находится на полу!**); * `frame_id`, `update_frame`. -Взлететь на высоту 1.5 м со скоростью взлета 0.5 м/с: +Взлет на высоту 1.5 м со скоростью взлета 0.5 м/с: ```python navigate(x=0, y=0, z=1.5, speed=0.5, frame_id='fcu_horiz', auto_arm=True) ``` -Прилететь по прямой в точку 5:0 (высота 2) в локальной системе координат со скоростью 0.8 м/с: +Полет по прямой в точку 5:0 (высота 2) в локальной системе координат со скоростью 0.8 м/с: ```python navigate(x=5, y=0, z=3, speed=0.8) ``` -Пролететь вправо относительно коптера на 3 м: +Полет вправо относительно коптера на 3 м: ```python -navigate(x=0, y=-1, z=0, speed=1, frame_id='fcu_horiz') +navigate(x=0, y=-3, z=0, speed=1, frame_id='fcu_horiz') ``` -Прилететь в точку 3:2 (высота 2) в системе координат [маркерного поля](aruco.md) со скоростью 1 м/с: +Полет в точку 3:2 (высота 2) в системе координат [маркерного поля](aruco.md) со скоростью 1 м/с: ```python navigate(x=3, y=2, z=2, speed=1, frame_id='aruco_map', update_frame=True) ``` -Вращение на месте со скоростью 0.5 рад/c: +Вращение на месте со скоростью 0.5 рад/c (против часовой): ```python -navigate(x=0, y=0, z=0, yaw=float('nan'), yaw_rate=0.5, frame_id='fcu_horiz') +navigate(x=0, y=0, z=0, speed=1, yaw=float('nan'), yaw_rate=0.5, frame_id='fcu_horiz') ``` -Пролететь вперед 3 метра со скоростью 0.5 м/с, вращаясь по рысканью со скоростью 0.2 рад/с: +Полет вперед 3 метра со скоростью 0.5 м/с, вращаясь по рысканью со скоростью 0.2 рад/с: ```python navigate(x=3, y=0, z=0, speed=0.5, yaw=float('nan'), yaw_rate=0.2, frame_id='fcu_horiz') ``` -Взлететь на высоту 2 м (командная строка): +Взлет на высоту 2 м (командная строка): ```bash rosservice call /navigate "{x: 0.0, y: 0.0, z: 2, yaw: 0.0, yaw_rate: 0.0, speed: 0.5, frame_id: 'fcu_horiz', update_frame: false, auto_arm: true}" @@ -168,16 +182,16 @@ rosservice call /navigate "{x: 0.0, y: 0.0, z: 2, yaw: 0.0, yaw_rate: 0.0, speed * `auto_arm` – перевести коптер в `OFFBOARD` и заармить автоматически (**коптер взлетит, если находится на полу!**); * `frame_id`, `update_frame`. -Полет в глобальную точку по прямой (оставаясь на текущей высоте): +Полет в глобальную точку со скоростью 5 м/с (оставаясь на текущей высоте): ```python -navigate_global(lat=55.707033, lon=37.725010, z=0, frame_id='fcu_horiz') +navigate_global(lat=55.707033, lon=37.725010, z=0, speed=5, frame_id='fcu_horiz') ``` Полет в глобальную точку (командная строка): ```bash -rosservice call /navigate_global "{lat: 55.707033, lon: 37.725010, z: 0.0, yaw: 0.0, yaw_rate: 0.0, speed: 3.0, frame_id: 'fcu_horiz', update_frame: false, auto_arm: false}" +rosservice call /navigate_global "{lat: 55.707033, lon: 37.725010, z: 0.0, yaw: 0.0, yaw_rate: 0.0, speed: 5.0, frame_id: 'fcu_horiz', update_frame: false, auto_arm: false}" ``` ### set_position @@ -195,6 +209,12 @@ rosservice call /navigate_global "{lat: 55.707033, lon: 37.725010, z: 0.0, yaw: * `auto_arm` – перевести коптер в `OFFBOARD` и заармить автоматически (**коптер взлетит, если находится на полу!**); * `frame_id`, `update_frame`. +Зависнуть на месте: + +```python +set_position(frame_id='fcu_horiz') +``` + Назначить целевую точку на 3 м выше текущей позиции: ```python @@ -228,13 +248,13 @@ set_position(x=0, y=0, z=0, frame_id='fcu_horiz', yaw=float('nan'), yaw_rate=0.5 Полет вперед (относительно коптера) со скоростью 1 м/с: ```python -set_velocity(vx=1, vy=0.0, vz=0, frame_id: 'fcu_horiz') +set_velocity(vx=1, vy=0.0, vz=0, frame_id='fcu_horiz') ``` Один из вариантов полета по кругу: ```python -set_velocity(vx=0.2, vy=0.0, vz=0, yaw=float('nan'), yaw_rate=0.5, frame_id: 'fcu_horiz', update_frame: True) +set_velocity(vx=0.4, vy=0.0, vz=0, yaw=float('nan'), yaw_rate=0.4, frame_id='fcu_horiz', update_frame=True) ``` ### set_attitude @@ -272,8 +292,7 @@ set_velocity(vx=0.2, vy=0.0, vz=0, yaw=float('nan'), yaw_rate=0.5, frame_id: 'fc res = land() if res.success: - # коптер успешно переведен в режим AUTO.LAND - # ... + print 'Copter is landing' ``` Посадка коптера (командная строка):