mirror of
https://github.com/CopterExpress/clover.git
synced 2026-06-01 07:29:32 +00:00
Compare commits
21 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fec4859cfe | ||
|
|
63ecc3b713 | ||
|
|
d3a08c60d7 | ||
|
|
322eb1e255 | ||
|
|
22d4f3c3e7 | ||
|
|
008750b1d9 | ||
|
|
506767f32f | ||
|
|
aaa673de92 | ||
|
|
43237d8ff4 | ||
|
|
9681fc9a87 | ||
|
|
76c3e96f76 | ||
|
|
1e66afa6a4 | ||
|
|
41c59e8e49 | ||
|
|
225e3d7936 | ||
|
|
8cdb131a19 | ||
|
|
c9042588f0 | ||
|
|
342eaec49a | ||
|
|
77b3d28e3b | ||
|
|
357b38b5e7 | ||
|
|
a99a1c7540 | ||
|
|
6742ba332a |
@@ -4,13 +4,16 @@
|
||||
"author": "Copter Express",
|
||||
"language": "ru",
|
||||
"root": "docs/",
|
||||
"plugins": ["youtube", "richquotes", "versions"],
|
||||
"plugins": ["youtube", "richquotes", "versions", "yametrika"],
|
||||
"pluginsConfig": {
|
||||
"disqus": {
|
||||
"shortName": "coex-clever"
|
||||
},
|
||||
"versions": {
|
||||
"type": "tags"
|
||||
},
|
||||
"yametrika": {
|
||||
"id": 49359238
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
<arg name="fcu_ip" default="127.0.0.1"/>
|
||||
<arg name="gcs_bridge" default="tcp"/>
|
||||
<arg name="viz" default="true"/>
|
||||
<arg name="respawn" default="false"/>
|
||||
<arg name="respawn" default="true"/>
|
||||
|
||||
<node pkg="mavros" type="mavros_node" name="mavros" required="false" clear_params="true" respawn="$(arg respawn)" respawn_delay="3" output="screen">
|
||||
<node pkg="mavros" type="mavros_node" name="mavros" required="false" clear_params="true" respawn="$(arg respawn)" respawn_delay="5" output="screen">
|
||||
<!-- UART connection -->
|
||||
<param name="fcu_url" value="/dev/ttyAMA0:921600" if="$(eval fcu_conn is None or fcu_conn == 'uart')"/>
|
||||
|
||||
@@ -18,7 +18,8 @@
|
||||
<!-- gcs bridge -->
|
||||
<param name="gcs_url" value="tcp-l://0.0.0.0:5760" if="$(eval gcs_bridge == 'tcp')"/>
|
||||
<param name="gcs_url" value="udp://0.0.0.0:14550@14550" if="$(eval gcs_bridge == 'udp')"/>
|
||||
<param name="gcs_url" value="udp-pb://192.168.11.1:14550@" if="$(eval gcs_bridge == 'udp-b')"/>
|
||||
<param name="gcs_url" value="udp-b://0.0.0.0:14550@14550" if="$(eval gcs_bridge == 'udp-b')"/>
|
||||
<param name="gcs_url" value="udp-pb://0.0.0.0:14550@14550" if="$(eval gcs_bridge == 'udp-pb')"/>
|
||||
<param name="gcs_url" value="" if="$(eval not gcs_bridge)"/>
|
||||
<param name="gcs_quiet_mode" value="true"/>
|
||||
<param name="conn/timeout" value="10"/>
|
||||
|
||||
@@ -348,6 +348,7 @@ def get_telemetry(req):
|
||||
'z': float('nan'),
|
||||
'lat': float('nan'),
|
||||
'lon': float('nan'),
|
||||
'alt': float('nan'),
|
||||
'vx': float('nan'),
|
||||
'vy': float('nan'),
|
||||
'vz': float('nan'),
|
||||
@@ -389,6 +390,7 @@ def get_telemetry(req):
|
||||
if global_position and stamp - global_position.header.stamp < rospy.Duration(5):
|
||||
res['lat'] = global_position.latitude
|
||||
res['lon'] = global_position.longitude
|
||||
res['alt'] = global_position.altitude
|
||||
|
||||
if state:
|
||||
res['connected'] = state.connected
|
||||
|
||||
@@ -7,8 +7,9 @@ string mode
|
||||
float32 x
|
||||
float32 y
|
||||
float32 z
|
||||
float32 lat
|
||||
float32 lon
|
||||
float64 lat
|
||||
float64 lon
|
||||
float32 alt
|
||||
float32 vx
|
||||
float32 vy
|
||||
float32 vz
|
||||
|
||||
@@ -26,11 +26,12 @@
|
||||
* [Визуализация с помощью rviz](rviz.md)
|
||||
* [Работа с SITL](sitl.md)
|
||||
* [Подключение GPS](gps.md)
|
||||
* [Автозапуск ПО](autolaunch.md)
|
||||
* [Использование 3G-модема](3g.md)
|
||||
* [Устройство сети RPi](network.md)
|
||||
* [Работа с логами PX4](flight_logs.md)
|
||||
* Учебник
|
||||
* [Уроки](lessons.md)
|
||||
* [Теория и видеоуроки](lessons.md)
|
||||
* [Учебно-методическое пособие](metod.md)
|
||||
* [Контрольные и проверочные материалы](tests.md)
|
||||
* [Другое](drugoe.md)
|
||||
|
||||
59
docs/autolaunch.md
Normal file
59
docs/autolaunch.md
Normal file
@@ -0,0 +1,59 @@
|
||||
Автозапускаемое ПО
|
||||
===
|
||||
|
||||
systemd
|
||||
---
|
||||
|
||||
Основная документация: [https://wiki.archlinux.org/index.php/Systemd_(Русский)](https://wiki.archlinux.org/index.php/Systemd_(Русский)).
|
||||
|
||||
Все автоматически стартуемое ПО Клевера запускается в виде systemd-сервиса `clever.service`.
|
||||
|
||||
Сервис может быть перезапущен командой `systemctl`:
|
||||
|
||||
```bash
|
||||
sudo systemctl restart clever
|
||||
```
|
||||
|
||||
Текстовый вывод ПО можно просмотреть с помощью команды `journalctl`:
|
||||
|
||||
```bash
|
||||
journalctl -u clever
|
||||
```
|
||||
|
||||
Для того, запустить ПО Клевера непосредственно в текущей консольной сессии, вы можете использовать `roslaunch`:
|
||||
|
||||
```bash
|
||||
sudo systemctl stop clever
|
||||
roslaunch clever clever.launch
|
||||
```
|
||||
|
||||
Вы можете выключить автозапуск ПО Клевера с помощью команды `disable`:
|
||||
|
||||
```bash
|
||||
sudo systemctl disable clever
|
||||
```
|
||||
|
||||
roslaunch
|
||||
---
|
||||
|
||||
Основная документация: http://wiki.ros.org/roslaunch.
|
||||
|
||||
Список объявленных для запуска нод / программ указывается в файле `/home/pi/catkin_ws/src/clever/clever/launch/clever.launch`.
|
||||
|
||||
Вы можете добавить собственную ноду в список автозапускаемых. Для этого разместите ваш запускаемый файл (например, `my_program.py`) в каталог `/home/pi/catkin_ws/src/clever/clever/src`. Затем добавьте запуск вашей ноды в `clever.launch`, например:
|
||||
|
||||
```xml
|
||||
<node name="my_program" pkg="clever" type="my_program.py" output="screen"/>
|
||||
```
|
||||
|
||||
Запускаемый файл должен иметь *permission* на запуск:
|
||||
|
||||
```bash
|
||||
chmod +x my_program.py
|
||||
```
|
||||
|
||||
При использовании скриптовых языков вначале файла должен стоять [shebang](https://ru.wikipedia.org/wiki/Шебанг_(Unix)), например:
|
||||
|
||||
```bash
|
||||
#!/usr/bin/env python
|
||||
```
|
||||
@@ -1,10 +1,12 @@
|
||||
Использование QGroundControl через Wi-Fi
|
||||
===
|
||||
|
||||
Возможен контроль, управление и настройка полетного контроллера квадрокоптера с помощью программы QGroundControl по Wi-Fi.
|
||||

|
||||
|
||||
Возможны контроль, управление, калибровка и настройка полетного контроллера квадрокоптера с помощью программы QGroundControl по Wi-Fi.
|
||||
Для этого необходимо подключиться к Wi-Fi сети `CLEVER-xxxx`.
|
||||
|
||||
После чего в launch-файле Клевера `/home/pi/catkin_ws/src/clever/clever/launch/clever.launch` выбрать один из преднастроенных режимов: TCP, UDP, UDP broadcast.
|
||||
После чего в launch-файле Клевера `/home/pi/catkin_ws/src/clever/clever/launch/clever.launch` выбрать один из преднастроенных режимов бриджа.
|
||||
|
||||
После изменения launch-файла необходимо перезагрузить сервис clever:
|
||||
|
||||
@@ -12,50 +14,57 @@
|
||||
sudo systemctl restart clever
|
||||
```
|
||||
|
||||
Подробнее о возможных настройках `gcs_bridge` [на сайте пакета mavros](http://wiki.ros.org/mavros#Connection_URL).
|
||||
|
||||
TCP-бридж
|
||||
---
|
||||
|
||||
Изменить параметр gcs_bridge в launch-файле:
|
||||
Изменить параметр `gcs_bridge` в launch-файле:
|
||||
```xml
|
||||
<arg name="gcs_bridge" default="tcp"/>
|
||||
```
|
||||
|
||||
Затем в программе QGroundControl нужно выбрать Application Settings -> Comm Links -> Add. Создать подключение со следующими настройками:
|
||||
Затем в программе QGroundControl нужно выбрать Application Settings > Comm Links > Add. Создать подключение со следующими настройками:
|
||||
|
||||

|
||||
|
||||
Затем необходимо выбрать в списке подключений "Clever" и нажать "Connect".
|
||||
|
||||
UDP-бридж
|
||||
UDP бридж (с автоматическим подключением)
|
||||
---
|
||||
|
||||
Изменить параметр gcs_bridge в launch-файле:
|
||||
```xml
|
||||
<arg name="gcs_bridge" default="udp-b"/>
|
||||
```
|
||||
|
||||
При открытии программы QGroundControl соединение должно установиться автоматически.
|
||||
|
||||
|
||||
UDP-бридж (без автоматического подключения)
|
||||
---
|
||||
|
||||
Изменить параметр `gcs_bridge` в launch-файле:
|
||||
|
||||
```xml
|
||||
<arg name="gcs_bridge" default="udp"/>
|
||||
```
|
||||
|
||||
Затем в программе QGroundControl нужно выбрать Application Settings -> Comm Links -> Add. Создать подключение со следующими настройками:
|
||||
Затем в программе QGroundControl нужно выбрать Application Settings > Comm Links > Add. Создать подключение со следующими настройками:
|
||||
|
||||

|
||||
|
||||
Затем необходимо выбрать в списке подключений "CLEVER" и нажать "Connect".
|
||||
|
||||
|
||||
|
||||
UDP broadcast-бридж
|
||||
---
|
||||
|
||||
Для использования UDP broadcast-бриджа необходимо установить параметр `gcs_bridge` в значение `udp-b`:
|
||||
> **Hint** Особенностью UDP broadcast-бриджа является возможность просмотра телеметрии дрона одновременно с нескольких устройств (например с телефона и компьютера). Также он хорошо подходит для организации сети из устройств при помощи роутера.
|
||||
|
||||
Изменить параметр `gcs_bridge` в launch-файле:
|
||||
|
||||
```xml
|
||||
<arg name="gcs_bridge" default="udp-b"/>
|
||||
<arg name="gcs_bridge" default="udp-pb"/>
|
||||
```
|
||||
|
||||
При использовании UDB broadcast-бриджа достаточно подключиться к Wi-Fi сети Клевера. QGroundControl должен подключиться к коптеру автоматически. Также при использовании UDP broadcast возможна работа с коптером одновременно с нескольких устройств (например, одновременно QGroundControl на ноутбуке и смартфоне).
|
||||
|
||||
> **Note** UDP broadcast-бридж является наиболее быстрым соединением, но связь в нем менее стабильная: иногда могут возникать проблемы при загрузке миссии на коптер, а также при калибровке сенсоров.
|
||||
|
||||
___
|
||||
После успешного подключения можно настраивать, калибровать и просматривать состояние квадкоптера без проводов.
|
||||
|
||||

|
||||
При открытии программы QGroundControl соединение должно установиться автоматически.
|
||||
|
||||
15
docs/gps.md
15
docs/gps.md
@@ -2,8 +2,21 @@
|
||||
===
|
||||
|
||||
При подключении GPS появляются следующие возможности:
|
||||
|
||||
* Удерживание коптером позиции при полете на улице
|
||||
* Программирование автономных миссий в программе QGroundControl
|
||||
* Полеты на глобальные точки в автономном режиме при помощи модуля [simple offboard](simple_offboard.md).
|
||||
|
||||
TODO
|
||||
Полезные ссылки:
|
||||
* https://docs.px4.io/en/assembly/quick_start_pixhawk.html
|
||||
* http://ardupilot.org/copter/docs/common-pixhawk-wiring-and-quick-start.html
|
||||
* http://ardupilot.org/copter/docs/common-installing-3dr-ublox-gps-compass-module.html
|
||||
|
||||
Подключение
|
||||
---
|
||||
|
||||
GPS-модуль подключается к разъемам "GPS" и "I2C" (компас) полетного контроллера.
|
||||
|
||||
При подключении GPS, необходимо заново откалибровать магнитометры в программе QGroundControl, подключившись по [Wi-Fi](wifi.md) или USB.
|
||||
|
||||
Далее, необходимо включить GPS в параметре `EKF2_AID_MASK` (при использовании EKF2) или `LPE_FUSION` (при использовании LPE).
|
||||
|
||||
@@ -1,26 +1,51 @@
|
||||
Оглавление
|
||||
=======
|
||||
# Теория
|
||||
|
||||
[**Урок №1** «Знакомство. Принципы проектирования и строение мультикоптеров»](lesson1.md)
|
||||
[**Урок №1** «Знакомство. Принципы проектирования и строение мультикоптеров»](https://github.com/CopterExpress/clever/blob/master/docs/lesson1.md)
|
||||
|
||||
[**Урок №2** «Основы электричества»](lesson2.md)
|
||||
[**Урок №2** «Основы электричества»](https://github.com/CopterExpress/clever/blob/master/docs/lesson2.md)
|
||||
|
||||
[**Урок №3** «Теория пайки»](lesson3.md)
|
||||
[**Урок №3** «Теория пайки»](https://github.com/CopterExpress/clever/blob/master/docs/lesson3.md)
|
||||
|
||||
[**Урок №4** «Аэродинамика полета. Пропеллер»](lesson4.md)
|
||||
[**Урок №4** «Аэродинамика полета. Пропеллер»](https://github.com/CopterExpress/clever/blob/master/docs/lesson4.md)
|
||||
|
||||
[**Урок №5** «Бесколлекторные двигатели и регуляторы их хода»](lesson5.md)
|
||||
[**Урок №5** «Бесколлекторные двигатели и регуляторы их хода»](https://github.com/CopterExpress/clever/blob/master/docs/lesson5.md)
|
||||
|
||||
[**Урок №6** «Основы электромагнетизма. Типы двигателей»](lesson6.md)
|
||||
[**Урок №6** «Основы электромагнетизма. Типы двигателей»](https://github.com/CopterExpress/clever/blob/master/docs/lesson6.md)
|
||||
|
||||
[**Урок №7** «Принцип работы, типы и устройство аккумуляторов»](lesson7.md)
|
||||
[**Урок №7** «Принцип работы, типы и устройство аккумуляторов»](https://github.com/CopterExpress/clever/blob/master/docs/lesson7.md)
|
||||
|
||||
[**Урок №8** «Управление полётом мультикоптера. Принцип функционирования полётного контроллера. ПИД регуляторы»](lesson8.md)
|
||||
[**Урок №8** «Управление полётом мультикоптера. Принцип функционирования полётного контроллера. ПИД регуляторы»](https://github.com/CopterExpress/clever/blob/master/docs/lesson8.md)
|
||||
|
||||
[**Урок №9** «Основы радиосвязи. Принцип работы радиоаппаратуры управления»](lesson9.md)
|
||||
[**Урок №9** «Основы радиосвязи. Принцип работы радиоаппаратуры управления»](https://github.com/CopterExpress/clever/blob/master/docs/lesson9.md)
|
||||
|
||||
[**Урок №10** «Аналоговая и цифровая видеотрансляция. Применяемые камеры, радиопередатчики иприёмники»](lesson10.md)
|
||||
[**Урок №10** «Аналоговая и цифровая видеотрансляция. Применяемые камеры, радиопередатчики иприёмники»](https://github.com/CopterExpress/clever/blob/master/docs/lesson10.md)
|
||||
|
||||
Видеоуроки
|
||||
----------
|
||||
## Видеоуроки
|
||||
|
||||
Немного о видах коптеров
|
||||
|
||||
<iframe width="560" height="315" src="https://www.youtube.com/embed/LFOmZZwg-PE" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
|
||||
|
||||
Часть 1
|
||||
|
||||
<iframe width="560" height="315" src="https://www.youtube.com/embed/e9Z1pjW0vQU" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
|
||||
|
||||
Часть 2
|
||||
|
||||
<iframe width="560" height="315" src="https://www.youtube.com/embed/jWMGSgiLD_E" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
|
||||
|
||||
Часть 3
|
||||
|
||||
<iframe width="560" height="315" src="https://www.youtube.com/embed/WhxxXD4b1MY" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
|
||||
|
||||
Часть 4
|
||||
|
||||
<iframe width="560" height="315" src="https://www.youtube.com/embed/jkA9F9lSWDM" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
|
||||
|
||||
Часть 5
|
||||
|
||||
<iframe width="560" height="315" src="https://www.youtube.com/embed/Cz7EbJ1-xMw" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
|
||||
|
||||
Часть 6
|
||||
|
||||
<iframe width="560" height="315" src="https://www.youtube.com/embed/v00oNVzwICg" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
|
||||
|
||||
@@ -7,93 +7,47 @@
|
||||
Учебно-методическое пособие
|
||||
---------------------------
|
||||
|
||||
[Урок 1. «Знакомство. Принципы проектирования и строение мультикоптеров»](metodmaterials.md)
|
||||
[Урок 1. «Знакомство. Принципы проектирования и строение мультикоптеров»](https://github.com/CopterExpress/clever/blob/master/docs/ https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
|
||||
|
||||
[Урок 2. «Основы электричества»](metodmaterials.md)
|
||||
[Урок 2. «Основы электричества»](https://github.com/CopterExpress/clever/blob/master/docs/ https://github.com/CopterExpress/clever/blob/master/docs/ https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
|
||||
|
||||
[Урок 3. «Теория пайки»](metodmaterials.md)
|
||||
[Урок 3. «Теория пайки»]( https://github.com/CopterExpress/clever/blob/master/docs/ https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
|
||||
|
||||
[Урок 4. «Аэродинамика полета. Пропеллер»](metodmaterials.md)
|
||||
[Урок 4. «Аэродинамика полета. Пропеллер»]( https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
|
||||
|
||||
[Урок 5. «Основы электромагнетизма. Типы двигателей»](metodmaterials.md)
|
||||
[Урок 5. «Основы электромагнетизма. Типы двигателей»]( https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
|
||||
|
||||
[Урок 6. «Бесколлекторные двигатели и регуляторы их хода»](metodmaterials.md)
|
||||
[Урок 6. «Бесколлекторные двигатели и регуляторы их хода»]( https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
|
||||
|
||||
[Урок 7. «Принцип работы, типы и устройство аккумуляторов»](metodmaterials.md)
|
||||
[Урок 7. «Принцип работы, типы и устройство аккумуляторов»]( https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
|
||||
|
||||
[Урок 8. «Управление полётом мультикоптера. Принцип функционирования полетного контроллера. ПИД регуляторы»](metodmaterials.md)
|
||||
[Урок 8. «Управление полётом мультикоптера. Принцип функционирования полетного контроллера. ПИД регуляторы»]( https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
|
||||
|
||||
[Урок 9. «Основы радиосвязи. Принцип работы радиоаппаратуры управления»](metodmaterials.md)
|
||||
[Урок 9. «Основы радиосвязи. Принцип работы радиоаппаратуры управления»]( https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
|
||||
|
||||
[Урок 10. «Аналоговая и цифровая видеотрансляция. Применяемые камеры, радиопередатчики и приёмники»](metodmaterials.md)
|
||||
[Урок 10. «Аналоговая и цифровая видеотрансляция. Применяемые камеры, радиопередатчики и приёмники»]( https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
|
||||
|
||||
[Урок 11. «Техника безопасности при сборке и настройке коптеров, при подготовке к вылету. Техника безопасности при работе с аккумуляторами»](metodmaterials.md)
|
||||
[Урок 11. «Техника безопасности при сборке и настройке коптеров, при подготовке к вылету. Техника безопасности при работе с аккумуляторами»]( https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
|
||||
|
||||
[Урок 12. «Теория ручного визуального пилотирования»](metodmaterials.md)
|
||||
[Урок 12. «Теория ручного визуального пилотирования»]( https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
|
||||
|
||||
[Урок 13. «Техника безопасности при летной эксплуатации коптера»](metodmaterials.md)
|
||||
[Урок 13. «Техника безопасности при летной эксплуатации коптера»]( https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
|
||||
|
||||
[Урок 14. «Обучение лётному мастерству»](metodmaterials.md)
|
||||
[Урок 14. «Обучение лётному мастерству»]( https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
|
||||
|
||||
[Урок 15. «Основы радиоэлектроники, схемотехники и макетирования электрических схем»](metodmaterials.md)
|
||||
[Урок 15. «Основы радиоэлектроники, схемотехники и макетирования электрических схем»]( https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
|
||||
|
||||
[Урок 16. «Основы работы с аналоговым и цифровым сигналом»](metodmaterials.md)
|
||||
[Урок 16. «Основы работы с аналоговым и цифровым сигналом»]( https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
|
||||
|
||||
[Урок 17. «Основы работы с лабораторным оборудованием»](metodmaterials.md)
|
||||
[Урок 17. «Основы работы с лабораторным оборудованием»]( https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
|
||||
|
||||
[Урок 18. «Теория FPV полетов»](metodmaterials.md)
|
||||
[Урок 18. «Теория FPV полетов»]( https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
|
||||
|
||||
[Урок 19. «История автономных полетов. Развитие автопилотов в авиации»](metodmaterials.md)
|
||||
[Урок 19. «История автономных полетов. Развитие автопилотов в авиации»]( https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
|
||||
|
||||
[Урок 20. «Основы программирование на языке Python»](metodmaterials.md)
|
||||
[Урок 20. «Основы программирование на языке Python»]( https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
|
||||
|
||||
[Урок 21. «Знакомство с компьютером Raspberry Pi»](metodmaterials.md)
|
||||
[Урок 21. «Знакомство с компьютером Raspberry Pi»]( https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
|
||||
|
||||
[Урок 22. «Управление автономным дроном: теория»](metodmaterials.md)
|
||||
[Урок 22. «Управление автономным дроном: теория»]( https://github.com/CopterExpress/clever/blob/master/docs/metodmaterials.md)
|
||||
|
||||
Контрольные вопросы и тесты к разделам
|
||||
------------------
|
||||
|
||||
[Урок 1. «Знакомство. Принципы проектирования и строение мультикоптеров»](tests.md)
|
||||
|
||||
[Урок 2. «Основы электричества»](tests.md)
|
||||
|
||||
[Урок 3. «Теория пайки»](tests.md)
|
||||
|
||||
[Урок 4. «Аэродинамика полета. Пропеллер»](tests.md)
|
||||
|
||||
[Урок 5. «Основы электромагнетизма. Типы двигателей»](tests.md)
|
||||
|
||||
[Урок 6. «Бесколлекторные двигатели и регуляторы их хода»](tests.md)
|
||||
|
||||
[Урок 7. «Принцип работы, типы и устройство аккумуляторов»](tests.md)
|
||||
|
||||
[Урок 8. «Управление полётом мультикоптера. Принцип функционирования полетного контроллера. ПИД регуляторы»](tests.md)
|
||||
|
||||
[Урок 9. «Основы радиосвязи. Принцип работы радиоаппаратуры управления»](tests.md)
|
||||
|
||||
[Урок 10. «Аналоговая и цифровая видеотрансляция. Применяемые камеры, радиопередатчики и приёмники»](tests.md)
|
||||
|
||||
[Урок 11. «Техника безопасности при сборке и настройке коптеров, при подготовке к вылету. Техника безопасности при работе с аккумуляторами»](tests.md)
|
||||
|
||||
[Урок 12. «Теория ручного визуального пилотирования»](tests.md)
|
||||
|
||||
[Урок 13. «Техника безопасности при летной эксплуатации коптера»](tests.md)
|
||||
|
||||
[Урок 14. «Обучение лётному мастерству»](tests.md)
|
||||
|
||||
[Урок 15. «Основы радиоэлектроники, схемотехники и макетирования электрических схем»](tests.md)
|
||||
|
||||
[Урок 16. «Основы работы с аналоговым и цифровым сигналом»](tests.md)
|
||||
|
||||
[Урок 17. «Основы работы с лабораторным оборудованием»](tests.md)
|
||||
|
||||
[Урок 18. «Теория FPV полетов»](tests.md)
|
||||
|
||||
[Урок 19. «История автономных полетов. Развитие автопилотов в авиации»](tests.md)
|
||||
|
||||
[Урок 20. «Основы программирование на языке Python»](tests.md)
|
||||
|
||||
[Урок 21. «Знакомство с компьютером Raspberry Pi»](tests.md)
|
||||
|
||||
[Урок 22. «Управление автономным дроном: теория»](tests.md)
|
||||
|
||||
@@ -12,8 +12,7 @@
|
||||
* об истории и тенденциях развития беспилотных летательных аппаратов; о том как можно улучшить их характеристики;
|
||||
* правила техники безопасности при эксплуатации БПЛА;
|
||||
* основные компоненты коптеров;
|
||||
* конструктивные особенности различных моделей, сооружений и
|
||||
механизмов;
|
||||
* конструктивные особенности различных моделей, сооружений и механизмов;
|
||||
* компьютерные среды для настройки полетных контроллеров;
|
||||
* основы аэродинамики полета;
|
||||
* основы электричества, радиоэлектроники;
|
||||
@@ -51,7 +50,9 @@
|
||||
|
||||
**Подведение итогов**
|
||||
|
||||
Подведение итогов по курсу проводится в 3 этапа:
|
||||
Ниже предложен один из вариантов подведения итогов курса.
|
||||
|
||||
Финальное мероприятие включает 3 раздела:
|
||||
|
||||
1. Итоговый тест (см. [проверочные задания](tests.md)).
|
||||
2. Финальная гонка.
|
||||
|
||||
@@ -68,9 +68,10 @@ release = rospy.ServiceProxy('release', Trigger)
|
||||
* `frame_id` – фрейм;
|
||||
* `connected` – есть ли подключение к <abbr title="Flight Control Unit, полетный контроллер">FCU</abbr>;
|
||||
* `armed` – состояние `armed` винтов (винты включены, если true);
|
||||
* `mode` - текущий [полетный режим](modes.md);
|
||||
* `mode` – текущий [полетный режим](modes.md);
|
||||
* `x, y, z` – локальная позиция коптера *(м)*;
|
||||
* `lat, lon` – широта, долгота *(градусы)*, необходимо наличие [gps](gps.md));
|
||||
* `lat, lon` – широта, долгота *(градусы)*, необходимо наличие [GPS](gps.md);
|
||||
* `alt` – высота в глобальной системе координат (стандарт [WGS-84](https://ru.wikipedia.org/wiki/WGS_84), не <abbr title="Above Mean Sea Level, выше среднего уровня моря">AMSL</abbr>!), необходимо наличие [GPS](gps.md);
|
||||
* `vx, vy, vz` – скорость коптера *(м/с)*;
|
||||
* `pitch` – угол по тангажу *(радианы)*;
|
||||
* `roll` – угол по крену *(радианы)*;
|
||||
|
||||
1932
docs/tests.md
1932
docs/tests.md
File diff suppressed because it is too large
Load Diff
@@ -6,7 +6,19 @@ sudo apt-get install unzip zip git python-pip jq curl
|
||||
sudo pip install YaDiskClient
|
||||
```
|
||||
2. Mount HDD
|
||||
> TODO
|
||||
```bash
|
||||
nano /etc/fstab
|
||||
```
|
||||
```
|
||||
proc /proc proc defaults 0 0
|
||||
PARTUUID=37665771-01 /boot vfat defaults 0 2
|
||||
PARTUUID=37665771-02 / ext4 defaults,noatime 0 1
|
||||
# a swapfile is not a swap partition, no line here
|
||||
# use dphys-swapfile swap[on|off] for that
|
||||
/dev/sdb1 none swap sw 0 0
|
||||
/dev/sdb2 /mnt/hdd_system ext4 defaults,acl 0 0
|
||||
/dev/sdb3 /mnt/hdd_builder ext4 defaults,acl 0 0
|
||||
```
|
||||
|
||||
3. Enable swap on HDD
|
||||
> TODO:
|
||||
|
||||
@@ -14,7 +14,7 @@ pipeline {
|
||||
string(name: 'GWBT_URL', defaultValue: 'https://github.com/CopterExpress/clever.git')
|
||||
|
||||
// Experimental function
|
||||
booleanParam(name: 'SHRINK', defaultValue: false, description: 'SHRINK IMAGE')
|
||||
booleanParam(name: 'SHRINK', defaultValue: true, description: 'SHRINK IMAGE')
|
||||
booleanParam(name: 'DISCOVER_ROS_PACKAGES', defaultValue: false, description: 'DISCOVER ROS PACKAGES')
|
||||
}
|
||||
environment {
|
||||
@@ -81,9 +81,13 @@ pipeline {
|
||||
}
|
||||
// TODO: Add finalising step, transfer mirror removal from ros.sh
|
||||
stage('Shrink image') {
|
||||
environment {
|
||||
EXECUTE_FILE = 'image_builder/scripts/change_boot_part.sh'
|
||||
}
|
||||
when { expression { return params.SHRINK } }
|
||||
steps {
|
||||
sh "$WORKSPACE/image_builder/autosizer.sh ${params.BUILD_DIR}/${params.IMAGE_NAME}"
|
||||
sh "$WORKSPACE/image_builder/image_config.sh execute ${params.BUILD_DIR}/${params.IMAGE_NAME} ${params.MOUNT_POINT} $WORKSPACE/$EXECUTE_FILE"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
11
image_builder/scripts/change_boot_part.sh
Executable file
11
image_builder/scripts/change_boot_part.sh
Executable file
@@ -0,0 +1,11 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
echo -e "\033[0;31m\033[1m$(date) | #1 Change boot partition\033[0m\033[0m"
|
||||
|
||||
sed -i 's/root=[^ ]*/root=\/dev\/mmcblk0p2/' /boot/cmdline.txt
|
||||
sed -i 's/.* \/boot vfat defaults 0 2$/\/dev\/mmcblk0p1 \/boot vfat defaults 0 2/' /etc/fstab
|
||||
sed -i 's/.* \/ ext4 defaults,noatime 0 1$/\/dev\/mmcblk0p2 \/ ext4 defaults,noatime 0 1/' /etc/fstab
|
||||
|
||||
echo -e "\033[0;31m\033[1m$(date) | End of change boot partition\033[0m\033[0m"
|
||||
@@ -38,6 +38,7 @@ echo -e "\033[0;31m\033[1m$(date) | #6 Turn on UART\033[0m\033[0m"
|
||||
# https://github.com/RPi-Distro/raspi-config/pull/75
|
||||
/usr/bin/raspi-config nonint do_serial 1
|
||||
/usr/bin/raspi-config nonint set_config_var enable_uart 1 /boot/config.txt
|
||||
/usr/bin/raspi-config nonint set_config_var dtoverlay pi3-miniuart-bt /boot/config.txt
|
||||
|
||||
# After adding to Raspbian OS
|
||||
# https://github.com/RPi-Distro/raspi-config/commit/d6d9ecc0d9cbe4aaa9744ae733b9cb239e79c116
|
||||
|
||||
@@ -15,7 +15,7 @@ echo -e "\033[0;31m\033[1m$(date) | #1 Installing dirmngr & add key to apt-key\0
|
||||
|
||||
# Install a tool that apt-key uses to add ROS repository key
|
||||
# http://wpblogger.su/tags/apt/
|
||||
apt-get install --no-install-recommends -y dirmngr
|
||||
apt-get install --no-install-recommends -y dirmngr=2.1.18-8~deb9u2
|
||||
# setup keys
|
||||
apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
|
||||
|
||||
@@ -31,11 +31,11 @@ apt-get update
|
||||
echo -e "\033[0;31m\033[1m$(date) | #3 Installing wget, unzip, python-rosdep, python-rosinstall-generator, python-wstool, python-rosinstall, build-essential, cmake\033[0m\033[0m"
|
||||
|
||||
apt-get install --no-install-recommends -y \
|
||||
python-rosdep \
|
||||
python-rosinstall-generator \
|
||||
python-wstool \
|
||||
python-rosinstall \
|
||||
build-essential
|
||||
python-rosdep=0.12.2-1 \
|
||||
python-rosinstall-generator=0.1.14-1 \
|
||||
python-wstool=0.1.17-1 \
|
||||
python-rosinstall=0.7.8-1 \
|
||||
build-essential=12.3
|
||||
|
||||
echo -e "\033[0;31m\033[1m$(date) | #4 rosdep init && rosdep update\033[0m\033[0m"
|
||||
|
||||
|
||||
@@ -10,22 +10,24 @@ echo -e "\033[0;31m\033[1m$(date) | #1 Software installing\033[0m\033[0m"
|
||||
|
||||
# TODO: Use dnsmasq instead of isc-dhcp-server
|
||||
apt-get install --no-install-recommends -y \
|
||||
unzip \
|
||||
zip \
|
||||
ipython \
|
||||
screen \
|
||||
byobu \
|
||||
nmap \
|
||||
lsof \
|
||||
git \
|
||||
dnsmasq \
|
||||
tmux \
|
||||
vim \
|
||||
ipython3 \
|
||||
cmake \
|
||||
python-pip \
|
||||
python3-pip \
|
||||
libjpeg8-dev
|
||||
unzip=6.0-21 \
|
||||
zip=3.0-11 \
|
||||
ipython=5.1.0-3 \
|
||||
ipython3=5.1.0-3 \
|
||||
screen=4.5.0-6 \
|
||||
byobu=5.112-1 \
|
||||
nmap=7.40-1 \
|
||||
lsof=4.89+dfsg-0.1 \
|
||||
git=1:2.11.0-3+deb9u3 \
|
||||
dnsmasq=2.76-5+rpt1+deb9u1 \
|
||||
tmux=2.3-4 \
|
||||
vim=2:8.0.0197-4+deb9u1 \
|
||||
cmake=3.7.2-1 \
|
||||
python-pip=9.0.1-2+rpt2 \
|
||||
python3-pip=9.0.1-2+rpt2 \
|
||||
libjpeg8-dev=8d1-2 \
|
||||
tcpdump \
|
||||
libpoco-dev=1.7.6+dfsg1-5+deb9u1
|
||||
|
||||
echo -e "\033[0;31m\033[1m$(date) | #2 Adding mjpg-streamer at /home/pi\033[0m\033[0m"
|
||||
# https://github.com/jacksonliam/mjpg-streamer
|
||||
|
||||
Reference in New Issue
Block a user