Xcopter – Últimas novidades e voos

10 de Setembro de 2014

IMG_20140830_191704

Desde o primeiros voos feitos com o firmware MPNG que ando à procura do valor ideal para o Rate P do Roll/Pitch. Nos testes com o valor Rate P demasiado baixo o Xcopter voava bem mas tinha tendência a tombar ao levantar voo devagar. Com o valor demasiado alto tinha tendência a oscilar em voo nas manobras mais rápidas ou com o vento.

Por forma a realizar mais testes em voo alterei o valor mínimo para 0.12 e máximo para 0.24 (instruções), sendo o valor 0.185 com o potenciómetro na posição central. Achei que com este intervalo seria mais fácil encontrar o tal valor ideal que ando à procura. Após uns testes com o valor Rate P alto com e sem vento percebi que o Xcopter oscilava pelo que comecei a diminuir até ficar num ponto abaixo da posição central que até ver está perto do ideal. Acho que como está voa muito bem, não oscila e também não tomba ao levantar. Entretanto já repus o intervalo entre 0,08 e 0,20 e movi o potênciómetro no rádio para a posição do valor ideal até aqui testado e que foi 0,139.

Com o peso adicional do gimbal e camera foi necessário modificar o parâmetro THR_MID para o valor 600 e desta forma o stick do throttle passa a estar a 50% quando em hover. Evita-se assim que quando é activado o modo Alt Hold e o stick se encontra perto ou acima dos 60% seja dada a indicação para subir. Isto poderia ser prejudicial na altura de mudança de modos e provocar um acidente.

Num artigo anterior mostrei uma tabela com os vários modos e posições dos switches. Depois de verificar que o modo Position não está presente na versão 3.0.1 do Arducopter, coloquei o modo Circle na mesma combinação de switches. Funciona perfeitamente e quando o valor do raio configurado é 0 o Xcopter gira sobre si que é útil para gravar uma panorâmica. Falta testar com um valor de raio diferente de 0 e suficientemente grande para circular à volta de um ponto de interesse.

Dois modos que faltava testar eram o RTL e Land. Reduzi a altitude de retorno para 10 m e mantive a altitude sobre o local de aterragem em 2 m. Funcionou como esperado, afastei o Xcopter um bom bocado num local sem obstáculos, activei o modo e em poucos segundos estava de novo a sobrevoar o local onde tinha levantado voo. O modo Land ainda me surpreendeu mais da primeira vez que o testei. Logo à primeira tentativa o Xcopter desceu a uma velocidade conveniente, tocou no chão e reduziu a velocidade das hélices sem que houvesse ressaltos. Diminuí o Throttle e desarmou automaticamente ficando pronto para novos voos.

Uma possibilidade que tenho agora configurada é activar o Simple Mode no CH7. A ideia é caso perca a noção do sentido do Xcopter ou numa falha do GPS, activar este modo e mais facilmente trazê-lo para ao pé de mim sem recorrer ao modo RTL. Só vai funcionar caso não haja nenhuma perturbação que prejudique o magnetómetro senão não vai servir de muito.

De resto, fiz a experiência de voar devagar em modo Loiter e utilizar o Yaw para dirigir o Xcopter na direcção pretendida. Apenas não podia fazer as viragens demasiado rápidas senão fugia da rota pretendida. O objectivo é treinar para fazer tomadas de video estabilizada.

Xcopter – Os diversos componentes

31 de Agosto de 2014

IMG_20140830_191704

A construção do Xcopter implicou uma escolha cuidada de todo o material em função da qualidade e do preço. Desde os primeiros voos em Março de 2012, algum do material foi trocado e várias modificações foram realizadas. Este artigo apresenta um resumo do material que actualmente compõe o Xcopter e algum do equipamento necessário para voar.

Xcopter

  • Frame: X525 V3 Fiber Glass (customized)
    • Size: 530mm between motors
    • Size: 840mm between protections
  • Controller: RTFQ MultiWii PRO Ez3.0 Blacked MAG Edition
    • Gyro/Accelerometer: MPU6050
    • Barometer: MS5611
    • GPS: uBlox 6M from RTFQ
    • Magnetometer: HMC5883L (on GPS board)
  • Firmware:
    • MultiWii 2.3 (customized)
    • MegaPirateNG 3.0.1 R4 (customized)
  • Telemetry: Bluetooth serial adapter
    • Android MultiWii EZ-GUI
    • Android DroidPlanner 2
  • Motors: Turnigy 2217 20 Turn 860Kv
  • ESCs: RCTimer 30A with simonk
  • Propellers: Carbon Fibre 11×4.7″ or GEMFAN 11×4.7″
  • Battery: Turnigy nano-tech 3300mAh 3S 1P 35C or ZIPPY Flightmax 2800 mAh 3S 1P 30C
  • Power distribution: Custom cable harness
  • Battery alarm: 1-8S Lipo Battery Voltage Alarm and Tester or AOK-BL4S
  • Lights: Red LED strips for orientation and navigation aid
  • Landing gear: Carefree Universal FPV Skid Landing 200mm
  • Protection: Carbon-fiber tube and ping-pong balls
  • Canopy: 50 CD cakebox

