From 839a8b4102d175666355b312e2773f1ea123516a Mon Sep 17 00:00:00 2001 From: Oleg Kalachev Date: Wed, 28 Mar 2018 03:54:36 +0300 Subject: [PATCH 1/4] Fix link in readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index bd026317..ee13fd68 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ Image includes: * mavros * CLEVER software bundle for autonomous drone control -API description in Russian for autonomous flights is available [here](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/simple_offboard.html). ## Manual installation From d56d0dfaaf1bf5a84bd27882d4bc80f145e513c7 Mon Sep 17 00:00:00 2001 From: Arthur Golubtsov Date: Wed, 4 Apr 2018 21:58:32 +0300 Subject: [PATCH 2/4] Corrected picture names and minor changed the article --- ...ect.png => BLHeliSuite_4way-if_Select.png} | Bin ...LHeliSuite_Arduino_Pinout_For_4way-if.png} | Bin ...> BLHeliSuite_Arduino_Select_Firmware.png} | Bin ...ck.png => BLHeliSuite_ESC_Setup_Check.png} | Bin ....png => BLHeliSuite_ESC_Setup_Connect.png} | Bin ... => BLHeliSuite_ESC_Setup_Write_Setup.png} | Bin ....png => BLHeliSuite_Interface_Options.png} | Bin ..._2.png => BLHeliSuite_Make_Interfaces.png} | Bin ...png => BLHeliSuite_SiLabs_ESC_Setup_1.png} | Bin ...png => BLHeliSuite_SiLabs_ESC_Setup_2.png} | Bin docs/esc_firmware.md | 24 +++++++++++------- 11 files changed, 15 insertions(+), 9 deletions(-) rename docs/assets/{BLHeliSuite 4way-if select.png => BLHeliSuite_4way-if_Select.png} (100%) rename docs/assets/{BLHeliSuite Arduino pinout for 4way-if.png => BLHeliSuite_Arduino_Pinout_For_4way-if.png} (100%) rename docs/assets/{BLHeliSuite arduino select firmware.png => BLHeliSuite_Arduino_Select_Firmware.png} (100%) rename docs/assets/{BLHeliSuite ESC Setup Check.png => BLHeliSuite_ESC_Setup_Check.png} (100%) rename docs/assets/{BLHeliSuite ESC setup Connect.png => BLHeliSuite_ESC_Setup_Connect.png} (100%) rename docs/assets/{BLHeliSuite ESC Setup Write Setup.png => BLHeliSuite_ESC_Setup_Write_Setup.png} (100%) rename docs/assets/{BLHeliSuite interface options.png => BLHeliSuite_Interface_Options.png} (100%) rename docs/assets/{BLHeliSuiteMake interfaces_171206_2.png => BLHeliSuite_Make_Interfaces.png} (100%) rename docs/assets/{BLHeliSuiteSiLabs ESC Setup_171206_1.png => BLHeliSuite_SiLabs_ESC_Setup_1.png} (100%) rename docs/assets/{BLHeliSuiteSiLabs ESC Setup_171207_1.png => BLHeliSuite_SiLabs_ESC_Setup_2.png} (100%) diff --git a/docs/assets/BLHeliSuite 4way-if select.png b/docs/assets/BLHeliSuite_4way-if_Select.png similarity index 100% rename from docs/assets/BLHeliSuite 4way-if select.png rename to docs/assets/BLHeliSuite_4way-if_Select.png diff --git a/docs/assets/BLHeliSuite Arduino pinout for 4way-if.png b/docs/assets/BLHeliSuite_Arduino_Pinout_For_4way-if.png similarity index 100% rename from docs/assets/BLHeliSuite Arduino pinout for 4way-if.png rename to docs/assets/BLHeliSuite_Arduino_Pinout_For_4way-if.png diff --git a/docs/assets/BLHeliSuite arduino select firmware.png b/docs/assets/BLHeliSuite_Arduino_Select_Firmware.png similarity index 100% rename from docs/assets/BLHeliSuite arduino select firmware.png rename to docs/assets/BLHeliSuite_Arduino_Select_Firmware.png diff --git a/docs/assets/BLHeliSuite ESC Setup Check.png b/docs/assets/BLHeliSuite_ESC_Setup_Check.png similarity index 100% rename from docs/assets/BLHeliSuite ESC Setup Check.png rename to docs/assets/BLHeliSuite_ESC_Setup_Check.png diff --git a/docs/assets/BLHeliSuite ESC setup Connect.png b/docs/assets/BLHeliSuite_ESC_Setup_Connect.png similarity index 100% rename from docs/assets/BLHeliSuite ESC setup Connect.png rename to docs/assets/BLHeliSuite_ESC_Setup_Connect.png diff --git a/docs/assets/BLHeliSuite ESC Setup Write Setup.png b/docs/assets/BLHeliSuite_ESC_Setup_Write_Setup.png similarity index 100% rename from docs/assets/BLHeliSuite ESC Setup Write Setup.png rename to docs/assets/BLHeliSuite_ESC_Setup_Write_Setup.png diff --git a/docs/assets/BLHeliSuite interface options.png b/docs/assets/BLHeliSuite_Interface_Options.png similarity index 100% rename from docs/assets/BLHeliSuite interface options.png rename to docs/assets/BLHeliSuite_Interface_Options.png diff --git a/docs/assets/BLHeliSuiteMake interfaces_171206_2.png b/docs/assets/BLHeliSuite_Make_Interfaces.png similarity index 100% rename from docs/assets/BLHeliSuiteMake interfaces_171206_2.png rename to docs/assets/BLHeliSuite_Make_Interfaces.png diff --git a/docs/assets/BLHeliSuiteSiLabs ESC Setup_171206_1.png b/docs/assets/BLHeliSuite_SiLabs_ESC_Setup_1.png similarity index 100% rename from docs/assets/BLHeliSuiteSiLabs ESC Setup_171206_1.png rename to docs/assets/BLHeliSuite_SiLabs_ESC_Setup_1.png diff --git a/docs/assets/BLHeliSuiteSiLabs ESC Setup_171207_1.png b/docs/assets/BLHeliSuite_SiLabs_ESC_Setup_2.png similarity index 100% rename from docs/assets/BLHeliSuiteSiLabs ESC Setup_171207_1.png rename to docs/assets/BLHeliSuite_SiLabs_ESC_Setup_2.png diff --git a/docs/esc_firmware.md b/docs/esc_firmware.md index d3964747..11634c66 100644 --- a/docs/esc_firmware.md +++ b/docs/esc_firmware.md @@ -10,7 +10,7 @@ Для прошивки самых разнообразных ESC регуляторов существует программа [BLHeliSuite](https://github.com/4712/BLHeliSuite) \(для Windows\). -Для запуска программы \(BLHeliSuite.exe\) необходимо распаковать архивы BLHeliAtmelHEX.zip и BLHeliSilabsHEX.zip в корневой папке. +Для запуска программы \(BLHeliSuite.exe\) необходимо распаковать архивы BLHeliAtmelHEX.zip и BLHeliSilabsHEX.zip в папку с программой. #### Программатор для прошивки регуляторов. @@ -19,19 +19,22 @@ Создание программатора на примере Arduino Mega. 1. Запустить программу BLHeliSuite и выбрать вкладку Make interfaces. - ![](assets/BLHeliSuiteSiLabs ESC Setup_171207_1.png) + ![](assets/BLHeliSuite_SiLabs_ESC_Setup_2.png) 2. Нажать Arduino 4way-interface в разделе Make Arduino Interface Boards и выбрать файл прошивки - ![](assets/BLHeliSuiteMake interfaces_171206_2.png)![](assets/BLHeliSuite interface options.png)![](assets/BLHeliSuite arduino select firmware.png) + ![](assets/BLHeliSuite_Make_Interfaces.png) + ![](assets/BLHeliSuite_Interface_Options.png) + ![](assets/BLHeliSuite_Arduino_Select_Firmware.png) 3. После прошивки Arduino вернуться на вкладку Silabs ESC Setup и подключиться к Arduino, предварительно выбрав интерфейс программатора 4way-if и COM порт Arduino. - ![](assets/BLHeliSuite 4way-if select.png)![](assets/BLHeliSuite ESC setup Connect.png) + ![](assets/BLHeliSuite_4way-if_Select.png) + ![](assets/BLHeliSuite_ESC_Setup_Connect.png) #### Подключение ESC регуляторов к Arduino. Для прошивки или изменения настроек регуляторов необходимо подключить сигнальные порты ESC регуляторов к портам Arduino, предварительно посмотрев в мануале, какие порты используются для прошивки. Так же нужно не забыть соединить GND Arduino с землёй одного из регуляторов. Регуляторы должны быть подключены к питанию, в случае если к регуляторам подключены моторы, **на них не должно быть винтов**. -![](assets/BLHeliSuite Arduino pinout for 4way-if.png) +![](assets/BLHeliSuite_Arduino_Pinout_For_4way-if.png) В случае с Arduino Mega, регуляторы подключаются к портам D43-D49 и D51. @@ -39,7 +42,8 @@ Для загрузки информации о версии прошивки и настроек регуляторов нужно нажать на кнопку Check. -![](assets/BLHeliSuite ESC Setup Check.png)![](assets/BLHeliSuiteSiLabs ESC Setup_171206_1.png) +![](assets/BLHeliSuite_ESC_Setup_Check.png) +![](assets/BLHeliSuite_SiLabs_ESC_Setup_1.png) Основные параметры, которые нас интересуют, это: @@ -51,13 +55,15 @@ Самый левый мотор в списке моторов \(Multiple ESC\) считается главным \(мастер\). Нажимая на номера моторов, можно включать/выключать возможность записи в них настроек. После изменения необходимых параметров можно записать в нужные моторы настройки, нажав на кнопку Write Setup. -![](assets/BLHeliSuite ESC Setup Write Setup.png) +![](assets/BLHeliSuite_ESC_Setup_Write_Setup.png) Для отображения настроек со всех регуляторов одновременно можно воспользоваться вкладкой ESC Overview. #### Прошивка ESC регуляторов. -Файлы с прошивками регуляторов находятся [здесь](https://github.com/cleanflight/blheli-multishot). +Файлы с прошивками регуляторов находятся [здесь](https://github.com/cleanflight/blheli-multishot/tree/master/BLHeli_S%20SiLabs/Hex%20Files). -Для перепрошивки регулятора отдельно, нужно сделать все остальные неактивными. Для перепрошивки нужно нажать на кнопку Flash BLHeli. +Для перепрошивки регуляторов нужно нажать на кнопку Flash BLHeli и выбрать файл прошивки с типом контроллера, название которого указано в рамке названия прошивки и находится сверху во вкладке Silabs ESC Setup (в случае контроллера, который используется в конструкторе Клевер 2, это A-H-70). + +Для перепрошивки отдельного регулятора нужно сделать все остальные неактивными. From 515777bd9637b82e0e98007cde6d74a5b740788c Mon Sep 17 00:00:00 2001 From: Arthur Golubtsov Date: Thu, 5 Apr 2018 03:31:30 +0300 Subject: [PATCH 3/4] Added pexample how to run program with remote control --- docs/snippets.md | 138 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 138 insertions(+) diff --git a/docs/snippets.md b/docs/snippets.md index d5c25fb2..b6702402 100644 --- a/docs/snippets.md +++ b/docs/snippets.md @@ -57,6 +57,144 @@ while True: --- +Запуск полётной программы с пульта: + +```python + +#!/usr/bin/python +import rospy +import thread +import sys +import math +from mavros_msgs.msg import RCIn +from clever import srv +from time import sleep +from mavros_msgs.srv import SetMode +from mavros_msgs.srv import CommandBool + +states = ('start','stop','unknown') +state = states[2] + +rospy.init_node('Clever3_RC_Script') + +navigate = rospy.ServiceProxy('/navigate', srv.Navigate) +set_mode = rospy.ServiceProxy('/mavros/set_mode', SetMode) +get_telemetry = rospy.ServiceProxy('/get_telemetry', srv.GetTelemetry) +arming = rospy.ServiceProxy('/mavros/cmd/arming', CommandBool) + +def get_distance(x1, y1, z1, x2, y2, z2): + return math.sqrt((x1-x2)**2 + (y1-y2)**2 +(z1-z2)**2) + +def takeoff (zp, sp = 1, tolerance = 0.2): + start = get_telemetry() + print navigate(z=zp, speed=sp, frame_id='fcu_horiz', auto_arm=True) + while True: + telem = get_telemetry() + delta = abs(abs(telem.z - start.z)-zp) + if delta < tolerance: + break + rospy.sleep(0.2) + +def land(sp = 1, land_height = -1, tolerance = 0.25): + print 'land!' + z0 = get_telemetry(frame_id='local_origin').z + print z0 + h = get_telemetry(frame_id='aruco_map').z + print h + print navigate(z=-h+land_height, speed=sp, frame_id='fcu_horiz') + while True: + z = get_telemetry(frame_id='local_origin').z + delta = z0-z-h + print delta + if (abs(delta) < tolerance): + print get_telemetry(frame_id='local_origin') + arming(False) + break + rospy.sleep(0.2) + +def flight_to_point(xp, yp, zp, sp = 1, breakable = True, tolerance = 0.2, constant_yaw = True): + frame_id = 'aruco_map' + if constant_yaw: + current_yaw = get_telemetry(frame_id = 'aruco_map').yaw + print navigate(frame_id=frame_id, x=xp, y=yp, z=zp, speed=sp, yaw = current_yaw) + else: + print navigate(frame_id=frame_id, x=xp, y=yp, z=zp, speed=sp) + while True: + if breakable and state == 'stop': + return + telem = get_telemetry(frame_id=frame_id) + if get_distance(xp, yp, zp, telem.x, telem.y, telem.z) < tolerance: + break + rospy.sleep(0.2) + +# copter parameters + +speed = 1 +z = 1 + +# rectangle parameters + +width = 1 +height = 1 +x0 = 0.1 +y0 = 0.6 + +# flight program + +def flight_program (param): + while True: + + global state + print 'waiting for stop!' + while state != 'stop': + rospy.sleep(0.1) + print 'waiting for start...' + while state == 'stop': + rospy.sleep(0.1) + print 'start!' + + takeoff(z) #takeoff + flight_to_point(x0, y0, z, speed) + while True: + flight_to_point(x0, y0 + height, z, speed) + flight_to_point(x0 + width, y0 + height, z, speed) + flight_to_point(x0 + width, y0, z, speed) + flight_to_point(x0, y0, z, speed, breakable = False) + if state == 'stop': + break + land() + +# Вызывается при обновлении данных из топика +def callback(data): + global state + # Обрабатываем данные с 6 канала пульта + if data.channels[5] < 1100: + state = states[1] + elif data.channels[5] > 1900: + state = states[0] + else: + state = states[2] + +def listener(): + + # In ROS, nodes are uniquely named. If two nodes with the same + # name are launched, the previous one is kicked off. The + # anonymous=True flag means that rospy will choose a unique + # name for our 'listener' node so that multiple listeners can + # run simultaneously. + + rospy.Subscriber('mavros/rc/in', RCIn, callback) + + # spin() simply keeps python from exiting until this node is stopped + + rospy.spin() + +param = [] +thread.start_new_thread(flight_program, (param,)) +listener() +``` +--- + Флип: TODO From d094386c4d032a6cb84fc3f05d1d54f34bd1d353 Mon Sep 17 00:00:00 2001 From: Arthur Golubtsov Date: Fri, 6 Apr 2018 18:57:26 +0300 Subject: [PATCH 4/4] Made some corrections --- docs/esc_firmware.md | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/docs/esc_firmware.md b/docs/esc_firmware.md index 11634c66..3707e2a2 100644 --- a/docs/esc_firmware.md +++ b/docs/esc_firmware.md @@ -18,25 +18,30 @@ Создание программатора на примере Arduino Mega. -1. Запустить программу BLHeliSuite и выбрать вкладку Make interfaces. +1. Запустите программу BLHeliSuite и выберите вкладку Make interfaces. + ![](assets/BLHeliSuite_SiLabs_ESC_Setup_2.png) -2. Нажать Arduino 4way-interface в разделе Make Arduino Interface Boards и выбрать файл прошивки +2. Подключите Arduino к компьютеру, при необходимости посмотрите в диспетчере устройств номер COM порта, к которому подключена плата. + +3. Нажмите Arduino 4way-interface в разделе Make Arduino Interface Boards и выберите файл прошивки. После выбора файла начнётся прошивка контроллера. + ![](assets/BLHeliSuite_Make_Interfaces.png) ![](assets/BLHeliSuite_Interface_Options.png) ![](assets/BLHeliSuite_Arduino_Select_Firmware.png) -3. После прошивки Arduino вернуться на вкладку Silabs ESC Setup и подключиться к Arduino, предварительно выбрав интерфейс программатора 4way-if и COM порт Arduino. +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, предварительно посмотрев в мануале, какие порты используются для прошивки. Так же нужно не забыть соединить GND Arduino с землёй одного из регуляторов. Регуляторы должны быть подключены к питанию, в случае если к регуляторам подключены моторы, **на них не должно быть винтов**. +Для прошивки или изменения настроек регуляторов необходимо подключить сигнальные порты (обычно белого цвета) ESC регуляторов к портам Arduino, предварительно посмотрев в мануале (см. рисунок ниже), какие порты используются для соединения с регуляторами. Так же нужно соединить GND Arduino с землёй одного из регуляторов (обычно черного цвета). Регуляторы должны быть подключены к питанию, а если к регуляторам подключены моторы, **на них не должно быть винтов**. ![](assets/BLHeliSuite_Arduino_Pinout_For_4way-if.png) -В случае с Arduino Mega, регуляторы подключаются к портам D43-D49 и D51. +В случае с Arduino Mega, сигнальные порты регуляторов подключаются к портам D43-D49 и D51. #### Изменение настроек ESC регуляторов. @@ -67,3 +72,7 @@ Для перепрошивки отдельного регулятора нужно сделать все остальные неактивными. +#### Видеоинструкция по перепрошивке ESC регуляторов + +Для лучшего понимания того, что описано в статье, рекомендуем посмотреть наглядное руководство по подключению электроники и прошивке регуляторов на английском языке на [youtube](https://www.youtube.com/watch?v=i6lhMcQLRSU&feature=youtu.be). +