docs: add markdownlint config

This commit is contained in:
Oleg Kalachev
2018-08-10 22:10:04 +03:00
parent 05e1875eec
commit a325156e71
9 changed files with 56 additions and 42 deletions

5
.markdownlint.json Normal file
View File

@@ -0,0 +1,5 @@
{
"MD003": false,
"MD013": false,
"MD033": false
}

View File

@@ -5,13 +5,12 @@
Убедиться в работоспособности подключения, выполнив на Raspberry Pi:
```
```bash
rostopic echo /mavros/state
```
Поле `connected` должно содержать значение `True`.
Подключение по USB
---

View File

@@ -2,40 +2,40 @@
Хорошая статья, которая объясняет принцип работы ESC \(Electric speed controller\) регуляторов: [http://www.avmodels.ru/engines/electric/esc.html](http://www.avmodels.ru/engines/electric/esc.html)
#### Зачем перепрошивать?
## Зачем перепрошивать?
Иногда требуется поменять один из параметров регулятора, например направление вращения мотора, минимальная и максимальная скважности PPM сигнала на входе контроллера, уровень громкости звуковых сигналов, издаваемых мотором или время, через которое регулятор начинает напоминать, что он включён.
#### Программа для прошивки регуляторов
## Программа для прошивки регуляторов
Для прошивки самых разнообразных ESC регуляторов существует программа [BLHeliSuite](https://github.com/4712/BLHeliSuite) \(для Windows\).
Для запуска программы \(BLHeliSuite.exe\) необходимо распаковать архивы BLHeliAtmelHEX.zip и BLHeliSilabsHEX.zip в папку с программой.
#### Программатор для прошивки регуляторов.
## Программатор для прошивки регуляторов
Чтобы прошить регулятор, необходим программатор, который умеет общаться с контроллером регулятора по 1-wire протоколу. Один из способов добыть программатор - взять подвернувшуюся под руку ардуинку и прошить её специальной прошивкой. В BLHeliSuite есть инструмент для создания интерфейсов программаторов.
Создание программатора на примере Arduino Mega.
1. Запустите программу BLHeliSuite и выберите вкладку Make interfaces.
1. Запустите программу BLHeliSuite и выберите вкладку Make interfaces.
![](assets/BLHeliSuite_SiLabs_ESC_Setup_2.png)
2. Подключите Arduino к компьютеру, при необходимости посмотрите в диспетчере устройств номер COM порта, к которому подключена плата.
3. Нажмите Arduino 4way-interface в разделе Make Arduino Interface Boards и выберите файл прошивки. После выбора файла начнётся прошивка контроллера.
3. Нажмите Arduino 4way-interface в разделе Make Arduino Interface Boards и выберите файл прошивки. После выбора файла начнётся прошивка контроллера.
![](assets/BLHeliSuite_Make_Interfaces.png)
![](assets/BLHeliSuite_Interface_Options.png)
![](assets/BLHeliSuite_Arduino_Select_Firmware.png)
4. После прошивки Arduino вернитесь на вкладку Silabs ESC Setup и подключитесь к Arduino, предварительно выбрав интерфейс программатора 4way-if и COM порт Arduino.
![](assets/BLHeliSuite_4way-if_Select.png)
![](assets/BLHeliSuite_ESC_Setup_Connect.png)
#### Подключение ESC регуляторов к Arduino.
## Подключение ESC регуляторов к Arduino
Для прошивки или изменения настроек регуляторов необходимо подключить сигнальные порты (обычно белого цвета) ESC регуляторов к портам Arduino, предварительно посмотрев в мануале (см. рисунок ниже), какие порты используются для соединения с регуляторами. Так же нужно соединить GND Arduino с землёй одного из регуляторов (обычно черного цвета). Регуляторы должны быть подключены к питанию, а если к регуляторам подключены моторы, **на них не должно быть винтов**.
@@ -43,7 +43,7 @@
В случае с Arduino Mega, сигнальные порты регуляторов подключаются к портам D43-D49 и D51.
#### Изменение настроек ESC регуляторов.
## Изменение настроек ESC регуляторов
Для загрузки информации о версии прошивки и настроек регуляторов нужно нажать на кнопку Check.
@@ -64,15 +64,15 @@
Для отображения настроек со всех регуляторов одновременно можно воспользоваться вкладкой ESC Overview.
#### Прошивка ESC регуляторов.
## Прошивка ESC регуляторов
Файлы с прошивками регуляторов находятся [здесь](https://github.com/cleanflight/blheli-multishot/tree/master/BLHeli_S%20SiLabs/Hex%20Files).
Для перепрошивки регуляторов нужно нажать на кнопку Flash BLHeli и выбрать файл прошивки с типом контроллера, название которого указано в рамке названия прошивки и находится сверху во вкладке Silabs ESC Setup (в случае контроллера, который используется в конструкторе Клевер 2, это A-H-70).
Для перепрошивки регуляторов нужно нажать на кнопку Flash BLHeli и выбрать файл прошивки с типом контроллера, название которого указано в рамке названия прошивки и находится сверху во вкладке Silabs ESC Setup (в случае контроллера, который используется в конструкторе Клевер 2, это A-H-70).
Для перепрошивки отдельного регулятора нужно сделать все остальные неактивными.
#### Видеоинструкция по перепрошивке ESC регуляторов
## Видеоинструкция по перепрошивке ESC регуляторов
Для лучшего понимания того, что описано в статье, рекомендуем посмотреть наглядное руководство по подключению электроники и прошивке регуляторов на английском языке на [youtube](https://www.youtube.com/watch?v=i6lhMcQLRSU&feature=youtu.be).
Для лучшего понимания того, что описано в статье, рекомендуем посмотреть наглядное руководство по подключению электроники и прошивке регуляторов на английском языке на [youtube](https://www.youtube.com/watch?v=i6lhMcQLRSU&feature=youtu.be).

View File

@@ -18,6 +18,7 @@ TCP-бридж
---
Изменить параметр `gcs_bridge` в launch-файле:
```xml
<arg name="gcs_bridge" default="tcp"/>
```
@@ -32,6 +33,7 @@ UDP бридж (с автоматическим подключением)
---
Изменить параметр gcs_bridge в launch-файле:
```xml
<arg name="gcs_bridge" default="udp-b"/>
```

View File

@@ -1,6 +1,6 @@
## Работа со светодиодной лентой на Raspberry 3
# Работа со светодиодной лентой на Raspberry 3
#### Подключение и определение типа ленты
## Подключение и определение типа ленты
Есть два основных типа адресуемых светодиодов: WS2812 и WS2812B. Принцип управления один и тот же, однако тайминги разные. Найдите на ленте чип светодиода и определите сколько у него ножек: 6 или 4. Если ножек 6, то это WS2812, если 4 - то WS2812B или его аналог SK6812.
@@ -16,7 +16,7 @@
Типы лент для обозначения ленты в коде описаны в [файле](https://github.com/jgarff/rpi_ws281x/blob/master/ws2811.h). Основные типы лент - это WS2812\_STRIP \(для WS2812\) и SK6812\_STRIP \(для WS2812B или SK6812\).
#### Установка библиотеки для работы со светодиодной лентой
## Установка библиотеки для работы со светодиодной лентой
Определите папку, в которой будут находиться файлы библиотеки, и открыть путь к этой папке в терминале. По-умолчанию можно использовать домашнюю папку, для перехода в неё нужно выполнить команду
@@ -51,7 +51,7 @@ sudo python ./setup.py build
sudo python ./setup.py install
```
#### Пример программы для светодиодной ленты на RPI3
## Пример программы для светодиодной ленты на RPI3
Откройте в текстовом редакторе файл strandtest.py из папки python/examples \(находится в папке с библиотекой\)
@@ -96,7 +96,7 @@ sudo python strandtest.py
Права администратора необходимы для выполнения скрипта, т.к. без них нет доступа к функциям прерывания, которые использует библиотека для работы с лентой.
#### Совместимость с ROS и python
## Совместимость с ROS и python
При запуске программы с помощью sudo пользовательское окружение изменяется и появляются ошибки импорта библиотек, т.к. в окружении отсутствуют необходимые пути. Чтобы добавить в окружение пути к библиотекам python и пакетам ROS, необходимо добавить в файл /etc/sudoers следующие строки:
@@ -107,7 +107,7 @@ Defaults env_keep += "ROS_ROOT"
Defaults env_keep += "ROS_MASTER_URI"
```
#### Функции для работы со светодиодной лентой
## Функции для работы со светодиодной лентой
Для подключения библиотеки и её корректной работы требуется подключить следующие модули: neopixels - для работы ленты, time - для управления задержками, sys и signal для прерываний и формирования управляющего сигнала.
@@ -144,23 +144,23 @@ pydoc neopixel
```(bash)
Help on module neopixel:
NAME
neopixel
DESCRIPTION
# Adafruit NeoPixel library port to the rpi_ws281x library.
# Author: Tony DiCola (tony@tonydicola.com)
CLASSES
__builtin__.object
Adafruit_NeoPixel
class Adafruit_NeoPixel(__builtin__.object)
| Methods defined here:
|
|
| __del__(self)
|
|
| __init__(self, num, pin, freq_hz=800000, dma=5, invert=False)
| Class to represent a NeoPixel/WS281x LED display. Num should be the
| number of pixels in the display, and pin should be the GPIO pin connected
@@ -168,38 +168,38 @@ pydoc neopixel
| parameters are freq, the frequency of the display signal in hertz (default
| 800khz), dma, the DMA channel to use (default 5), and invert, a boolean
| specifying if the signal line should be inverted (default False).
|
|
| begin(self)
| Initialize library, must be called once before other functions are
| called.
|
|
| getPixelColor(self, n)
| Get the 24-bit RGB color value for the LED at position n.
|
|
| getPixels(self)
| Return an object which allows access to the LED display data as if
| Return an object which allows access to the LED display data as if
| it were a sequence of 24-bit RGB values.
|
|
| numPixels(self)
| Return the number of pixels in the display.
|
|
| setBrightness(self, brightness)
| Scale each LED in the buffer by the provided brightness. A brightness
| of 0 is the darkest and 255 is the brightest. Note that scaling can have
| quantization issues (i.e. blowing out to white or black) if used repeatedly!
|
|
| setPixelColor(self, n, color)
| Set LED at position n to the provided 24-bit color value (in RGB order).
|
|
| setPixelColorRGB(self, n, red, green, blue)
| Set LED at position n to the provided red, green, and blue color.
| Each color component should be a value from 0 to 255 (where 0 is the
| lowest intensity and 255 is the highest intensity).
|
|
| show(self)
| Update the display with the data from the LED buffer.
|
|
FUNCTIONS
Color(red, green, blue)
Convert the provided red, green, blue color to a 24-bit color value.
@@ -207,7 +207,7 @@ pydoc neopixel
and 255 is the highest intensity.
```
#### Почему именно так и можно ли по-другому?
## Почему именно так и можно ли по-другому?
Основные типы лент, которые используются для Clever3, это WS2812, WS2812B и SK6812 \(аналог WS2812B\). Они управляются по одному и тому же принципу: для массива светодиодов в ленте отправляется пакет данных по 24 бита на светодиод; каждый светодиод считывает первые 24 бита из пришедших к нему данных и устанавливает соответствующий цвет, остальные данные он отправляет следующему светодиоду в ленте. Нули и единицы задаются разными сочетаниями длительностей высокого и низкого уровня в импульсе.
@@ -227,4 +227,3 @@ pydoc neopixel
3. Если нам важна и работа аудио, и подключение к SPI устройств кроме лед ленты, то можно управлять лентой по каналу PCM \(GPIO 21 или 31\). При этом никаких дополнительных манипуляций с распберри не требуется.
Исходя из вышеперечисленных способов управления лентой, наилучшим вариантом, позволяющим управлять лентой, сохранить работоспособность встроенной аудиосистемы и возможность подключения всяческих устройств и датчиков по SPI, является управление по каналу PCM \(GPIO 21\) с использованием 10 канала DMA.

View File

@@ -47,4 +47,3 @@ MAVROS подписывается определенные ROS-топики в
`/mavros/setpoint_raw/global` — отправка пакета [SET\_POSITION\_TARGET\_GLOBAL\_INT](https://pixhawk.ethz.ch/mavlink/#SET_POSITION_TARGET_GLOBAL_INT). Позволяет установить целевую позицию в глобальных координатах \(ширина, долгота, высота\), а также скорости полета. **Не поддерживается в PX4** \([issue](https://github.com/PX4/Firmware/issues/7552)\).
[Упрощенное управление коптером с помощью Simple Offboard](simple_offboard.md).

View File

@@ -1,6 +1,7 @@
# Настройка Wi-Fi
Wi-Fi адаптер на Raspberry Pi имеет два основных режима работы:
1. **Режим клиента** RPi подключается к существующей Wi-Fi сети.
2. **Режим точки доступа** RPi создает Wi-Fi сеть, к которой вы можете подключиться.
@@ -116,7 +117,9 @@ ___
Ниже вы можете узнать больше о том, как устроена работа с сетью на RPi.
# Устройство сети RPi
Работа сети на образе **2017-11-29-raspbian-stretch-lite** поддерживается двумя предустановленными службами:
* **networking** — служба включает все сетевые интерфейсы в момент запуска [5].
* **dhcpcd** — служба обеспечивает настройку адресации и маршрутризации на интерфейсах, полученных динамически или указаных в файле настроек статически.
@@ -188,9 +191,11 @@ network={
```bash
sudo systemctl restart dhcpcd
```
## DHCP сервер
### dnsmasq-base
`dnsmasq-base` консольная утилита, не являющаяся службой, для использования dnsmasq как службы надо установить пакет `dnsmasq`.
```bash
@@ -264,7 +269,6 @@ fi
EOF
```
## Ссылки
1. [habr.com: Linux WiFi из командной строки с wpa_supplicant](https://habr.com/post/315960/)

View File

@@ -97,3 +97,10 @@ rosservice call /get_telemetry "{frame_id: ''}"
```
Больше примеров использования сервисов для автономных полетов квадрокоптера Клевер можно посмотреть в [документации ноды simple_offboard](simple_offboard.md).
Работа на нескольких машинах
---
Преимуществом использования ROS явлется возможность распределения нод на несколько машин в сети. Например, ноду, осуществляющую распознование образом на изображении можно запустить на более мощном компьютере; ноду, управляющую коптером можно запустить непосредствено на Raspberry Pi, подключенном к полетому контроллеру и т. д.
Для запуска ноды

View File

@@ -29,4 +29,3 @@ http://192.168.11.1:8080/stream_viewer?topic=/main_camera/image_raw&quality=1
Также доступны параметры `width`, `height` и другие. Подробнее о `web_video_server`: http://wiki.ros.org/web_video_server.
TODO: иллюстрации.