Video

  • Camera (primary): SJ4000 1080p Sports Action Camera
  • Camera (secundary): 808 #16 v2 keychain camera Lens B
  • Gimbal: RTFQ 2-Axis Brushless Camera Gimbal Mount
    • Motors: 2208 80kv(?) Gimbal Brushless Motor
    • Controller: RTFQ V5 Brushless Gimbal Controller (MOSFET edition)
    • Firmware: SimpleBGC 2.2b2

Radio Control

  • Transmiter: Turnigy 9X with OpenTX r2940 and RF9X-V2 module
  • Receiver: Turnigy 9X8C-V2 8-channel receiver
  • Battery: Rhino 2620mAh 3S Low-Discharge

Other

  • Battery Charger: iMAX B6AC 2.6″ LCD

Xcopter – Evolução Mk4 e Mk5

29 de Agosto de 2014

xcopter_logo

Nos últimos meses têm sido efectuadas diversas alterações ao Xcopter com o objectivo de o tornar numa plataforma de captação de imagens aéreas. Essas alterações incluíram a compra de um trem de aterragem alto, de um gimbal, de uma camara nova, uma controladora com suporte para GPS e novo firmware com mais capacidades. Estas são as alterações mais fáceis de descrever pois há sempre pequenas melhorias que vão sendo feitas. As alterações traduziram-se nas seguintes versões do Xcopter:

IMG_20140405_105544

Mk4 – Gimbal Version

  • Gimbal
  • Landing gear
  • New battery support
  • Carbon fiber propellers 11×4.7
  • Turnigy 9X update to OpenTX firmware

IMG_20140817_130532

Mk5 – GPS Version

  • RTFQ MultiWii PRO Ez3.0 FC with GPS (RTFQ)
  • SJ4000 1080p Sports Action Camera
  • MultiWii 2.3 p07 firmware (customized)
  • MegaPirateNG 3.0.1 R4 firmware (customized)
  • Camera support without gimbal

Neste momento o desafio é afinar o firmware MegaPirateNG 3.0.1 R4 até conseguir voar de uma forma estável e fluída como com MultiWii. A nova controladora em conjunto com o GPS permitem que a atenção esteja mais focada na captação de imagem em vez da pilotagem mas sem nunca descurar a segurança. No firmware MPNG existem inúmeras opções que podem ser usadas para melhorar o voo e segurança, compreendê-las a todas vai demorar algum tempo.

Xcopter – MultiWii config.h

27 de Agosto de 2014

multiwii_2.3_p07

Antes de encerrar o capítulo MultiWii utilizado até à pouco tempo no Xcopter, falta ainda falar um pouco sobre a sua configuração. Esta é capaz de ser a parte mais intimidante para quem começa com MultiWii mas que facilmente é ultrapassada com um pouco de leitura e procura de informação em fóruns.

A configuração está dividida em várias partes que vão desde o tipo de multicopter, placa controladora, passando pela configuração dos sensores, modos de voo adicionais, tipos de receptores rádio, registo de dados até à configuração de parâmetros via LCD ou emulação de porta série.

Para explicar as opções do ficheiro config.h vou-me basear na configuração utilizada na controladora RTFQ MultiWii PRO Ez3.0 Blacked MAG Edition sendo que não será muito difícil transpor a configuração para outras controladoras suportadas pelo MultiWii. O próprio ficheiro de configuração está organizado em várias secções para ser mais fácil encontrar as partes a editar:

