diff --git a/clover/www/console.html b/clover/www/console.html new file mode 100644 index 00000000..a094f328 --- /dev/null +++ b/clover/www/console.html @@ -0,0 +1,23 @@ +
Butterfly)ros3djs)Blockly)/var/log/clover.log)/var/log/clover.log)
-Платформа Клевера позволяет использовать [Raspberry Pi](raspberry.md) для того, чтобы запрограммировать автономный полет дрона. Чаще всего программа для автономного полета пишется на языке Python. Программа может [получать телеметрию](simple_offboard.md#get_telemetry) (заряд батареи, ориентацию, расположение и т. д.) и отправлять команды: [полететь в точку](simple_offboard.md#navigate), [установить ориентацию](simple_offboard.md#set_attitude), [угловую скорость](simple_offboard.md#set_rates) и т. д.
+Платформа Клевера позволяет использовать [Raspberry Pi](raspberry.md) для того, чтобы запрограммировать автономный полет дрона. Чаще всего программа для автономного полета пишется на языке Python. Программа может [получать телеметрию](simple_offboard.md#get_telemetry) (заряд батареи, ориентацию, положение, скорости) и отправлять команды, например: [полететь в точку](simple_offboard.md#navigate), [установить ориентацию](simple_offboard.md#set_attitude), [установить угловую скорость](simple_offboard.md#set_rates).
Платформа основывается на [фреймворке ROS](ros.md), который обеспечивает связь между пользовательской программой и сервисами Клевера, которые запущены в фоне в виде systemd-демона `clover`. Для связи с полетным контроллером используется пакет [MAVROS](mavros.md).
@@ -10,7 +10,7 @@
## Система позиционирования {#positioning}
-Для того, чтобы дрон мог зависать на месте или летать между точками, необходимо использование системы позиционирования. Такая система должна вычислять и сообщать дрону, где он находится. Клевер предполагает использование нескольких систем позиционирования: [optical flow](optical_flow.md) (используется [камера](camera.md) и [лазерный дальномер](laser.md)), [визуальные маркеры](aruco.md) (используется камера и маркеры, наклеенные на пол или потолок), GPS и других.
+Для того, чтобы дрон мог зависать на месте или летать между точками, необходимо использование системы позиционирования. Такая система вычисляет и сообщает дрону, где он находится. Клевер предполагает использование нескольких систем позиционирования: [optical flow](optical_flow.md) (используется [камера](camera.md) и [лазерный дальномер](laser.md)), [визуальные маркеры](aruco.md) (используется камера и маркеры, наклеенные на пол или потолок), GPS и других.
### Optical flow
@@ -32,7 +32,7 @@
## Автономный полет {#flight}
-> **Info** Для изучения языка программирования Python вы можете обратиться к [самоучителю](https://pythonworld.ru/samouchitel-python).
+> **Info** Для изучения языка программирования Python можно обратиться к [самоучителю](https://pythonworld.ru/samouchitel-python).
После настройки системы позиционирования становится возможным написание скриптов для автономных полетов. Для выполнения скриптов [подключитесь в Raspberry Pi по SSH](ssh.md).
diff --git a/docs/ru/snippets.md b/docs/ru/snippets.md
index 1dd3a726..de2eee9b 100644
--- a/docs/ru/snippets.md
+++ b/docs/ru/snippets.md
@@ -17,13 +17,11 @@
-Полет в точку и ожидание окончания полета:
+Функция для полета в точку и ожидание окончания полета:
```python
import math
-# ...
-
def navigate_wait(x=0, y=0, z=0, yaw=float('nan'), speed=0.5, frame_id='', auto_arm=False, tolerance=0.2):
navigate(x=x, y=y, z=z, yaw=yaw, speed=speed, frame_id=frame_id, auto_arm=auto_arm)
@@ -74,8 +72,6 @@ land_wait()
```python
import math
-# ...
-
def wait_arrival(tolerance=0.2):
while not rospy.is_shutdown():
telem = get_telemetry(frame_id='navigate_target')
@@ -91,8 +87,6 @@ def wait_arrival(tolerance=0.2):
```python
import math
-# ...
-
def get_distance(x1, y1, z1, x2, y2, z2):
return math.sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2 + (z1 - z2) ** 2)
```
@@ -104,8 +98,6 @@ def get_distance(x1, y1, z1, x2, y2, z2):
```python
import math
-# ...
-
def get_distance_global(lat1, lon1, lat2, lon2):
return math.hypot(lat1 - lat2, lon1 - lon2) * 1.113195e5
```
@@ -221,19 +213,16 @@ from geometry_msgs.msg import PoseStamped, TwistStamped
from sensor_msgs.msg import BatteryState
from mavros_msgs.msg import RCIn
-# ...
-
def pose_update(pose):
# Обработка новых данных о позиции коптера
pass
-# Остальные функции-обработчики
-# ...
-
rospy.Subscriber('/mavros/local_position/pose', PoseStamped, pose_update)
rospy.Subscriber('/mavros/local_position/velocity', TwistStamped, velocity_update)
rospy.Subscriber('/mavros/battery', BatteryState, battery_update)
rospy.Subscriber('mavros/rc/in', RCIn, rc_callback)
+
+rospy.spin()
```
Информацию по топикам MAVROS см. по [ссылке](mavros.md).
@@ -247,14 +236,10 @@ rospy.Subscriber('mavros/rc/in', RCIn, rc_callback)
Пример отправки произвольного [MAVLink-сообщения](mavlink.md) коптеру:
```python
-# ...
-
from mavros_msgs.msg import Mavlink
from mavros import mavlink
from pymavlink import mavutil
-# ...
-
mavlink_pub = rospy.Publisher('mavlink/to', Mavlink, queue_size=1)
# Отправка сообщения HEARTBEAT:
@@ -299,8 +284,6 @@ rospy.spin()
```python
from mavros_msgs.srv import SetMode
-# ...
-
set_mode = rospy.ServiceProxy('mavros/set_mode', SetMode)
# ...
@@ -315,8 +298,6 @@ set_mode(custom_mode='STABILIZED')
```python
import math
-# ...
-
PI_2 = math.pi / 2
def flip():
@@ -355,8 +336,6 @@ from pymavlink import mavutil
from mavros_msgs.srv import CommandLong
from mavros_msgs.msg import State
-# ...
-
send_command = rospy.ServiceProxy('/mavros/cmd/command', CommandLong)
def calibrate_gyro():
@@ -390,16 +369,14 @@ calibrate_gyro()
import rospy
import dynamic_reconfigure.client
-# ...
-
client = dynamic_reconfigure.client.Client('aruco_detect')
-# Turn markers recognition off
+# Включить распознавание маркеров
client.update_configuration({'enabled': False})
rospy.sleep(5)
-# Turn markers recognition on
+# Выключить распознавание маркеров
client.update_configuration({'enabled': True})
```
@@ -410,8 +387,6 @@ client.update_configuration({'enabled': True})
```python
import math
-# ...
-
while not rospy.is_shutdown():
if math.isfinite(get_telemetry().lat):
break
@@ -426,12 +401,8 @@ while not rospy.is_shutdown():
from mavros_msgs.srv import ParamGet
from mavros_msgs.msg import ParamValue
-# ...
-
param_get = rospy.ServiceProxy('mavros/param/get', ParamGet)
-# ...
-
# Считать параметр типа INT
value = param_get(param_id='COM_FLTMODE1').value.integer
@@ -447,12 +418,8 @@ value = param_get(param_id='MPC_Z_P').value.float
from mavros_msgs.srv import ParamSet
from mavros_msgs.msg import ParamValue
-# ...
-
param_set = rospy.ServiceProxy('mavros/param/set', ParamSet)
-# ...
-
# Изменить параметр типа INT:
param_set(param_id='COM_FLTMODE1', value=ParamValue(integer=8))