From a325156e71f37446d606d278d6ebfaceb32dbcbb Mon Sep 17 00:00:00 2001 From: Oleg Kalachev Date: Fri, 10 Aug 2018 22:10:04 +0300 Subject: [PATCH] docs: add markdownlint config --- .markdownlint.json | 5 ++++ docs/connection.md | 3 +-- docs/esc_firmware.md | 24 ++++++++++---------- docs/gcs_bridge.md | 2 ++ docs/leds.md | 49 ++++++++++++++++++++-------------------- docs/mavros.md | 1 - docs/network.md | 6 ++++- docs/ros.md | 7 ++++++ docs/web_video_server.md | 1 - 9 files changed, 56 insertions(+), 42 deletions(-) create mode 100644 .markdownlint.json diff --git a/.markdownlint.json b/.markdownlint.json new file mode 100644 index 00000000..41454280 --- /dev/null +++ b/.markdownlint.json @@ -0,0 +1,5 @@ +{ + "MD003": false, + "MD013": false, + "MD033": false +} diff --git a/docs/connection.md b/docs/connection.md index 41e22c9c..66d00ede 100644 --- a/docs/connection.md +++ b/docs/connection.md @@ -5,13 +5,12 @@ Убедиться в работоспособности подключения, выполнив на Raspberry Pi: -``` +```bash rostopic echo /mavros/state ``` Поле `connected` должно содержать значение `True`. - Подключение по USB --- diff --git a/docs/esc_firmware.md b/docs/esc_firmware.md index 3707e2a2..0edf0b3d 100644 --- a/docs/esc_firmware.md +++ b/docs/esc_firmware.md @@ -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). diff --git a/docs/gcs_bridge.md b/docs/gcs_bridge.md index c0766acf..b08e45a2 100644 --- a/docs/gcs_bridge.md +++ b/docs/gcs_bridge.md @@ -18,6 +18,7 @@ TCP-бридж --- Изменить параметр `gcs_bridge` в launch-файле: + ```xml ``` @@ -32,6 +33,7 @@ UDP бридж (с автоматическим подключением) --- Изменить параметр gcs_bridge в launch-файле: + ```xml ``` diff --git a/docs/leds.md b/docs/leds.md index 37d0a485..c1a999a8 100644 --- a/docs/leds.md +++ b/docs/leds.md @@ -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. - diff --git a/docs/mavros.md b/docs/mavros.md index d52daaae..926e4ffb 100644 --- a/docs/mavros.md +++ b/docs/mavros.md @@ -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). - diff --git a/docs/network.md b/docs/network.md index 662793f2..b5c4d316 100644 --- a/docs/network.md +++ b/docs/network.md @@ -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/) diff --git a/docs/ros.md b/docs/ros.md index 59fc4dfe..2407c5b0 100644 --- a/docs/ros.md +++ b/docs/ros.md @@ -97,3 +97,10 @@ rosservice call /get_telemetry "{frame_id: ''}" ``` Больше примеров использования сервисов для автономных полетов квадрокоптера Клевер можно посмотреть в [документации ноды simple_offboard](simple_offboard.md). + +Работа на нескольких машинах +--- + +Преимуществом использования ROS явлется возможность распределения нод на несколько машин в сети. Например, ноду, осуществляющую распознование образом на изображении можно запустить на более мощном компьютере; ноду, управляющую коптером можно запустить непосредствено на Raspberry Pi, подключенном к полетому контроллеру и т. д. + +Для запуска ноды diff --git a/docs/web_video_server.md b/docs/web_video_server.md index 5c9741eb..9cb846e0 100644 --- a/docs/web_video_server.md +++ b/docs/web_video_server.md @@ -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: иллюстрации. -