* 1 - BASIC SETUP - you must select an option in every block.
* this assumes you have 4 channels connected to your board with standard ESCs and servos.
* 2 - COPTER TYPE SPECIFIC OPTIONS - you likely want to check for options for your copter type
* 3 - RC SYSTEM SETUP
* 4 - ALTERNATE CPUs & BOARDS - if you have
* 5 - ALTERNATE SETUP - select alternate RX (SBUS, PPM, etc.), alternate ESC-range, etc. here
* 6 - OPTIONAL FEATURES - enable nice to have features here (FlightModes, LCD, telemetry, battery monitor etc.)
* 7 - TUNING & DEVELOPER - if you know what you are doing; you have been warned
* - (ESCs calibration, Dynamic Motor/Prop Balancing, Diagnostics,Memory savings.....)
* 8 - DEPRECATED - these features will be removed in some future release

Apenas vou falar dos parâmetros que para mim são relevantes e que utilizei no Xcopter, todos os outros ou não interessam ou não fazem sentido para a minha configuração e serão descartados.

/* SECTION 1 – BASIC SETUP */

/* The type of multicopter */
#define QUADX
/* Motor minthrottle */
/* Set the minimum throttle command sent to the ESC (Electronic Speed Controller)
   This is the minimum value that allow motors to run at a idle speed */
#define MINTHROTTLE 1240 // Mk5: for RCTimer ESCs 30A flashed with simonk
/* Motor maxthrottle */
/* this is the maximum value for the ESCs at full power, this value can be increased up to 2000 */
#define MAXTHROTTLE 2000 // Mk5: for RCTimer ESCs 30A flashed with simonk
/* Mincommand */
/* this is the value for the ESCs when they are not armed
   in some cases, this value must be lowered down to 900 for some specific ESCs, otherwise they failed to initiate */
#define MINCOMMAND 1000
/* I2C speed */
#define I2C_SPEED 400000L //400kHz fast mode, it works only with some WMP clones
/* boards and sensor definitions */
/* Combined IMU Boards */
/* if you use a specific sensor board:
   please submit any correction to this list.
   Note from Alex: I only own some boards, for other boards, I'm not sure, the info was gathered via rc forums, be cautious */
#define FREEIMUv043 // same as FREEIMUv04 with final MPU6050 (with the right ACC scale)

Destes parâmetros os mais importantes, para além do tipo de multicopter e controladora, é o MINTHROTTLE cujo valor deverá ser configurado depois de se calibrar todos os ESCs. No fim de se configurar o valor MINTHROTTLE deverá ligar-se os motores com a combinação de sticks mas sem hélices e inclinar o quadcopter nos vários eixos para verificar se nenhum dos motores pára. Se algum parar durante os movimentos deve-se subir o valor e testar de novo.

Uma das maneiras para calibrar os ESCs é utilizando a opção disponível no MultiWii (ver mais abaixo) em alternativa ao uso do comando/receptor com cada um dos ESCs. Os restantes parâmetro devem ser deixados como estão a menos que se saiba o que se está a fazer. Isto supõe que o rádio cumpre os requisitos de ter o valor PPM indicador da posição central dos sticks a 1500, na posição mais baixa dos sticks o valor ligeiramente inferior a 1100 e na posição mais alta dos sticks o valor é ligeiramente maior que 1900.

/* SECTION 5 – ALTERNATE SETUP */

/* Gyro filters */
/* Lowpass filter for some gyros */
/* MPU6050 Low pass filter setting. In case you cannot eliminate all vibrations to the Gyro, you can try
   to decrease the LPF frequency, only one step per try. As soon as twitching gone, stick with that setting.
   It will not help on feedback wobbles, so change only when copter is randomly twiching and all dampening and
   balancing options ran out. Uncomment only one option!
   IMPORTANT! Change low pass filter setting changes PID behaviour, so retune your PID's after changing LPF.*/
#define MPU6050_LPF_42HZ

Com a controladora Crius 0.2 SE nunca tive de configurar o LPF mas com a MultiWii PRO a recomendação é utilizar devido à maior sensibilidade dos sensores. Dos testes que fiz e apresentei anteriormente num outro artigo confirmei que era melhor manter esta configuração no 42 Hz. O ideal sempre é que a frame não transmita vibrações garantindo que as hélices e eventualmente os motores estejam bem equilibrados.

/* SECTION 6 – OPTIONAL FEATURES */

/* Failsafe settings */
/* Failsafe check pulses on four main control channels CH1-CH4. If the pulse is missing or bellow 985us (on any of these four channels)
   the failsafe procedure is initiated. After FAILSAFE_DELAY time from failsafe detection, the level mode is on (if ACC or nunchuk is avaliable),
   PITCH, ROLL and YAW is centered and THROTTLE is set to FAILSAFE_THROTTLE value. You must set this value to descending about 1m/s or so
   for best results. This value is depended from your configuration, AUW and some other params. Next, after FAILSAFE_OFF_DELAY the copter is disarmed,
   and motors is stopped. If RC pulse coming back before reached FAILSAFE_OFF_DELAY time, after the small quard time the RC control is returned to normal. */
