-
Notifications
You must be signed in to change notification settings - Fork 0
/
change.txt
1596 lines (1100 loc) · 63.1 KB
/
change.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
***documentation***
===============================================================
Documentation for releases should be in the official wiki at
http://www.multiwii.com/wiki
stable and development versions can be found here:
http://code.google.com/p/multiwii/downloads/list
For development versions you are on your own - good luck.
Don't try any development version if you don't follow dev evolution.
Don't forget a multirotor is something that can be dangerous.
For discussion and questions the official forum is at
http://www.multiwii.com/forum
Evolution of the code can be followed here:
http://code.google.com/p/multiwii/source/list
MultiWii is not a product, nor a plug and play solution.
It is basically an open source project.
Don't expect to buy a compatible board and run it without a minimum knowledge.
main changes 2.2 -> 2.3
***Control mode***
- main PITCH/ROLL/YAW PID modification (r1474)
- the sticks scaling is no more affected by PID coefficients
- yaw rate (to the right of the PIDs in GUI) now works as stick scaling
- default yaw rate is increased (with yaw rate at 0)
- yaw PID principle is now different from PITCH&ROLL PID:
- yaw ITerm windup is very high, allowing an 'elastic' direction return after a manual perturbation
- yaw ITerm is also constrained with a windup independent limit
- yaw PTerm is constrained in order to counter the yaw jump effect.
use yaw DTerm to increase this constrain (r1573)
- yaw ITerm is canceled if the yaw stick is not centered
- Throttle angle correction (r1374)
- Advanced Headfree mode added (see config.h for instructions) (r1374)
- DYNBALANCE option, individual motor can be controled via GUI, to test individual vibration
http://www.multiwii.com/forum/viewtopic.php?f=7&t=3294
- better gyro & acc calibration accuracy (r1546)
http://www.multiwii.com/forum/viewtopic.php?f=7&t=3880
- cannot arm is baro mode is on (r1550)
http://www.multiwii.com/forum/viewtopic.php?f=8&t=3910
! baro mode should be activated only when the multi is nearly Z stable !
- only one baro mode : vario around a throttle deadband (r1554)
- magHold is reset when arm is switched on (r1553)
http://www.multiwii.com/forum/viewtopic.php?f=8&t=3910
- ONLYARMWHENFLAT option (r1587)
http://www.multiwii.com/forum/viewtopic.php?f=8&t=4077&hilit=coming&start=40#p41755
***receiver & UART***
- RCSERIAL is now deeply integrated. If a MSP_SET_RAW_RC comes, it will just override legacy RX data. (r1420)
as a consequence, RCSERIAL is no more an option
- no RC averaging for Spektrum & SBUS (r1545)
- SBUS center define (r1568)
http://www.multiwii.com/forum/viewtopic.php?f=8&t=3957
- FAILSAFE_DETECT_TRESHOLD configurable
***GPS***
- Enables sonar altitude from i2c-gps-nav board (1424)
- navigation code will follow after 2.3
***GUI***
- Gui with Servosettings. (r1441 & r1450)
All models with servo included.
- GUI globalsettings (for some settings previously only in config.h)
- do not display /dev/cu.* devices but only corresponding /dev/tty.* (r1442)
- GUI baudrate as configurable setting
***LCD***
- lcd.telemtry: show max ground speed from gps data (r1398)
- lcd.telemetry: allow separate suppression of aux2 configuration (r1456)
- new display support 1.3" i2c OLED from digole.com (r1413)
- config.menu: when abort, revert all values back to last saved state
- visual feedback from servos during midpoint trim via LCD
***IMU and baro***
- correct GYRO_SCALE for all gyro (r1428)
- no more small angles while shaking the board (r1579)
http://www.multiwii.com/forum/viewtopic.php?f=8&t=4112
- baro Alt based on ground temp compensation (r1570)
http://www.multiwii.com/forum/viewtopic.php?f=8&t=4059
- not I reset for FIWEDWING (r1590)
http://www.multiwii.com/forum/viewtopic.php?f=7&t=2456&start=330#p42355
- add 6DOF LSM330 sensor (r1571)
- add ACC BMA280 sensor (r1600)
*** SERVO management ***
warning:
The pins for coptertypes with servos have been changed.
Attaching a servo to a motor pin can quickly destroy your servo.
All connection diagrams out there from v2.2 or older are no longer valid for v2.3 with servos using hardware PWM.
http://www.multiwii.com/wiki/index.php?title=Config.h#Servos_configuration
- add 8 hardware PWM's for servos on MEGA boards. Servo outputs are 44,45,46,11,12,6,7,8 (r1384)
- Allow any servo refresh rate from 20 to 400Hz on Mega hardware PWM servos. (r1386)
- Tri servo moved to SERVO4 (pin11) on mega boards with HW PWM's. (r1392)
- a32u4 (nanoWii, MicroWii etc) HW PWM for 4 servos; warning different pins!!
(with lots of info and help from ronco)
(r1464 & r1470)
- add a generic way to configure servo settings : conf struct + MSP read/set messages (r1383)
- Added general servo handler (r1421 & r1429)
http://www.multiwii.com/forum/viewtopic.php?f=8&t=3498
- allow preset of some servo stuff from config.h (r1432)
- Gui with Servosettings. (r1441)
- add gimbal servo stretcher usable with HW PWM's. (r1384)
We can get 180 degrees servo move without servo modification.
- note about gimbal: settings for neutral&endpoints are no more in config.h, but only in GUI
- do not update servos during unarmed calibration of sensors which are sensitive to vibration (r1408)
***internal improvements***
- migration to a cpp/h code structure (r1515 & r1516)
http://www.multiwii.com/forum/viewtopic.php?f=8&t=3773
http://www.multiwii.com/forum/viewtopic.php?f=8&t=2931
- huge flash size optimization (around 1k)
thanks to fine struct definitions + serialization over MSP (r1369)
- make powermeter computation time based (again) to reduce config hassle and increase accuracy (r1375)
- read at most one analog channel per MWii main loop cycle (r1375)
- smoothing of RX_RSSI (r1379)
- make faster analog reads an option with default off to increase accuracy (r1375)
- detangle vbat & buzzer dependancy (r1375)
- optimization : small approximation bit shift used instead of * or / number
for TPA, rates, dynP, dynD and expo curb (r1376)
- Added checking for flash content change, and reload config parameters in this case. (r1389)
- split Serial into Serial(core UART management) & Protocol (r1548)
- loop is globally faster
***add-ons***
- option to suppress defaults in mwc sketch and load via gui from file instead (r1365)
- add OVERRIDE_PSENSORPIN option (r1375)
- manual for using Multiwii in Eclipse environment
http://www.multiwii.com/wiki/index.php?title=Developing_in_Eclipse
- add amperage to MSP_ANALOG (r1542)
- MY_PRIVATE_DEFAULTS (r1559)
http://www.multiwii.com/forum/viewtopic.php?f=8&t=3987
- no more than one MSP per port and per cycle
should smooth the delay while requesting MSP, especially for USB port on micro
2.1 -> 2.2
***Control mode***
- introduction of HORIZON MODE.
We have now 3 modes:
ACRO mode.
This is the default one when none of the ANGLE & HORIZON BOX is activated.
The copter will continue rotating in the direction in which you tilt sticks.
When you let go of sticks it will maintain that angle and not return to level
ANGLE mode
The position of the stick indicates the angle at which the copter tries to maintain. Sticks off = level.
Full sticks in any direction and it will tilt at around 50 degrees. It's proportional in-between.
It maintains the angle set by the stick. Let go of sticks and it returns to level
HORIZON mode <- new
It's a proportional mix of the two. Sticks off = level. Full deflection = ACRO.
In between it gradually mixes from LEVEL mode to ACRO.
It's a fine mix to be able to do some ACRO with the safety of ANGLE mode when you release the sticks.
It allows also a more natural way of flying as the multi seems less constrained.
- failsafe code is more strict. (thanks to MIS)
If activated, it takes into account all the main channels and it's important to stay strictly inside the [1000-2000] range.
For instance a throttle of 995 will activate the failsafe
failsafe is optional and can be activated via #define FAILSAFE
- Acrotrainer mode introduced by PatrikE
a kind of non proportional horizon mode
more info here: http://www.multiwii.com/forum/viewtopic.php?f=16&t=1944
- SERVO_TILT_MIX
introduced by Bledi and Gary
http://youtu.be/zKGr6iR54vM
corrected after to support optionally up to 2 AUX channels superposition to control the gimbal
- CAM STAB: (thanks to Gary and suggested or Arne)
Ability to define Cam Stab control channels used
Ability to turn off
Fix for AUX3 + 4 affecting tilt/roll with camstab enabled
***add-ons***
- pilotlamp integration (thanks to mr.rc-cam, jevermeister, doughboy )
via #define PILOTLAMP
http://code.google.com/p/multiwii/wiki/Documentation_Pilotlamp
- LEDRING pattern was refined thanks to shikra
instructions here: http://code.google.com/p/multiwii/source/browse/trunk/LEDRing/README.txt
- variometer introduced by Hamburger
enable to get audio feedback upon rising/falling copter/plane
via #define VARIOMETER
***receiver & UART***
- option to use throttle PIN as the PPM PIN on mega boards thanks to MIS
this way you can use the UART 1 for other purpose
via #define PPM_ON_THROTTLE
- every UART port on MEGA boards can be used at the same time with different baud configuration.
ie, you can connect up to 4 GUI or OSD or anything using MSP simultaneously
- the second UART port on promicro boards can be used at the same time with different baud configuration.
- spektrum (thanks to Danal)
- spektrum satellite up to 12 channels, even if only 8 are usable in multiwii
- spektrum satellite BIND button, to associate a satellite without the main receiver
***PIN mapping***
- possibility to override some PIN definition in config.h (thanks to Hamburger)
***GPS***
- UBLOX GPS: the baud configuration is autodetected and the UBLOX binary protocol is automaticly set (thanks to MIS & EOSBandi)
- MKT GPS can now be parsed in binary mode is possible thanks to EOSBandi
made for DIYDrones MTK firmware v1.6 and v1.9
- I2C GPS:
correct directionToHome (change it to the opposite direction)
there is still a problem remaining when your distance to home reaches 654m: it overflows.
a I2C code evolution is needed to correct this problem
- a forward predictive filter was ported from the Arducopter code by EOSBandi
optional and by default activated: #define GPS_LEAD_FILTER
- first implementation of MSP_SET_WP
with the help of Ezio app (EZ-GUI), we can now control the multi with a smartphone:
set a new position on a map / follow me / follow heading
see Multiwii EZ-GUI specific topic: http://www.multiwii.com/forum/viewtopic.php?f=8&t=2034
some video about this functionality:
http://www.youtube.com/watch?v=qpoPanmVa9Y
http://www.youtube.com/watch?v=hPj6WZex8j0
http://www.youtube.com/watch?v=nPICiiaDTnc
- AP_MODE introduced by PatrikE
used in GPS POS HOLD mode, outside the specified stick range the POS HOLD position is renew
***multiwii models***
- HELICOPTER and PLANE models was refined thanks to PatrickE and Hamburger
multiple helicopter type HELI_120_CCPM , HELI_90_DEG
servo configuration for plane, FLAP, FLAPPERON
- HEXH6 multicopter type added (thanks to shikra)
- Bi-Copter pitch direction setting
- USE_THROTTLESERVO (for airplanes), COLLECTIVE_RANGE changed (second value not offset anymore)
***GUI & OSD & LCD***
- a RECONNECT button was added by PatrickE
a file is now generated to indicate the last COM&Serial speed.
The serial speed can be edited in this file to change the UART speed of GUI.
- New MultiWiiConf GUI v2.2 with graphical improvements (thanks to Magnetron and doughboy)
cool things like virtual horizon
- optional 3 independent configurations, stick selectable settings in EEPROM (thanks to MIS)
can be activated via #define MULTIPLE_CONFIGURATION_PROFILES
- a RESET button was added in the GUI
if you encounter any EEPROM problem or if you want to restore the default values
***LCD***
- on mega boards, it's possible to define the LCD port for LCD supporting true UART.
- more parameters are tunable via LCD conf, all the one in config.h with a small (*) besides, thanks to Hamburger
those parameters will be moved in the GUI later in another step, once we find the good way to do it.
example: failsave.throttle , vbat tunable params , powermeter tunable params
- many telemetry and LCD config enhancements (thanks to hamburger)
telemetry page 3: use long boxnames
telemetry page 2: show numerical values for sensor data next to bar graphs
no user interaction necessary to run telemetry info upon start up
set individual board name string (currently used for display; no GUI representation yet)
- LCDconfig menu: with THROTTLE=High, increment is 10 times of normal
- servos are moved to neutral position during calibration and lcd.configuration
***OSD***
- RSSI PIN added for OSD use (thanks to Kataventos)
the RSSI output can be retrieved via a MSP message for OSD
- OSD BOX added for OSD activation (thanks to Itai)
- huge work made on an open source code OSD fully compatible with MultiWii (thanks to the team lead by Kataventos)
http://www.multiwii.com/forum/viewtopic.php?f=8&t=2918
http://code.google.com/p/rush-osd-development/
***IMU and baro***
- gyro calibration could be held until the MWC stops moving
introduced by MIS, and made optional after via a specific define: #define GYROCALIBRATIONFAILSAFE
- mag gain calibration is improved thanks to EOSBandi
based on Fabio FreeIMU code. We won't forget you Fabio...
- perfect euler angle computation in case of 9DOF (better heading)
no more gimbal lock in GUI representation with a 9DOF sensor
- force sensors orientation to override board specific defaults
optional in config.h
- default ACC LPF factor reduced from 16 (2^4), and is share with ACC LPF for alt hold
- gyro/acc complementary filter value increased from 400 to 600
- gyro/mag complementary filter now set to 250 instead of 200
- gyro scale factor changed from 2380 to 2279
- accelerometer now used below 1.15G and above 0.85G instead of previous 1.4G/0.6G settings
- option: SENSORS_TILT_45DEG_LEFT/RIGHT to change X/P configuration without changing board orientation
- ALT HOLD is greatly improved thanks to the code of Mahowik, a little bit optimized since
improved baro hold (PID) algorithm that includes the accelerometer z-axis
its a real major improvement for multiwii
http://www.youtube.com/watch?v=T3htaJ53Z7E
- baro calibration and calculation is improved thanks to Sebbi
baro indicates now altitude 0 when it is powered. This is the reference altitude.
- calculation of barometric altitude changed to include temperature, faster update rate
- new FC boards: SIRIUSGPS, SIRIUS_AIR, SIRIUS_AIR_GPS, MICROWII, GY_521, MultiWiiMega, DESQUARED6DOFV2GO, DESQUARED6DOFV4, LADYBIRD, MEGAWAP_V2_STD, MEGAWAP_V2_ADV, HK_MultiWii_SE_V2, HK_MultiWii_328P, RCNet_FC, FLYDU_ULTRA
***internal improvements***
- some default PID were changed for optimization speed in PID copmputation.
The default PID should behave exactly as the previous ones.
To restore your old PID settings, just a proportion is needed.
- 5 hardware PWM servos avaliable with Mega boards on pins 44,45,46,11,12 (thanks to MIS)
- EEPROM settings secured by checksum (thanks to MIS)
- optional permanent logging to eeprom
setting: LOG_PERMANENT
- change LED blink frequency for acc-uncalibrated or tilt>25 from 50ms to 10ms
- rework of task scheduler code thanks to ideas from Sebbi
we have now a better computation time repartition
- optional fixate cycle time (by burning cpu time away)
- allow override of motor/servo mixing from config.h - no need to edit Output.ino
experimental
- faster cycle time than with v2.1
- many many hidden optimizations in the code
2.0 -> 2.1
Some things everyone should be aware before upgrading to this version.
WMP and NUNCHUCK are no longer auto recognized.
You must explicitly declare them (or just WMP) in config.h
Pullups are now undefined by default
(think about activating it if you use a WMP only conf)
LCD is not activated by default
Failsafe is not activated by default
VBAT monitoring is not activted by default
There is no more .pde files
You must use Arduino 1.0 or greater to compile the sketch (and open Multiwii.ino)
If the GUI does not work on your setup,
try to deactivate hardware acceleration for your display board
or use an alternative GUI like WinGUI
MultiWii is not a product, nor a plug and play solution.
Don't expect to buy a compatible board and run it without a minimum knowledge.
Receiver part
OpenLRS Multi board support done
This is a board including an OpenLRS receiver where the atmel
is used also to run multiwii code.
more info here: http://www.multiwii.com/forum/viewtopic.php?f=8&t=1438
Multiwii Serial Protocol
It's a new protocol to communicate with the FC
It was introduced by me and tuned by Tommie
It's a huge change, but it should ensure a generic way to communicate with the FC
which is less dependant to version evolutions.
more info here: http://www.multiwii.com/forum/viewtopic.php?f=8&t=1516
Now, there is no mod to multiwii code if we want to add a GUI/OSD/conf tool/...
Compatible GUI:
open source code, compatible with the new serial protocol:
WinGUI from EOSBandi, which is fully equivalent with the original one,
with a better look
more info here: http://www.multiwii.com/forum/viewtopic.php?f=8&t=1229
mwGui from kos
more info here: http://www.multiwii.com/forum/viewtopic.php?f=8&t=1791
Android ones via serial bluetooth:
- adding a bluetooth module to multiwii
more info here: http://www.multiwii.com/forum/viewtopic.php?f=6&t=133
compatible apps:
https://play.google.com/store/apps/details?id=net.xrotor.andmultiwiiconf
https://play.google.com/store/apps/details?id=net.loide.games.bicopter
https://play.google.com/store/apps/details?id=com.naze32.configurator
Compatible OSD:
open source code, compatible with the new serial protocol
Rushduino:
more info here: http://www.multiwii.com/forum/viewtopic.php?f=8&t=922
mobiDrone:
more info here: http://www.multiwii.com/forum/viewtopic.php?f=8&t=1498
LCD config
OLED display
thanks to contributions of howardhb and Hamburger
more info here: http://www.multiwii.com/forum/viewtopic.php?f=7&t=1350
VT100 terminal type addition
thanks to contribution of Hamburger
more info here: http://www.multiwii.com/forum/viewtopic.php?f=7&t=1096
A multiline option is added to allow the configuration on more than 2 lines
useful for displays like OLED or VT100
We have now a lot of possibilities regarding LCD:
SERIAL3W : original 2x16 line from Sparkfun
TEXTSTAR : Cat's Whisker LCD_TEXTSTAR Module CW-LCD-02
VT100 : vt100 compatible terminal
ETPP : Eagle Tree Power Panel LCD
LCD03 : an i2c LCD
OLED_I2C_128x64
New proc: ATmega32U4
Thanks to the work from ronco.
This proc can be found in the Arduino pro micro board, or Teensy 2.0
The Pro Micro is similar in size to the Pro Mini except it has a ATmega32U4 on board.
The USB transceiver inside the 32U4 allows us to add USB connectivity on-board.
ronco also designed a custom board named nanowii.
One of the smallest 6DOF Multiwii board with usb, which can be now purchased.
more info here: http://www.multiwii.com/forum/viewtopic.php?f=6&t=1337
Servo:
Higher refresh rate:
Some servo (mostly digital ones) can work with a higher frequency than 50Hz.
The benefit to use a higher refresh rate is a sharper response.
ronco adapted the code to make this frequency configurable
more info here: http://www.multiwii.com/forum/viewtopic.php?f=8&t=1644
Hardware PWM output:
On MEGA boards, it's now possible to drive the gimbal servos with
a 11-bit PWM servo resolution. Thanks to ronco.
The hardware PWM output ensures a jitter free response.
LED flasher
A way to set a flash LED sequence from Tommie
more info here: http://www.multiwii.com/forum/viewtopic.php?f=8&t=1505
Throttle expo
There is now another curve in the GUI to configure the Throttle expo.
It's a way to smooth the throttle stick response around the hover point.
In order to help the setting, there is a small cursor in the graph to show
where is the current throttle input.
ACC LEVEL improvement
The LEVE mode is improved since 2.0 thanks to new choice of
other complementary filter coefficients and a floating point low pass filter
Headfree checkbox:
It's possible to reset the headfree direction while flying via a checkbox.
thanks to Tommie
Sensor:
MPU6050: there was a bug which prevents using the gyro LPF. correted now.
SONAR: I2C sonar SRF0x code was added but is not currently used.
HMC5883 axis calibration factor was added
NUNCHUK is fusioned with ACC in GUI
many new boards was also added in config.h file
Internal code:
- the Serial part uses now less RAM (thanks to Tommie first mod)
RX/TX buffers are smaller than before.
- EEPROM parameters are stored in a struct, and are written in the
EEPROM in a single step.
- MAG declination was added by EOSBandi, to have more accurate orientation.
In some countries, it's really mandatory to set this variable right,
otherwise it's impossible to use GPS.
- Flag var was introduced for global boolean type variables.
- Hamburger introduced some "copter exemple" in order to check
if compilation is ok. (should be a way to remove some trivial bugs)
- code style (indentation, variable naming convention etc.) started
- GUI requires new ControlP5 library to compile
- interval variable activate[] is now 16 bit long
- new config.h structure
GUI:
- thanks to Danal, there is now the PIN number and the propeller direction
drawed in the graph representation
- thanks to kos, we can now load and save parameters into a file
- there is now a reset button to set all parameters to default
- there is now a GUI visual feedback on all states (checkbox items)
GPS code:
Thanks to the work of EOSBandi, we have now a working GPS code !
The navigational routines are based on the works of Jason Short
and the Arducopter team (another great open source project).
EOSBandi adapted it to multiwii.
basically, there are 2 main options for GPS: SERIAL option and I2C option.
- If you have a spare serial port AND an AtMega1280 or 2560 microcontroller
based FC, you can connect your GPS to that port and enable the serial GPS
code in the code.
Patrick introduced a way to switch automaticly between GUI message parsing
or NMEA message parsing on the same Serial port
(useful for promini because you can use the same port for GUI and GPS
in an exclusive mode)
- You can use an I2C_GPS board, which contains a secondary AtMega328 processor
with a serial GPS and runs the GPS parsing and navigational computations.
This board communicates with the FC via the I2C bus.
more info here: http://code.google.com/p/i2c-gps-nav/downloads/list
and here in this huge post: http://www.multiwii.com/forum/viewtopic.php?f=8&t=649
There is also a specific GPS_FROM_OSD option:
it's a way to use the GPS device of OSD to feed Multiwii with GPS data
MIS OSD uses this functionality
ESC calibration
experimental
It's a special #define which allows to calibrate all ESCs with exaclty
the same signal.
more info here: http://www.multiwii.com/forum/viewtopic.php?f=13&t=1517
Telemetry
new telemetry manual stepping mode
Arming option
configurable TX stick combos for arm/disarm
this way, it's possible to arm/disarm the multi via:
- one AUX switch like before
- YAW stick and/or ROLL stick
AIRPLANE mode
experimental, more info here:
http://www.multiwii.com/forum/viewtopic.php?f=8&t=364
https://code.google.com/p/multiwii/wiki/MWiiAirplane
HELICOPTER mode
experimental
more info here: http://www.multiwii.com/forum/viewtopic.php?f=8&t=1562
Dual & Single copter
experimental
more info here: http://www.multiwii.com/forum/viewtopic.php?f=8&t=1882
VTAIL mode
motor rotation has changed:
Front Left & Rear Right: CCW, Front Right & Rear Left: CW , YAW_DIRECTION=1
An attempt to improve the documentation via wiki
wiki from googlecode:
https://code.google.com/p/multiwii/w/list
wiki from multiwii.com
http://www.multiwii.com/wiki/index.php?title=Main_Page
We all know the overall documentation is still to improve :)
1.9 -> 2.0
***you need at least Arduino 1.0 IDE to open the .ino file***
Board and sensors:
New sensor:
ACC MMA7544 Accelerometer.
MAG MAG3110
New boards:
CRIUS_SE
CRIUS_LIGHT
MONGOOSE
CHERRY6DOFv1_0
DROTEK_6DOF_MPU
A new processor
Coded by ronco based on ATMega 32U4, which can be seen
as an intermediate proc between 328 and 2560, allowing
many improvements over the 328 with nearly the same size.
http://www.multiwii.com/forum/viewtopic.php?f=8&t=1145
STM32 port
A nice initiative from dongs to port multiwii to a 32bit processor.
This code allows also to reuse some cheap FC boards and replace the
firmware by a multiwii one. (boards like FreeFlight FC that can be
found on goodluckbuy site, or specific boards designed by dongs like AfroFlight32)
http://www.multiwii.com/forum/viewtopic.php?f=8&t=1193
http://code.google.com/p/afrodevices/
Stable mode
BMA180 and BMA020 settings are now set to 8G.
The settings were formerly 2G. We noticed vibrations could cause ACC saturation
http://www.multiwii.com/forum/viewtopic.php?f=8&t=849
, causing a wrong ACC measurement, and causing a wrong PITCH/ROLL angle deduction.
This problem was probably the main cause of the level drift problem.
=> level mode should be much better now with those sensors.
One consequence: TRUSTED ACC is now enabled by default and will probably
be removed in future versions.
The term D of the PID LEVEL settings is now used to limit the effect
of the level correction thanks to the suggestion of Shikra
(see http://www.multiwii.com/forum/viewtopic.php?f=7&t=905 ).
By default (D=100), the behaviour of the stable mode is unchanged.
With a lower D, effects are:
- a smoothing level change
- should prevent some wobbles of death
Altitude hold mode:
There was a lot of hit and miss about this functionality.
http://www.multiwii.com/forum/viewtopic.php?f=8&t=562
http://www.multiwii.com/forum/viewtopic.php?f=7&t=363
Things are not perfect, but thanks to Marcin we can see a huge
improvement and a working alt hold with default settings *on most setups*
There are still some oddities to solve.
***Velocity PID is not currently used in the code***
GPS mode:
http://www.multiwii.com/forum/viewtopic.php?f=8&t=649
There are now 2 GPS devices supported:
Serial GPS
which should be connected on a free Serial port of the FC (MEGA boards needed)
Must be defined in config.h
#define GPS_SERIAL 2 < - a free serial port
#define GPS_BAUD 115200
GPS POSITION HOLD and GPS RETURN to HOME are both implemented with the Serial GPS option.
I2C Serial boards
EOSBandi did some code to add a specific arduino + a Serial GPS which
communicates with multiwii via I2C.
http://code.google.com/p/i2c-gps-nav/
Must be defined in config.h
#define I2C_GPS
Position of the Home is defined once the GPS receives at least 4 satellites.
Then there are 2 GPS mode:
-ReturnToHome: when activated, the multi will go back to the GPS Home GPS coordinates.
-PositionHold: when activated, the multi will stay at its position.
The GPS mode needs:
-a very well calibrated MAG which is not disturbed by running motors.
(no current of magnetic fields influence on the MAG, otherwise,
the GPS wont work fine)
-an ACC correctly tuned for level stabilization
The principle is very simple for the moment: multiwii tries to lean
the multi in the direction of the target point, with an angle which
is proportional to the distance.
A PID setting was added in the GUI:
P = angle inclination proportional to target distance
with P=5.0 in the GUI , 1 meter = 0.5deg inclination
I is currently not used
D = max angle inclination due to the GPS correction (15 is fine to begin)
Nice vids with first working GPS here:
EOSBandi: http://www.youtube.com/watch?v=pJJKG6uWqv4
nhadrian: http://www.youtube.com/watch?v=YcLJfC4h90M
More motors/more servos/better output accuracy:
Thanks to ronco, the output.pde part was nearly rewritten from scratch.
We have now new possible combinations that were impossible before.
Better efficiency for hardware pwm: digitalWrite arduino function was
removed in order to address directly the output ports.
One consequence: motor order is no more easily configurable.
On MEGA boards: the first 6 motors are now driven by timers configured
in a 16 bit mode.
The difference is noticeable in flight for a quad.
It's a really nice improvement for MEGA boards running a quad for instance.
Extended motor range option (for use with wii-ESC; resolution 250 steps vs. 125 steps std.)
see http://www.multiwii.com/forum/viewtopic.php?f=13&t=516 for more info
On 328p based board (promini): we can now have the following configurations:
HEX (FLAT X, FLAT +, or Y6)
- with a standard receiver: in this case the 2 last motors are
on PIN A0/A1 instead of D5&D6
- or still with a PPM SUM receiver
- with 2 servos for a GIMBAL mode + 1 servo for CAM TRIG:
- with a PPM sum receiver: in this case, the 2 last motors are
on PIN D5&D6 and the servos are on PIN A0/A1/A2
- with a standard receiver: in this case, the 2 last motors are
on PIN A0/A1 and the servos are on PIN A2/D12 (no CAM trig here)
OCTO config (FLAT X, FLAT +, X8):
- with or without a standard receiver: on PINs 3,9,10,11,A0,A1,A2,12
- no servos
Config schemes are documented here:
http://www.multiwii.com/connecting-elements
New config:
- Flying wing was introduced as beta, and is now successfully tested:
http://www.multiwii.com/forum/viewtopic.php?f=8&t=594
- VTAIL
LCD
The current supported LCD are now:
- LCD_SERIAL_3W: Alex' initial variant with 3 wires serial
LCD from Sparkfun, using rx-pin for transmission @9600 baud fixed
- LCD_TEXTSTAR: Cat's Whisker LCD_TEXTSTAR Module CW-LCD-02
(Which has 4 input keys for selecting menus)
- LCD_VT100: vt100 compatible terminal emulation (blueterm, putty, etc.)
alternate GUI to any (vt-100 aware) terminal program (optionally over BT),
works for most tablets, smartphones, etc.
http://www.multiwii.com/forum/viewtopic.php?f=7&t=1096
- LCD_ETPP: Eagle Tree Power Panel LCD, which is a i2c device (not serial)
- LCD_LCD03: LCD03, which is a i2c device
http://www.multiwii.com/forum/viewtopic.php?f=8&t=1094
- servo midpoints (default 1500) user configurable via LCD
(like subtrim on computer TX) for Flying Wing and TRI
LED
An I2C LED Ring device with 12 RBG LEDs is integrated as an option
in multiwii to give more feedback about sensor states.
http://www.multiwii.com/forum/viewtopic.php?f=8&t=902
http://www.dailymotion.com/video/xmdqa9_ledringmultiwii_tech
HeadFree mode
Something similar to MK Carefree mode was added.
Firstly introduced by mahowik as a simple mode
http://www.multiwii.com/forum/viewtopic.php?f=7&t=925
A specific check box was added in the GUI to activate this mode via a switch.
You need to have a magnetometer and accelerometer on the board
Principle: The head/front will be remembered when you turn on the engines.
So it means that you can turn on/off the mode during the flight.
Pass-through mode
Its a checkbox in the GUI.
The purpose is to bypass the IMU for some configs like flying wings.
Beeper mode
Its a checkbox in the GUI.
The purpose is to activate a beeper in case you have a buzzer
installed and you lost your multi in high grass for instance.
New stick combo
for magneto calibration (throttle=up yaw=right pitch=down)
Better magnetometer calibration
The calibration of the magnetometer is now more precise,
because it takes into account the relative strength of the magnitude
projection on each axis.
Based on a code suggested by EOSBandi:
http://www.multiwii.com/forum/viewtopic.php?f=8&t=1068
It should improve the GPS return to target point accuracy.
Gyro smoothing
There are 2 options to smooth the gyros: (mainly useful for fixed wings configs)
- per axis based on a LPF: #define GYRO_SMOOTHING {20, 20, 3}
// separate averaging ranges for roll, pitch, yaw
- for all axis, based on a moving average (from Magnetron)
#define MMGYRO
#define MMGYROVECTORLENGHT 10
Servo gimbal smoothing is also an option based on the same principle:
#define MMSERVOGIMBAL
#define MMSERVOGIMBALVECTORLENGHT 32
Inflight ACC-calibration:
Its a way to calibrate the level via on flight tests.
Must be defined in config.h
#define InflightAccCalibration
Suggested by jevermeister
http://www.multiwii.com/forum/viewtopic.php?f=7&t=893
Coding specific improvements:
Less RAM memory usage via the use of PROGMEM statement
No more Arduino Serial function => the new serial communication is more efficient
Board and sensors orientation:
This was something that was not well coded at the beginning.
http://www.multiwii.com/forum/viewtopic.php?f=8&t=1259
This mod should not affect board definition (a remapping of axis was done)
About individual sensor orientation: is not the same and its normal,
there is no bug to correct here.
task state in the main loop to reduce the jitter time loop
GUI
I2C errors status display in the GUI
New AUX3/AUX4 checkboxes.
We can now have many more possibilities to activate/deactivate
a specific function (4 switch with 3 states assuming you have a 8 channels RC system)
The previous CAM1/CAM2 rc channels (that are now AUX3/AUX4) are still usable
for an assisted PITCH/ROLL gimbal system if the AUX3/AUX4 checkboxes are not used.
visual feedback on state of all of the auxN options
GUI reports the full MWC firmware version number
And of course, there is the nice version of WinGUI from EOSBandi
It is definitively more friendly than the java one,
allowing more features like load/write configs.
http://www.multiwii.com/forum/viewtopic.php?f=8&t=1229
OSD
rushduino is basically an arduino board, with OSD capabilities.
It's a very flexible solution, as it is open source,
and it plugs on the multiwii serial port to retrieve sensors info.
http://www.multiwii.com/forum/viewtopic.php?f=8&t=922
MIS OSD is also updated so that multiwii can also take GPS info from the OSD,
or the OSD can take GPS info from multiwii
1.8 -> 1.9
- some factorizations between PPM sum receiver code & standard receiver code
- EXPERIMENTAL: integration of direct SBUS receiver thanks to the contribution of Captain IxI & Zaggo
For this, you must use:
- a MEGA board
- the RX1 of the Serial 1 port
- have a way to invert the input signal.
more info here: http://www.multiwii.com/forum/viewtopic.php?f=7&t=289
- EXPERIMENTAL: integration of SPEKTRUM satellite receiver thanks to the contribution of Danal Estes
For this, you must use: