Merge branch 'master' into simple-offboard-refactored

This commit is contained in:
Oleg Kalachev
2018-03-19 20:45:20 +03:00
235 changed files with 769 additions and 563 deletions

View File

@@ -1,73 +1,68 @@
Клевер # CLEVER
======
<img src="assets/clever.jpg" align="right" width="300px" alt="Клевер"> <img src="docs/assets/clever3.png" align="right" width="300px" alt="CLEVER drone">
«Клевер» — это учебный конструктор программируемого квадрокоптера, состоящего из популярных открытых компонентов, а также набор необходимой документации и библиотек для работы с ним. CLEVER is an educational programmable drone kit consisting of an unassembled quadcopter, open source software and documentation. The kit includes Pixhawk/Pixracer autopilot running PX4 firmware, Raspberry Pi 3 as companion computer, a camera for computer vision navigation as well as additional sensors and peripheral devices.
Набор включает в себя полетный контроллер PixHawk/PixRacer с полетным стеком PX4, Raspberry Pi 3 в качестве управлящего бортового компьютера, модуль камеры для реализации полетов с использованием компьютерного зрения, а также набор различных датчиков и другой периферии. Copter Express has implemented a large number of different autonomous drone projects using exactly the same platform: [automated pizza delivery](https://www.youtube.com/watch?v=hmkAoZOtF58) in Samara and Kazan, coffee delivery in Skolkovo Innovation Center, [autonomous quadcopter with charging station](https://www.youtube.com/watch?v=RjX6nUqw1mI) for site monitoring and security, winning drones on [Robokross-2016](https://www.youtube.com/watch?v=dGbDaz_VmYU) and [Robokross-2017](https://youtu.be/AQnd2CRczbQ) competitions and many others.
На базе точно такой же платформы были созданы многие «большие» проекты компании Copter Express, например, дроны для [пиар-акций по автономной доставке пиццы](https://www.youtube.com/watch?v=hmkAoZOtF58) (Самара, Казань); дрон-доставщик кофе в Сколково, мониторинговый дрон с зарядной станцией, дроны-победители на полевых испытаниях «[Робокросс-2016](https://www.youtube.com/watch?v=dGbDaz_VmYU)», «[Робокросс-2017](https://youtu.be/AQnd2CRczbQ)» и многие другие. **The main documentation in Russian is available on our Gitbook:**
**https://copterexpress.gitbooks.io/clever/content/**
Для того, чтобы научиться собирать, настраивать, пилотировать и программировать автономный дрон «Клевер», воспользуйтесь этим учебником. Use it to learn how to assemble, configure, pilot and program autonomous CLEVER drone.
Основная документация ## Preconfigured RPi 3 image
---------------------
https://copterexpress.gitbooks.io/clever/content/ Preconfigured image for Raspberry Pi 3 with installed and configured software, ready to fly, is available [here](https://copterexpress.gitbooks.io/clever/content/docs/microsd_images.html).
**Образ ОС** для RPi 3 с предустановленным и преднастроенным ПО можно скачать [здесь](https://copterexpress.gitbooks.io/clever/content/docs/microsd_images.html). Image includes:
Образ включает в себя:
* Raspbian Stretch * Raspbian Stretch
* ROS Kinetic * ROS Kinetic
* Настроенную работу с сетью * Configured networking
* OpenCV * OpenCV
* mavros * mavros
* Набор ПО для работы с Клевером * CLEVER software bundle for autonomous drone control
[Описание API](https://copterexpress.gitbooks.io/clever/content/docs/simple_offboard.html) для автономных полетов. API description in Russian for autonomous flights is available [here](https://copterexpress.gitbooks.io/clever/content/docs/simple_offboard.html).
Ручная установка ## Manual installation
---------
Установить ROS Kinetic согласно [инструкциям](http://wiki.ros.org/kinetic/Installation). Install ROS Kinetic according to the [documentation](http://wiki.ros.org/kinetic/Installation).
Склонировать репозиторий в папку `/home/pi/catkin_ws/src/clever`: Clone repo to directory `/home/pi/catkin_ws/src/clever`:
```bash ```bash
cd ~/catkin_ws/src cd ~/catkin_ws/src
git clone https://github.com/CopterExpress/clever.git clever git clone https://github.com/CopterExpress/clever.git clever
``` ```
Пересобрать ROS-пакеты: Build ROS packages:
```bash ```bash
cd ~/catkin_ws cd ~/catkin_ws
catkin_make -j1 catkin_make -j1
``` ```
Включить сервис roscore (если он не включен): Enable systemd service `roscore` (if not enabled):
```bash ```bash
sudo systemctl enable /home/pi/catkin_ws/src/clever/deploy/roscore.service sudo systemctl enable /home/pi/catkin_ws/src/clever/deploy/roscore.service
sudo systemctl start roscore sudo systemctl start roscore
``` ```
Включить сервис clever: Enable systemd service `clever`:
```bash ```bash
sudo systemctl enable /home/pi/catkin_ws/src/clever/deploy/clever.service sudo systemctl enable /home/pi/catkin_ws/src/clever/deploy/clever.service
sudo systemctl start clever sudo systemctl start clever
``` ```
Зависимости ### Dependencies
-----------
[ROS Kinetic](http://wiki.ros.org/kinetic). [ROS Kinetic](http://wiki.ros.org/kinetic).
Необходимые для работы ROS-пакеты: Necessary ROS packages:
* `opencv3` * `opencv3`
* `mavros` * `mavros`
@@ -76,8 +71,6 @@ sudo systemctl start clever
* `cv_camera` * `cv_camera`
* `nodelet` * `nodelet`
* `dynamic_reconfigure` * `dynamic_reconfigure`
* `bondcpp`, ветка `master` * `bondcpp`, branch `master`
* `roslint` * `roslint`
* `rosserial` * `rosserial`
TODO: внести в package.xml

View File

@@ -1,45 +0,0 @@
# Summary
* [Введение](README.md)
* [Сборка](docs/assemble.md)
* [Первоначальная настройка](docs/setup.md)
* [Полетные режимы](docs/modes.md)
* [Raspberry Pi](docs/raspberry.md)
* [Образ операционной системы на RPi](docs/microsd_images.md)
* [Подключение Raspberry Pi к PixHawk](docs/connection.md)
* [Подключение по Wi-Fi](docs/wifi.md)
* [Работа с QGroundControl через Wi-Fi](docs/gcs_bridge.md)
* [SSH-доступ](docs/ssh.md)
* [Неисправности радиоаппаратуры](docs/radioerrors.md)
* [Безопасность](docs/safety.md)
* [Техника безопасности по пайке](docs/tb.md)
* [Просмотр видеострима с камер](docs/web_video_server.md)
* [Работа с ROS](docs/ros.md)
* [MAVROS](docs/mavros.md)
* [Автономный полет в OFFBOARD](docs/simple_offboard.md)
* [Навигация по ArUco-маркерам](docs/aruco.md)
* [Взаимодействие с Arduino](docs/arduino.md)
* [Системы координат](docs/frames.md)
* [Работа с камерой \(компьютерное зрение\)](docs/camera.md)
* [Ориентация камеры](docs/camera_frame.md)
* [Визуализация с помощью rviz](docs/rviz.md)
* [Работа с SITL](docs/sitl.md)
* [Подключение GPS](docs/gps.md)
* [Использование 3G-модема](docs/3g.md)
* [Примеры программ](docs/snippets.md)
* Учебник
* [Урок 1](docs/les1.md)
* [Урок 2](docs/les2.md)
* [Урок 7](docs/les7.md)
* [Урок 8](docs/les8.md)
* [Урок 9](docs/les9.md)
* [Урок 11](docs/les11.md)
* [Урок 13](docs/les13.md)
* [Урок 15](docs/les15.md)
* [Урок 16](docs/les16.md)
* [Другое](drugoe.md)
* [CopterHack-2017](docs/copterhack2017.md)
* [Прошивка ESC контроллеров с помощью Arduino](docs/esc_firmware.md)
* [Работа со светодиодной лентой](docs/rabota-so-svetodiodnoi-lentoi.md)
* [Полезные ссылки](docs/links.md)

View File

@@ -3,6 +3,7 @@
"description": "Конструктор квадрокоптера «Клевер»", "description": "Конструктор квадрокоптера «Клевер»",
"author": "Copter Express", "author": "Copter Express",
"language": "ru", "language": "ru",
"root": "docs/",
"plugins": ["youtube", "richquotes", "disqus", "versions"], "plugins": ["youtube", "richquotes", "disqus", "versions"],
"pluginsConfig": { "pluginsConfig": {
"disqus": { "disqus": {

View File

@@ -17,6 +17,7 @@
<!-- gcs bridge --> <!-- gcs bridge -->
<param name="gcs_url" value="tcp-l://0.0.0.0:5760" if="$(eval gcs_bridge == 'tcp')"/> <param name="gcs_url" value="tcp-l://0.0.0.0:5760" if="$(eval gcs_bridge == 'tcp')"/>
<param name="gcs_url" value="udp://@192.168.11.14:14550" if="$(eval gcs_bridge == 'udp')"/> <!-- TODO: fix --> <param name="gcs_url" value="udp://@192.168.11.14:14550" if="$(eval gcs_bridge == 'udp')"/> <!-- TODO: fix -->
<param name="gcs_url" value="udp-b://192.168.11.1:14550@" if="$(eval gcs_bridge == 'udp-b')"/>
<param name="gcs_url" value="" if="$(eval not gcs_bridge)"/> <param name="gcs_url" value="" if="$(eval not gcs_bridge)"/>
<!-- default px4 params --> <!-- default px4 params -->

30
docs/README.md Normal file
View File

@@ -0,0 +1,30 @@
Клевер
======
<img src="assets/clever3.png" align="right" width="300px" alt="Клевер">
«Клевер» — это учебный конструктор программируемого квадрокоптера, состоящего из популярных открытых компонентов, а также набор необходимой документации и библиотек для работы с ним.
Набор включает в себя полетный контроллер PixHawk/PixRacer с полетным стеком PX4, Raspberry Pi 3 в качестве управлящего бортового компьютера, модуль камеры для реализации полетов с использованием компьютерного зрения, а также набор различных датчиков и другой периферии.
На базе точно такой же платформы были созданы многие «большие» проекты компании Copter Express, например, дроны для [пиар-акций по автономной доставке пиццы](https://www.youtube.com/watch?v=hmkAoZOtF58) (Самара, Казань); дрон-доставщик кофе в Сколково, мониторинговый дрон с зарядной станцией, дроны-победители на полевых испытаниях «[Робокросс-2016](https://www.youtube.com/watch?v=dGbDaz_VmYU)», «[Робокросс-2017](https://youtu.be/AQnd2CRczbQ)» и многие другие.
Для того, чтобы научиться собирать, настраивать, пилотировать и программировать автономный дрон «Клевер», воспользуйтесь этим учебником.
Образ для Raspberry Pi
----------------------
**Образ ОС** для RPi 3 с предустановленным и преднастроенным ПО можно скачать [здесь](microsd_images.html).
Образ включает в себя:
* Raspbian Stretch
* ROS Kinetic
* Настроенную работу с сетью
* OpenCV
* mavros
* Набор ПО для работы с Клевером
[Описание API](simple_offboard.html) для автономных полетов.
Исходный код сборщика образа и всего ПО можно найти на [GitHub](https://github.com/CopterExpress/clever).

45
docs/SUMMARY.md Normal file
View File

@@ -0,0 +1,45 @@
# Summary
* [Введение](README.md)
* [Сборка](assemble.md)
* [Первоначальная настройка](setup.md)
* [Полетные режимы](modes.md)
* [Raspberry Pi](raspberry.md)
* [Образ операционной системы на RPi](microsd_images.md)
* [Подключение Raspberry Pi к PixHawk](connection.md)
* [Подключение по Wi-Fi](wifi.md)
* [Работа с QGroundControl через Wi-Fi](gcs_bridge.md)
* [SSH-доступ](ssh.md)
* [Неисправности радиоаппаратуры](radioerrors.md)
* [Безопасность](safety.md)
* [Техника безопасности по пайке](tb.md)
* [Просмотр видеострима с камер](web_video_server.md)
* [Работа с ROS](ros.md)
* [MAVROS](mavros.md)
* [Автономный полет в OFFBOARD](simple_offboard.md)
* [Примеры программ](snippets.md)
* [Навигация по ArUco-маркерам](aruco.md)
* [Взаимодействие с Arduino](arduino.md)
* [Системы координат](frames.md)
* [Работа с камерой \(компьютерное зрение\)](camera.md)
* [Ориентация камеры](camera_frame.md)
* [Визуализация с помощью rviz](rviz.md)
* [Работа с SITL](sitl.md)
* [Подключение GPS](gps.md)
* [Использование 3G-модема](3g.md)
* Учебник
* [Урок 1](les1.md)
* [Урок 2](les2.md)
* [Урок 7](les7.md)
* [Урок 8](les8.md)
* [Урок 9](les9.md)
* [Урок 11](les11.md)
* [Урок 13](les13.md)
* [Урок 15](les15.md)
* [Урок 16](les16.md)
* [Другое](drugoe.md)
* [CopterHack-2017](copterhack2017.md)
* [Прошивка ESC контроллеров с помощью Arduino](esc_firmware.md)
* [Работа со светодиодной лентой](rabota-so-svetodiodnoi-lentoi.md)
* [Полезные ссылки](links.md)

View File

@@ -60,7 +60,7 @@ for(int i=0; i<8; i++) {
Работа с Клевером Работа с Клевером
--- ---
Набор сервисов и топиков аналогичен обычному набору в [simple_offboard](/docs/simple_offboard.md) и [mavros](/docs/mavros.md). Набор сервисов и топиков аналогичен обычному набору в [simple_offboard](simple_offboard.md) и [mavros](mavros.md).
Пример программы, контролирующей коптер по позиции, с использованием сервисов `navigate` и `set_mode`: Пример программы, контролирующей коптер по позиции, с использованием сервисов `navigate` и `set_mode`:
@@ -168,7 +168,7 @@ void loop()
Получение телеметрии Получение телеметрии
--- ---
С Arduino можно использовать [сервис](/docs/simple_offboard.md) `get_telemetry`. Для этого надо объявить его по аналогии с сервисами `navigate` и `set_mode`: С Arduino можно использовать [сервис](simple_offboard.md) `get_telemetry`. Для этого надо объявить его по аналогии с сервисами `navigate` и `set_mode`:
```cpp ```cpp
#include <ros.h> #include <ros.h>

View File

@@ -5,7 +5,7 @@
Пример ArUco-маркеров: Пример ArUco-маркеров:
![](/assets/markers.jpg) ![](assets/markers.jpg)
> **Hint** При печати визуальных маркеров необходимо использовать максимально матовую бумагу. Глянцевая бумага будет бликовать на свету, сильно ухудшая качество распознавания. > **Hint** При печати визуальных маркеров необходимо использовать максимально матовую бумагу. Глянцевая бумага будет бликовать на свету, сильно ухудшая качество распознавания.
@@ -13,11 +13,11 @@
Модуль `aruco_pose` позволяет восстанавливать позицию коптера относительно карты ArUco-маркеров и сообщать ее полетному контролеру, используя механизм [Vision Position Estimation](https://dev.px4.io/en/ros/external_position_estimation.html). Модуль `aruco_pose` позволяет восстанавливать позицию коптера относительно карты ArUco-маркеров и сообщать ее полетному контролеру, используя механизм [Vision Position Estimation](https://dev.px4.io/en/ros/external_position_estimation.html).
При наличии источника положения коптера по маркерам появляется возможность производить точную автономную indoor-навигацию по позициям при помощи модуля [simple\_offboard](/docs/simple_offboard.md). При наличии источника положения коптера по маркерам появляется возможность производить точную автономную indoor-навигацию по позициям при помощи модуля [simple\_offboard](simple_offboard.md).
### Включение ### Включение
Необходимо убедиться, что в launch-файле Клевера \(`~/catkin_ws/src/clever/clever/launch/clever.launch`\) включен запуск aruco\_pose и [камеры для компьютерного зрения](/docs/camera.md): Необходимо убедиться, что в launch-файле Клевера \(`~/catkin_ws/src/clever/clever/launch/clever.launch`\) включен запуск aruco\_pose и [камеры для компьютерного зрения](camera.md):
```xml ```xml
<arg name="main_camera" default="true"/> <arg name="main_camera" default="true"/>
@@ -80,9 +80,9 @@ sudo systemctl restart clever
Нумерация маркеров ведется с левого верхнего угла поля. Нумерация маркеров ведется с левого верхнего угла поля.
Для контроля карты, по которой в данный момент коптер осуществляет навигацию, можно просмотреть содержимое топика `aruco_pose/map_image`. Через браузер его можно просмотреть при помощи [web\_video\_server](/docs/web_video_server.md) по ссылке [http://192.168.11.1:8080/snapshot?topic=/aruco\_pose/map\_image](http://192.168.11.1:8080/snapshot?topic=/aruco_pose/map_image): Для контроля карты, по которой в данный момент коптер осуществляет навигацию, можно просмотреть содержимое топика `aruco_pose/map_image`. Через браузер его можно просмотреть при помощи [web\_video\_server](web_video_server.md) по ссылке [http://192.168.11.1:8080/snapshot?topic=/aruco\_pose/map\_image](http://192.168.11.1:8080/snapshot?topic=/aruco_pose/map_image):
![](/assets/Снимок экрана 2017-11-27 в 23.20.49.png) ![](assets/Снимок экрана 2017-11-27 в 23.20.49.png)
При полетах необходимо убедиться, что наклеенные на пол метки соответствуют карте. При полетах необходимо убедиться, что наклеенные на пол метки соответствуют карте.
@@ -102,11 +102,11 @@ _Примечание_: указанное выше определение пр
Таким образом, нулевой является левая нижня точка маркерного поля. Угол по рысканью считается равным 0, когда коптер смотрит направо \(по оси x\). Таким образом, нулевой является левая нижня точка маркерного поля. Угол по рысканью считается равным 0, когда коптер смотрит направо \(по оси x\).
![](/assets/aruco-frame.png) ![](assets/aruco-frame.png)
### Настройка полетного контролера ### Настройка полетного контролера
Для правильной работы Vision Position Estimation необходимо \(через [QGroundControl](/docs/gcs_bridge.md)\) убедиться, что: Для правильной работы Vision Position Estimation необходимо \(через [QGroundControl](gcs_bridge.md)\) убедиться, что:
* Для PixHawk: Установлена прошивка с LPE \(local position estimator\). Для PixRacer: параметр `SYS_MC_EST_GROUP` установлен в `local_position_estimator, attitude_estimator_q`. * Для PixHawk: Установлена прошивка с LPE \(local position estimator\). Для PixRacer: параметр `SYS_MC_EST_GROUP` установлен в `local_position_estimator, attitude_estimator_q`.
* В параметре `LPE_FUSION` включены **только** флажки `vision position`, `vision yaw`, `land detector`. Итоговое значение _28_. * В параметре `LPE_FUSION` включены **только** флажки `vision position`, `vision yaw`, `land detector`. Итоговое значение _28_.
@@ -120,15 +120,15 @@ _Примечание_: указанное выше определение пр
* `LNDMC_THR_RANGE` = 0.5 * `LNDMC_THR_RANGE` = 0.5
* `LNDMC_Z_VEL_MAX` = 1 m/s * `LNDMC_Z_VEL_MAX` = 1 m/s
Для простоты настройки можно воспользоваться готовым файлом настроек для [Clever 2](https://github.com/CopterExpress/clever/blob/master/assets/Clever2LPE_160118.params) или для [Clever 3](https://github.com/CopterExpress/clever/blob/master/assets/Clever3_LPE_020218.params) и вгрузить его в контроллер с помощью меню Tools - Load from file из раздела Parameters в QGroundControl. Для простоты настройки можно воспользоваться готовым файлом настроек для [Clever 2](https://github.com/CopterExpress/clever/blob/masterassets/Clever2LPE_160118.params) или для [Clever 3](https://github.com/CopterExpress/clever/blob/masterassets/Clever3_LPE_020218.params) и вгрузить его в контроллер с помощью меню Tools - Load from file из раздела Parameters в QGroundControl.
![](/assets/Screenshot from 2018-02-27 22-30-50.png) ![](assets/Screenshot from 2018-02-27 22-30-50.png)
### Полет ### Полет
При правильной настройке коптер начнет удерживать позицию по VPE \(в [режимах](/docs/modes.md) `POSCTL` или `OFFBOARD`\) автоматически. При правильной настройке коптер начнет удерживать позицию по VPE \(в [режимах](modes.md) `POSCTL` или `OFFBOARD`\) автоматически.
Для [автономных полетов](/docs/simple_offboard.md) можно будет использовать функции `navigate`, `set_position`, `set_velocity`. Для полета в определенные координаты маркерного поля необходимо использовать фрейм `aruco_map`: Для [автономных полетов](simple_offboard.md) можно будет использовать функции `navigate`, `set_position`, `set_velocity`. Для полета в определенные координаты маркерного поля необходимо использовать фрейм `aruco_map`:
```python ```python
# Вначале необходимо взлететь, чтобы коптер увидел карту меток # Вначале необходимо взлететь, чтобы коптер увидел карту меток
@@ -141,15 +141,15 @@ time.sleep(5)
navigate(2, 2, 2, speed=1, frame_id='aruco_map', update_frame=True) # полет в координату 2:2, высота 3 метра navigate(2, 2, 2, speed=1, frame_id='aruco_map', update_frame=True) # полет в координату 2:2, высота 3 метра
``` ```
См. [другие функции](/docs/simple_offboard.md) simple offboard. См. [другие функции](simple_offboard.md) simple offboard.
### Расположение маркеров на потолке ### Расположение маркеров на потолке
> **Info** Образ версии &gt;0.2. > **Info** Образ версии &gt;0.2.
![](/assets/IMG_4175.JPG) ![](assets/IMG_4175.JPG)
Для навигации по маркерам, расположенным на потолке, необходимо поставить основную камеру так, чтобы она смотрела вверх и [установить соответствующий фрейм камеры](/docs/camera_frame.md). Для навигации по маркерам, расположенным на потолке, необходимо поставить основную камеру так, чтобы она смотрела вверх и [установить соответствующий фрейм камеры](camera_frame.md).
Чтобы задавать карту маркеров в "перевернутой" системе координат, необходимо изменить параметр `aruco_orientation` в файле `~/catkin_ws/src/clever/clever/aruco.launch`: Чтобы задавать карту маркеров в "перевернутой" системе координат, необходимо изменить параметр `aruco_orientation` в файле `~/catkin_ws/src/clever/clever/aruco.launch`:

View File

@@ -1,12 +1,12 @@
Инструкция по сборке конструктора Клевер 2 Инструкция по сборке конструктора Клевер 2
========================================== ==========================================
![Clever](../assets/Clevermain.png) ![Clever](assets/Clevermain.png)
Состав конструктора Состав конструктора
------------------- -------------------
![Explosion](../assets/explosion.png) ![Explosion](assets/explosion.png)
* Рама центральная x2. * Рама центральная x2.
* Рама дополнительная х4. * Рама дополнительная х4.
@@ -76,7 +76,7 @@
16. Ручка A (VrA). 16. Ручка A (VrA).
17. Ручка B (VrB). 17. Ручка B (VrB).
![radio Transmitter](../assets/radioTransmitter.png) ![radio Transmitter](assets/radioTransmitter.png)
Дополнительное оборудование Дополнительное оборудование
@@ -92,10 +92,10 @@
7. Канцелярский нож 7. Канцелярский нож
8. Мультиметр 8. Мультиметр
![Дополнительное оборудование](../assets/addEqipment.jpg) ![Дополнительное оборудование](assets/addEqipment.jpg)
![Техника безопасности при пайке](../docs/tb.md) ![Техника безопасности при пайке](tb.md)
Порядок сборки Порядок сборки
-------------- --------------
@@ -104,7 +104,7 @@
* Распаковать моторы. Используя плоскогубцы, укоротить провода на моторах, обрезать половину длины (оставив 25 мм). * Распаковать моторы. Используя плоскогубцы, укоротить провода на моторах, обрезать половину длины (оставив 25 мм).
![Мотор brrc2205](../assets/brrc2205.png) ![Мотор brrc2205](assets/brrc2205.png)
Зачистить Зачистить
* снять 2мм термоизоляции с конца провода не повредив медные жилы. * снять 2мм термоизоляции с конца провода не повредив медные жилы.
@@ -115,18 +115,18 @@
* Нанести флюс на оголенную часть провода. * Нанести флюс на оголенную часть провода.
* Покрыть припоем, используя пинцет. * Покрыть припоем, используя пинцет.
![Лужение](../assets/zap.jpg) ![Лужение](assets/zap.jpg)
#### Закрепить мотор на луче #### Закрепить мотор на луче
* Установить мотор на сторону луча с гравировкой. * Установить мотор на сторону луча с гравировкой.
* Прикрепить моторы к лучам винтами М3х8, используя отвертку. * Прикрепить моторы к лучам винтами М3х8, используя отвертку.
![Закрепить мотор на луче](../assets/brrc2205on.png) ![Закрепить мотор на луче](assets/brrc2205on.png)
* Лучи с моторами необходимо расположить согласно схеме. Стрелками указано направление вращения моторов. * Лучи с моторами необходимо расположить согласно схеме. Стрелками указано направление вращения моторов.
![Вращение моторов](../assets/brrc2205ondeck.png) ![Вращение моторов](assets/brrc2205ondeck.png)
//указать стрелками направление вращения на моторах //указать стрелками направление вращения на моторах
#### Залудить три контактные площадки регулятора #### Залудить три контактные площадки регулятора
@@ -135,18 +135,18 @@
Чтобы припой аккуратно заполнил всю площадку, необходимо прогреть площадку регулятора. Для этого нужно удерживать жало паяльника на контактной плащадке в течение 2 сек (или больше, если потребуется) Чтобы припой аккуратно заполнил всю площадку, необходимо прогреть площадку регулятора. Для этого нужно удерживать жало паяльника на контактной плащадке в течение 2 сек (или больше, если потребуется)
![Лужение контактных площадок регуляторов](../assets/escDYSzap.png) ![Лужение контактных площадок регуляторов](assets/escDYSzap.png)
* Повторить данную операцию для оставшихся трех регуляторов * Повторить данную операцию для оставшихся трех регуляторов
#### Припаять провода моторов к регуляторам #### Припаять провода моторов к регуляторам
Припаять ранее приготовленные провода моторов к контактным площадкам регуляторов. Припаять ранее приготовленные провода моторов к контактным площадкам регуляторов.
![Припаять провода моторов к регуляторам](../assets/solderingBrrc2205ondeckTOescDYSzap.png) ![Припаять провода моторов к регуляторам](assets/solderingBrrc2205ondeckTOescDYSzap.png)
* Повторить данную операцию для оставшихся трех регуляторов * Повторить данную операцию для оставшихся трех регуляторов
### Монтаж разъемов питания ### Монтаж разъемов питания
![Статья про силовые и управляющие цепи](/power.md) ![Статья про силовые и управляющие цепи](power.md)
#### Подготовка проводов для силовых разъемов XT60 #### Подготовка проводов для силовых разъемов XT60
@@ -155,13 +155,13 @@
* Длина 7 см (Для силового разъема XT60 pin) - 1 красный, 1 черный * Длина 7 см (Для силового разъема XT60 pin) - 1 красный, 1 черный
* Длина 9 см (Для силового разъема XT60 socket) - 1 красный, 1 черный * Длина 9 см (Для силового разъема XT60 socket) - 1 красный, 1 черный
![Подготовка проводов для силового разъема](../assets/cutwire14AWG.jpg) ![Подготовка проводов для силового разъема](assets/cutwire14AWG.jpg)
#### Подготовка силовых разъемов питания XT60 pin и XT60 socket #### Подготовка силовых разъемов питания XT60 pin и XT60 socket
![Статья про силовые разъемы и их обозначения](../notes/powerConnection.md) ![Статья про силовые разъемы и их обозначения](../notes/powerConnection.md)
![Силовой разъем XT60](../assets/xt60pinsocket.jpg) ![Силовой разъем XT60](assets/xt60pinsocket.jpg)
1. Под разъем XT60 pin залудить два силовых провода красный и чёрный 14AWG длиной 7 см. 1. Под разъем XT60 pin залудить два силовых провода красный и чёрный 14AWG длиной 7 см.
2. Залудить контактные площадки разъема XT60 pin. 2. Залудить контактные площадки разъема XT60 pin.
@@ -171,7 +171,7 @@
6. Надеть термоусадку ф5 на провода так, чтобы она закрывала контактные площадки проводов с XT60 . 6. Надеть термоусадку ф5 на провода так, чтобы она закрывала контактные площадки проводов с XT60 .
7. Усадить термоусадку феном. 7. Усадить термоусадку феном.
![Монтаж разъемов XT60](../assets/mountxt60pinsocket.png) ![Монтаж разъемов XT60](assets/mountxt60pinsocket.png)
8. Повторить процедуру для разъема XT60 socket. 8. Повторить процедуру для разъема XT60 socket.
@@ -183,7 +183,7 @@
3. Убрать 3-й (оранжевый) провод из разъема, за ненадобностью. 3. Убрать 3-й (оранжевый) провод из разъема, за ненадобностью.
4. Длина оставшихся черного и красного проводов 10-12 см. 4. Длина оставшихся черного и красного проводов 10-12 см.
![Монтаж разъема 5В](../assets/mount5vconnector.png) *было бы круто, если делать такие картинки и в формате гифки ![Монтаж разъема 5В](assets/mount5vconnector.png) *было бы круто, если делать такие картинки и в формате гифки
### Монтаж платы распределения питания ### Монтаж платы распределения питания
@@ -191,9 +191,9 @@
#### Предпаячная проверка #### Предпаячная проверка
![Статья про прозвонку](/notes/testConnection.md) ![Статья про прозвонку](testConnection.md)
![Предпаячная проверка](../assets/startPDBtest.jpg) ![Предпаячная проверка](assets/startPDBtest.jpg)
Прозвонить следующие цепи на НЕЗАМКНУТОСТЬ (отсутствие звукового сигнала мультиметра): Прозвонить следующие цепи на НЕЗАМКНУТОСТЬ (отсутствие звукового сигнала мультиметра):
* “BAT+” и “BAT-” * “BAT+” и “BAT-”
@@ -205,17 +205,17 @@
* “BAT+”, с каждым контактом, обозначенным “+” * “BAT+”, с каждым контактом, обозначенным “+”
#### Залудить контактные площадки платы питания #### Залудить контактные площадки платы питания
1. ![Залудить*](../notes/zap.md) контактные площадки платы питания. 1. ![Залудить*](zap.md) контактные площадки платы питания.
2. С помощью мультиметра проверить отсутствие контактного замыкания на плате (прозвонить) 2. С помощью мультиметра проверить отсутствие контактного замыкания на плате (прозвонить)
![Постпаячная проверка](../assets/zapPDBtest.jpg) ![Постпаячная проверка](assets/zapPDBtest.jpg)
Чтобы припой аккуратно заполнил всю площадку, необходимо её прогреть. Для этого нужно удерживать жало паяльника на контактной плащадке в течение 2 сек (или больше, если потребуется) Чтобы припой аккуратно заполнил всю площадку, необходимо её прогреть. Для этого нужно удерживать жало паяльника на контактной плащадке в течение 2 сек (или больше, если потребуется)
#### Пайка силового разъема питания XT60 #### Пайка силового разъема питания XT60
Припаять разъем для АКБ, соблюдая полярность на контактных площадках. Припаять разъем для АКБ, соблюдая полярность на контактных площадках.
![Пайка XT60 на PDB](../assets/solderingxt60socketTOpdb.png) ![Пайка XT60 на PDB](assets/solderingxt60socketTOpdb.png)
ВАЖНО о полярности ВАЖНО о полярности
* красный провод - это “+” * красный провод - это “+”
@@ -225,12 +225,12 @@
Припаять разъем 5В, соблюдая полярность на контактных площадках. Припаять разъем 5В, соблюдая полярность на контактных площадках.
(на изображении: красный провод - это питание “+”) (на изображении: красный провод - это питание “+”)
![Пайка 5В на PDB](../assets/soldering5VTOpdb.png) ![Пайка 5В на PDB](assets/soldering5VTOpdb.png)
### Монтаж отсека АКБ ### Монтаж отсека АКБ
#### Подготовка перемычек (3 шт.) #### Подготовка перемычек (3 шт.)
![Перемычка](../assets/jumper.png) ![Перемычка](assets/jumper.png)
* Отрезать силовой провод длиной 2 см. * Отрезать силовой провод длиной 2 см.
* Зачистить с обеих сторон. * Зачистить с обеих сторон.
@@ -240,7 +240,7 @@
* Прозвонить мультиметром. В случае необходимости зачистить наждачной бумагой. * Прозвонить мультиметром. В случае необходимости зачистить наждачной бумагой.
#### Подготовка отсека АКБ #### Подготовка отсека АКБ
![Подготовка отсека АКБ](../assets/casebattery.png) ![Подготовка отсека АКБ](assets/casebattery.png)
* Приклеить наклейки с разметкой внутрь отсека АКБ, в соответствии с полярностью. * Приклеить наклейки с разметкой внутрь отсека АКБ, в соответствии с полярностью.
* Приклеить ленту из скотча на дно отсека. * Приклеить ленту из скотча на дно отсека.
@@ -248,34 +248,34 @@
### Монтаж платы распределения питания ### Монтаж платы распределения питания
* Установить плату питания на раму винтами М3х8 и пластиковыми гайками. * Установить плату питания на раму винтами М3х8 и пластиковыми гайками.
![Установка платы PDB](../assets/mountPDB.png) ![Установка платы PDB](assets/mountPDB.png)
* ВАЖНО * ВАЖНО
Стрелочка на плате направлена в сторону носового выреза Стрелочка на плате направлена в сторону носового выреза
![Установка платы PDB](../assets/topviewmountPDB.png) ![Установка платы PDB](assets/topviewmountPDB.png)
#### Монтаж элементов #### Монтаж элементов
1. Установить гайки в пластиковые держатели 1. Установить гайки в пластиковые держатели
![Монтаж пластиковых держателей](../assets/holderLegs.png) ![Монтаж пластиковых держателей](assets/holderLegs.png)
2. Установить лучи на раму винтами М3х16 2. Установить лучи на раму винтами М3х16
*Лучи устанавливаются поверх рамы *Лучи устанавливаются поверх рамы
*Пластиковые держатели устанавливаются снизу рамы *Пластиковые держатели устанавливаются снизу рамы
![Монтаж лучей](../assets/mountBeams.png) ![Монтаж лучей](assets/mountBeams.png)
3. Расположение моторов 3. Расположение моторов
Проверить расположение моторов (моторы с черной гайкой в левом верхнем углу и в правом нижнем). Проверить расположение моторов (моторы с черной гайкой в левом верхнем углу и в правом нижнем).
![Расположение моторов](../assets/motorsTopview.png) ![Расположение моторов](assets/motorsTopview.png)
4. Продеть силовые провода регуляторов в отверстия. 4. Продеть силовые провода регуляторов в отверстия.
![силовые провода моторов](../assets/escWires.png) ![силовые провода моторов](assets/escWires.png)
#### Пайка силовой цепи платы питания #### Пайка силовой цепи платы питания
Припаять силовые провода регуляторов к плате питания, соблюдая полярность. Припаять силовые провода регуляторов к плате питания, соблюдая полярность.
![Пайка силовых проводов на PDB](../assets/solderingPowerwires.png) ![Пайка силовых проводов на PDB](assets/solderingPowerwires.png)
ВАЖНО о полярности ВАЖНО о полярности
*красный провод - это “+” *красный провод - это “+”
@@ -284,14 +284,14 @@
### Сопряжение приемника и пульта ### Сопряжение приемника и пульта
1. Подключить радиоприемник к разъему 5В. В любой разъем, GND внизу. На схеме питание обозначено как 5V 1. Подключить радиоприемник к разъему 5В. В любой разъем, GND внизу. На схеме питание обозначено как 5V
![Подключение питания приемника](../assets/receiver5V.png) ![Подключение питания приемника](assets/receiver5V.png)
3. Подключить АКБ. 3. Подключить АКБ.
Светодиод на радиоприемнике должен мигать. Светодиод на радиоприемнике должен мигать.
![Подключение АКБ](../assets/connectBattery.png) ![Подключение АКБ](assets/connectBattery.png)
#### БЕЗОПАСНОСТЬ при работе с АКБ #### БЕЗОПАСНОСТЬ при работе с АКБ
![БЕЗОПАСНОСТЬ при работе с АКБ](../assets/safetyPower.png) ![БЕЗОПАСНОСТЬ при работе с АКБ](assets/safetyPower.png)
#### Включение радиопульта #### Включение радиопульта
1. На пульте зажать кнопку BIND KEY. 1. На пульте зажать кнопку BIND KEY.
@@ -300,45 +300,45 @@
4. Отсоединить джампер. 4. Отсоединить джампер.
5. Светодиод горит непрерывно. 5. Светодиод горит непрерывно.
![Подключение питания приемника](../assets/connectingRadio.png) ![Подключение питания приемника](assets/connectingRadio.png)
![Мануал по неисправностям](../docs/radioerrors1.md) ![Мануал по неисправностям](radioerrors1.md)
### Проверка направления вращения моторов ### Проверка направления вращения моторов
1. Наклеить наклейки на АКБ 18650. 1. Наклеить наклейки на АКБ 18650.
2. Установить 18650 в отсек АКБ, соблюдая полярность. 2. Установить 18650 в отсек АКБ, соблюдая полярность.
![Готовность отсека АКБ](../assets/readyBatteryholder.png) ![Готовность отсека АКБ](assets/readyBatteryholder.png)
3. Проверить, что разъем питания 5В подключен к приемнику по схеме. 3. Проверить, что разъем питания 5В подключен к приемнику по схеме.
4. Подключить регулятор мотора к 3 каналу приемника CH3 по схеме. 4. Подключить регулятор мотора к 3 каналу приемника CH3 по схеме.
![Подключение регулятора к приемнику](../assets/connectionESCtoReceiver.png) ![Подключение регулятора к приемнику](assets/connectionESCtoReceiver.png)
5. Подключить внешнее питание (АКБ). 5. Подключить внешнее питание (АКБ).
6. Включить пульт. 6. Включить пульт.
7. Подать левым стиком газ (throttle) на 10%. 7. Подать левым стиком газ (throttle) на 10%.
8. Проверить направления вращения мотора по схеме. 8. Проверить направления вращения мотора по схеме.
![Проверка вращения моторов](../assets/testMotors.png) ![Проверка вращения моторов](assets/testMotors.png)
9. Если необходимо изменить направление вращения, то меняем любые два фазных провода мотора (нужно перепаять). 9. Если необходимо изменить направление вращения, то меняем любые два фазных провода мотора (нужно перепаять).
![Перепайка фазных проводов](../assets/resolderingESC.png) ![Перепайка фазных проводов](assets/resolderingESC.png)
### Монтаж радиоприемника ### Монтаж радиоприемника
1. Установить пластиковые стойки 30 мм на раму винтами М3х8. 1. Установить пластиковые стойки 30 мм на раму винтами М3х8.
2. Разъем питания 5В продеть в прорезь. 2. Разъем питания 5В продеть в прорезь.
![Установка стоек и прорезь](../assets/mountReceiverStud.png) ![Установка стоек и прорезь](assets/mountReceiverStud.png)
3. Приемник прикрепить к ![нижней дополнительной раме*](../notes/deck.md), используя двухсторонний скотч и ориентируясь на гравировку. Антенны направлены вперед. 3. Приемник прикрепить к ![нижней дополнительной раме*](../notes/deck.md), используя двухсторонний скотч и ориентируясь на гравировку. Антенны направлены вперед.
![Установка радиоприемника на деку](../assets/mountReceiverDeck.png) ![Установка радиоприемника на деку](assets/mountReceiverDeck.png)
4. Установить 3х проводной шлейф в канал PPM / CH1. 4. Установить 3х проводной шлейф в канал PPM / CH1.
![Подключение радиоприемника](../assets/receiverPPM.png) ![Подключение радиоприемника](assets/receiverPPM.png)
5. Продеть в прорезь к разъему 5 В. 5. Продеть в прорезь к разъему 5 В.
6. Прикрутить нижнюю дополнительную раму к стойкам на центральной раме винтами М3х8. 6. Прикрутить нижнюю дополнительную раму к стойкам на центральной раме винтами М3х8.
![Установка нижней деки](../assets/mountBottomDeck.png) ![Установка нижней деки](assets/mountBottomDeck.png)
##### ВАЖНО ##### ВАЖНО
Направление стрелок на плате питания и на раме дополнительной совпадают Направление стрелок на плате питания и на раме дополнительной совпадают
@@ -346,11 +346,11 @@
### Монтаж полетного контроллера ### Монтаж полетного контроллера
#### Переворачиваем сборку #### Переворачиваем сборку
![Переворачиваем сборку](../assets/topPreview.png) ![Переворачиваем сборку](assets/topPreview.png)
#### Установка полетного контроллера Pixhawk #### Установка полетного контроллера Pixhawk
1. Клеим 2х сторонний скотч по углам полетного контроллера 1. Клеим 2х сторонний скотч по углам полетного контроллера
![Полетный контроллер](../assets/pixhawk.png) ![Полетный контроллер](assets/pixhawk.png)
##### ВАЖНО ##### ВАЖНО
При работе моторов возникают вибрации, отрицательно влияющие на показания датчиков полетного контроллера Pixhawk. Чтобы избежать этого эффекта, количество слоев двустороннего скотча При работе моторов возникают вибрации, отрицательно влияющие на показания датчиков полетного контроллера Pixhawk. Чтобы избежать этого эффекта, количество слоев двустороннего скотча
@@ -358,7 +358,7 @@
2. Установить полетный контроллер в центр рамы 2. Установить полетный контроллер в центр рамы
![Полетный контроллер](../assets/topviewpixhawk.png) ![Полетный контроллер](assets/topviewpixhawk.png)
##### ВАЖНО ##### ВАЖНО
Стрелки на раме и pixhawk должны быть сонаправлены Стрелки на раме и pixhawk должны быть сонаправлены
@@ -368,29 +368,29 @@
2. Моторы к 1,2,3,4 портам MAIN OUT, согласно схеме 2. Моторы к 1,2,3,4 портам MAIN OUT, согласно схеме
3. Питание от PDB (5В/VCC) в любой порт, кроме SB (SBUS) 3. Питание от PDB (5В/VCC) в любой порт, кроме SB (SBUS)
![Подключение полетного контроллера](../assets/connectionPixhawk.png) ![Подключение полетного контроллера](assets/connectionPixhawk.png)
### Сборка регуляторов ### Сборка регуляторов
1. Клеим 2х сторонний скотч на основание защитного бокса регуляторов 1. Клеим 2х сторонний скотч на основание защитного бокса регуляторов
![Скотч на бокс регулей](../assets/escCase.png) ![Скотч на бокс регулей](assets/escCase.png)
2. Укладываем регуляторы в защитные боксы. Крепим полученную сборку к лучам рамы. 2. Укладываем регуляторы в защитные боксы. Крепим полученную сборку к лучам рамы.
![Вид сверху с боксами для регулей](../assets/topESCcaseview.png) ![Вид сверху с боксами для регулей](assets/topESCcaseview.png)
### Установка защиты ### Установка защиты
1. Закрепить нижнюю защиту винтами М3х16 на лучах рамы 1. Закрепить нижнюю защиту винтами М3х16 на лучах рамы
![Установка лучевой защиты](../assets/lowsafeDeck.png) ![Установка лучевой защиты](assets/lowsafeDeck.png)
2. Закрепить ножки к пластиковым держателям винтами М3х16 2. Закрепить ножки к пластиковым держателям винтами М3х16
![Установка ножек](../assets/safeLegs.png) ![Установка ножек](assets/safeLegs.png)
3. Закрепить стойки 30 мм в отверстия нижней защиты винтами М3х12 3. Закрепить стойки 30 мм в отверстия нижней защиты винтами М3х12
![Установка нижней радиальной защиты](../assets/safelowRadial.png) ![Установка нижней радиальной защиты](assets/safelowRadial.png)
4. Закрепить верхнюю защиту винтами М3х12 4. Закрепить верхнюю защиту винтами М3х12
![Установка верхней радиальной защиты](../assets/safehighRadial.png) ![Установка верхней радиальной защиты](assets/safehighRadial.png)
### Монтаж отсека АКБ ### Монтаж отсека АКБ
@@ -402,11 +402,11 @@
* Батарейный отсек (1 шт) * Батарейный отсек (1 шт)
1. Прикрепить батарейный отсек на верхнюю дополнительную раму винтами М3х12 и гайками. 1. Прикрепить батарейный отсек на верхнюю дополнительную раму винтами М3х12 и гайками.
![Монтаж отсека АКБ](../assets/mountHolder.png) ![Монтаж отсека АКБ](assets/mountHolder.png)
2. Прикрепить верхнюю дополнительную раму на стойки винтами М3х8. 2. Прикрепить верхнюю дополнительную раму на стойки винтами М3х8.
![Монтаж отсека АКБ](../assets/isoViewmountHolder.png) ![Монтаж отсека АКБ](assets/isoViewmountHolder.png)
3. Установить АКБ в отсек. 3. Установить АКБ в отсек.
@@ -415,12 +415,12 @@
1. Крепим антенны на 2х сторонний скотч или изоленту, а усики продеваем в передние отверстия верхней дополнительной рамы. 1. Крепим антенны на 2х сторонний скотч или изоленту, а усики продеваем в передние отверстия верхней дополнительной рамы.
![Монтаж отсека АКБ](../assets/mountAntenna.png) ![Монтаж отсека АКБ](assets/mountAntenna.png)
Коптер готов к настройке! Коптер готов к настройке!
## БЕЗОПАСНОСТЬ ПРИ СБОРКЕ И НАСТРОЙКЕ ## Безопасность при сборке и настройке
1. Снять пропеллеры.“Все наземные операции производить со снятыми пропеллерами. Устанавливать пропеллеры на моторы только перед полётом.” 1. Снять пропеллеры.“Все наземные операции производить со снятыми пропеллерами. Устанавливать пропеллеры на моторы только перед полётом.”
@@ -430,7 +430,7 @@
3. Позвать на помощь 3. Позвать на помощь
“Если при выполнении работ возникли какие-либо проблемы, необходимо обратиться к преподавателю или учителю, а не пытаться решить проблему самостоятельно.” “Если при выполнении работ возникли какие-либо проблемы, необходимо обратиться к преподавателю или учителю, а не пытаться решить проблему самостоятельно.”
![Безопасность при сборке](../assets/safetybyassem.png) ![Безопасность при сборке](assets/safetybyassem.png)
## Безопасность при работе с Li-ion аккумуляторами 18650 ## Безопасность при работе с Li-ion аккумуляторами 18650
@@ -441,6 +441,4 @@
## ![БЕЗОПАСНОСТЬ ПРИ ЛЁТНОЙ ЭКСПЛУАТАЦИИ КОПТЕРОВ](../docs/safetyDoc.md#ПОЛЁТЫ) ## ![БЕЗОПАСНОСТЬ ПРИ ЛЁТНОЙ ЭКСПЛУАТАЦИИ КОПТЕРОВ](safetyDoc.md#ПОЛЁТЫ)

View File

Before

Width:  |  Height:  |  Size: 124 KiB

After

Width:  |  Height:  |  Size: 124 KiB

View File

Before

Width:  |  Height:  |  Size: 143 KiB

After

Width:  |  Height:  |  Size: 143 KiB

View File

Before

Width:  |  Height:  |  Size: 127 KiB

After

Width:  |  Height:  |  Size: 127 KiB

View File

Before

Width:  |  Height:  |  Size: 141 KiB

After

Width:  |  Height:  |  Size: 141 KiB

View File

Before

Width:  |  Height:  |  Size: 111 KiB

After

Width:  |  Height:  |  Size: 111 KiB

View File

Before

Width:  |  Height:  |  Size: 107 KiB

After

Width:  |  Height:  |  Size: 107 KiB

View File

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

Before

Width:  |  Height:  |  Size: 140 KiB

After

Width:  |  Height:  |  Size: 140 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

Before

Width:  |  Height:  |  Size: 226 KiB

After

Width:  |  Height:  |  Size: 226 KiB

View File

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 44 KiB

View File

Before

Width:  |  Height:  |  Size: 88 KiB

After

Width:  |  Height:  |  Size: 88 KiB

View File

Before

Width:  |  Height:  |  Size: 122 KiB

After

Width:  |  Height:  |  Size: 122 KiB

View File

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

Before

Width:  |  Height:  |  Size: 61 KiB

After

Width:  |  Height:  |  Size: 61 KiB

View File

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 36 KiB

View File

Before

Width:  |  Height:  |  Size: 126 KiB

After

Width:  |  Height:  |  Size: 126 KiB

View File

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 42 KiB

View File

Before

Width:  |  Height:  |  Size: 80 KiB

After

Width:  |  Height:  |  Size: 80 KiB

View File

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 38 KiB

View File

Before

Width:  |  Height:  |  Size: 157 KiB

After

Width:  |  Height:  |  Size: 157 KiB

View File

Before

Width:  |  Height:  |  Size: 321 KiB

After

Width:  |  Height:  |  Size: 321 KiB

View File

Before

Width:  |  Height:  |  Size: 140 KiB

After

Width:  |  Height:  |  Size: 140 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 86 KiB

After

Width:  |  Height:  |  Size: 86 KiB

View File

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 76 KiB

View File

Before

Width:  |  Height:  |  Size: 121 KiB

After

Width:  |  Height:  |  Size: 121 KiB

View File

Before

Width:  |  Height:  |  Size: 685 KiB

After

Width:  |  Height:  |  Size: 685 KiB

View File

Before

Width:  |  Height:  |  Size: 129 KiB

After

Width:  |  Height:  |  Size: 129 KiB

View File

Before

Width:  |  Height:  |  Size: 7.0 KiB

After

Width:  |  Height:  |  Size: 7.0 KiB

View File

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

View File

Before

Width:  |  Height:  |  Size: 7.0 KiB

After

Width:  |  Height:  |  Size: 7.0 KiB

View File

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 6.3 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 54 KiB

View File

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

Before

Width:  |  Height:  |  Size: 116 KiB

After

Width:  |  Height:  |  Size: 116 KiB

View File

Before

Width:  |  Height:  |  Size: 264 KiB

After

Width:  |  Height:  |  Size: 264 KiB

View File

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 74 KiB

View File

Before

Width:  |  Height:  |  Size: 275 KiB

After

Width:  |  Height:  |  Size: 275 KiB

View File

Before

Width:  |  Height:  |  Size: 350 KiB

After

Width:  |  Height:  |  Size: 350 KiB

View File

Before

Width:  |  Height:  |  Size: 170 KiB

After

Width:  |  Height:  |  Size: 170 KiB

View File

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 76 KiB

View File

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 42 KiB

View File

Before

Width:  |  Height:  |  Size: 382 KiB

After

Width:  |  Height:  |  Size: 382 KiB

View File

Before

Width:  |  Height:  |  Size: 594 KiB

After

Width:  |  Height:  |  Size: 594 KiB

View File

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

Before

Width:  |  Height:  |  Size: 127 KiB

After

Width:  |  Height:  |  Size: 127 KiB

View File

Before

Width:  |  Height:  |  Size: 238 KiB

After

Width:  |  Height:  |  Size: 238 KiB

View File

Before

Width:  |  Height:  |  Size: 242 KiB

After

Width:  |  Height:  |  Size: 242 KiB

View File

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 75 KiB

View File

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 64 KiB

View File

Before

Width:  |  Height:  |  Size: 142 KiB

After

Width:  |  Height:  |  Size: 142 KiB

View File

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 51 KiB

View File

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 38 KiB

View File

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 48 KiB

View File

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

View File

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 47 KiB

View File

Before

Width:  |  Height:  |  Size: 67 KiB

After

Width:  |  Height:  |  Size: 67 KiB

View File

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 35 KiB

View File

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 48 KiB

View File

Before

Width:  |  Height:  |  Size: 6.4 MiB

After

Width:  |  Height:  |  Size: 6.4 MiB

View File

Before

Width:  |  Height:  |  Size: 4.8 MiB

After

Width:  |  Height:  |  Size: 4.8 MiB

View File

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 43 KiB

View File

Before

Width:  |  Height:  |  Size: 127 KiB

After

Width:  |  Height:  |  Size: 127 KiB

View File

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 41 KiB

View File

Before

Width:  |  Height:  |  Size: 174 KiB

After

Width:  |  Height:  |  Size: 174 KiB

View File

Before

Width:  |  Height:  |  Size: 692 KiB

After

Width:  |  Height:  |  Size: 692 KiB

View File

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 62 KiB

View File

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

Before

Width:  |  Height:  |  Size: 124 KiB

After

Width:  |  Height:  |  Size: 124 KiB

View File

Before

Width:  |  Height:  |  Size: 1.7 MiB

After

Width:  |  Height:  |  Size: 1.7 MiB

Some files were not shown because too many files have changed in this diff Show More