#define FAILSAFE // uncomment to activate the failsafe function
#define FAILSAFE_DELAY 10 // Guard time for failsafe activation after signal lost. 1 step = 0.1sec - 1sec in example
#define FAILSAFE_OFF_DELAY 100 // Time for Landing before motors stop in 0.1sec. 1 step = 0.1sec - 20sec in example
#define FAILSAFE_THROTTLE (MINTHROTTLE + 200) // (*) Throttle level used for landing - may be relative to MINTHROTTLE - as in this case

O valor do FAILSAFE_THROTTLE deverá ser testado mas o mais provável é o quadcopter voar mais alto ou cair depressa demais dependendo do valor. O failsafe do MultiWii não é nada evoluído, basicamente provoca uma queda controlada que impede o quadcopter de ir para longe. Sempre é melhor que nada no caso de se perder o contacto rádio. Caso o teste seja feito em casa é importante retirar as hélices pois ao desligar-se o rádio os motores irão acelerar até ao valor definido no FAILSAFE_THROTTLE se estiver armado.

/* GPS */
/* GPS using a SERIAL port
   if enabled, define here the Arduino Serial port number and the UART speed
   note: only the RX PIN is used in case of NMEA mode, the GPS is not configured by multiwii
   in NMEA mode the GPS must be configured to output GGA and RMC NMEA sentences (which is generally the default conf for most GPS devices)
   at least 5Hz update rate. uncomment the first line to select the GPS serial port of the arduino */
#define GPS_SERIAL 2 // should be 2 for flyduino v2. It's the serial port number on arduino MEGA
// avoid using 115200 baud because with 16MHz arduino the 115200 baudrate have more than 2% speed error (57600 have 0.8% error)
#define GPS_BAUD 38400 // Mk5: GPS speed configured to be compatible with MPNG
/* GPS protocol
   NMEA - Standard NMEA protocol GGA, GSA and RMC sentences are needed
   UBLOX - U-Blox binary protocol, use the ublox config file (u-blox-config.ublox.txt) from the source tree
   MTK_BINARY16 and MTK_BINARY19 - MTK3329 chipset based GPS with DIYDrones binary firmware (v1.6 or v1.9)
   With UBLOX and MTK_BINARY you don't have to use GPS_FILTERING in multiwii code !!! */
#define UBLOX // Mk5: GPS configured with 3DR-Ublox.txt to be compatible with MPNG
/* Get your magnetic declination from here : http://magnetic-declination.com/
   Convert the degree+minutes into decimal degree by ==> degree+minutes*(1/60)
   Note the sign on declination it could be negative or positive (WEST or EAST) */
#define MAG_DECLINATION -2.88f // Mk5: magnetic declination for Lisbon

Para utilizar as capacidades RTH e PH permitidas com o GPS, estes são os parâmetros a configurar não esquecendo a declinação magnética do local próximo do voo. No meu caso o GPS foi configurado de acordo com os requisitos do MegaPirateNG (Arducopter port) e a velocidade escolhida foi os 38400.

/* LCD/OLED - display settings */
/* http://www.multiwii.com/wiki/index.php?title=Extra_features#LCD_.2F_OLED */
/* The type of LCD */
/* choice of LCD attached for configuration and telemetry, see notes below */
#define LCD_VT100 // SERIAL LCD: vt100 compatible terminal emulation (blueterm, putty, etc.)
/* LCD configuration menu */
/* uncomment this line if you plan to use a LCD or OLED for tweaking parameters
 * http://www.multiwii.com/wiki/index.php?title=Extra_features#Configuration_Menu */
#define LCD_CONF
/* to include setting the aux switches for AUX1 -> AUX4 via LCD */
#define LCD_CONF_AUX
/* LCD telemetry */
/* to monitor system values (battery level, loop time etc. with LCD
 * http://www.multiwii.com/wiki/index.php?title=LCD_Telemetry */
/* Activation */
#define LCD_TELEMETRY
/* optional exclude some functionality - uncomment to suppress some unwanted telemetry pages */
#define SUPPRESS_TELEMETRY_PAGE_6
#define SUPPRESS_TELEMETRY_PAGE_8

Uma das características do MultiWii é que permite a configuração dos diversos parâmetros de várias formas. Temos o MultiWiiConf que pode ser usado via USB, a aplicação Android EZ-GUI ligada pelo adaptador Bluetooth-Serie e podemos também ligar via porta série com um programa terminal directamente do PC. Se for em Android pode-se também ligar com a aplicação Blueterm e utilizar os sticks para avançar e alterar os vários parâmetros. Também configurei a telemetria para possibilitar ver as várias informações disponíveis quando se pressiona os número de 0 a 5, o 7 e 9 no Blueterm.

/* Buzzer */
#define BUZZER
#define RCOPTIONSBEEP // uncomment this if you want the buzzer to beep at any rcOptions change on channel Aux1 to Aux4

O buzzer possibilita, para além dos LEDs coloridos a piscar, ter uma informação audível do estado do Xcopter, principalmente quando se transita entre os estados armado e desarmado. Também emite som quando alteramos modos de voo com os switches auxiliares ou quando se grava uma nova configuração de PIDs. Recomendo sempre que possível ter um buzzer ligado à controladora.

/* SECTION 7 – TUNING & DEVELOPER */

/* motor, servo and other presets */
/* motors will not spin when the throttle command is in low position
   this is an alternative method to stop immediately the motors */
#define MOTOR_STOP

Quando se está a começar a voar, nos primeiros voos de teste esta opção é capaz de ajudar a rapidamente parar as hélices do quadcopter quer em voo quer no chão mesmo sem desarmar. Recomendo que só seja activada depois de testar convenientemente o parâmetro MINTHROTTLE como indicado e ter sempre muita atenção ao LED indicador do estado armado.

/* diagnostics */
/* to log values like max loop time and others to come
   logging values are visible via LCD config
   set to 1, enable 'R' option to reset values, max current, max altitude
   set to 2, adds min/max cycleTimes
   set to 3, adds additional powerconsumption on a per motor basis (this uses the big array and is a memory hog, if POWERMETER <> PM_SOFT) */
#define LOG_VALUES 1
/* Permanent logging to eeprom - survives (most) upgrades and parameter resets.
 * used to track number of flights etc. over lifetime of controller board.
 * Writes to end of eeprom - should not conflict with stored parameters yet.
 * Logged values: accumulated lifetime, #powercycle/reset/initialize events, #arm events, #disarm events, last armedTime,
 * #failsafe@disarm, #i2c_errs@disarm
 * Enable one or more options to show the log */
#define LOG_PERMANENT
#define LOG_PERMANENT_SHOW_AT_L // enable to display log when receiving 'L'
#define LOG_PERMANENT_SERVICE_LIFETIME 36000 // in seconds; service alert at startup after 10 hours of armed time

Como achei interessante ter informação adicional para eventual análise, configurei também o registo de alguns dos valores de funcionamento, como o tempo de ciclo, erros i2c e também o número de vezes que armei o Xcopter para voar e o tempo total armado. Não dei nenhuma utilização prática de relevo aos valores mas gostei de os ter disponíveis se necessário. Um deles é por exemplo a altitude máxima atingida que pode ser lida antes de desligar a bateria.

/* ESCs calibration */
/* to calibrate all ESCs connected to MWii at the same time (useful to avoid unplugging/re-plugging each ESC)
   Warning: this creates a special version of MultiWii Code
   You cannot fly with this special version. It is only to be used for calibrating ESCs
   Read How To at http://code.google.com/p/multiwii/wiki/ESCsCalibration */
#define ESC_CALIB_LOW MINCOMMAND
#define ESC_CALIB_HIGH 2000
//#define ESC_CALIB_CANNOT_FLY // uncomment to activate

Para calibrar os ESCs utilizando a configuração auxiliar do MultiWii é obrigatório como segurança retirar as hélices pois durante a calibração é possível que os motores sejam accionados à velocidade máxima. Basta remover o comentário do ESC_CALIB_CANNOT_FLY, fazer o upload do firmware, ligar a bateria aos motores, deixar actuar (atenção aos apitos dos ESCs) e já está. Depois é comentar de novo e fazer o upload do firmware configurado para voar. Não é preciso alterar nenhum parâmetro desde que os ESCs suportem os valores utilizados como mínimo e máximo.

Espero com este resumo do ficheiro de configuração ajudar outros interessados no MultiWii a conseguir rapidamente colocar o seu multicopter no ar. Sempre que possível estarei disponível para ajudar e esclarecer dúvidas que surjam, podem sempre deixar questões ou comentários nos espaços para o efeito.


Seguir

Get every new post delivered to your Inbox.