I know, the world probably has enough flying machine projects, but here is yet another one. AutoQuad's original design goal was high precision autonomous flight. It took five prototypes before I was happy with the hardware. The current prototype, AQv5, is showing very promising results. In fact, there is little left to do before this first goal can be checked off the list. Using this as a solid base, I intend to continue research, design and experimentation toward vision based navigation for indoor and outdoor use.
Hardware:
- 2" x 2" board with same mounting pattern as the MK FC
- Input voltage ~7.5v => 18v
- High efficiency DC/DC converters
- STM32F103 32bit Cortex M3 microcontroller @72 MHZ
- standard ARM 20 pin JTAG header for real-time debugging
- up to 8 PWM ESC motor control (prefer Turnigy ESC's with custom firmware)
- 2 powered payload servo controllers
- optional ultra sonic range finder
- Spektrum satellite (remote receiver) 2.4Ghz RC radio
- uSD card slot
- optional onboard uBlox LEA-XX module w/battery backup & timepulse capture
- optional female SMA connector for active GPS antenna
- optional external GPS via standard 6 pin connector (EM406, EM401, uBlox, MTK)
- optional onboard xBee module - up to 300mA (2.4Ghz, 900Mhz, bluetooth, etc.)
- optional external radio via standard 6 pin FTDI connector - up to 1A
- I2C bus connector for I2C ESC's
- modular sensor board (SBv5) - 100% analog sensors, EMI hardening:
+ 3 axis acc (ADXL335)
+ 3 axis mag (HMC6042 & HMC1041Z)
+ 3 axis gyro (IDG500 & ISZ500)
+ 2 temperature sensors
+ pressure sensor (MPXH6101A)
+ battery voltage
Software:
- Fully threaded RTOS design written in C - 60% idle
- All sensors read at 113KHz (~1.4M sps total)
- 450Hz motor update rate
- 200Hz attitude, 3D velocity / position solutions
- Full downlink telemetry
- Detailed system state dumps @200Hz => uSD card w/FAT32 FS
- Quaternion based attitude filter additionally producing rotation matrix and Euler angle outputs
- All math in single precision floating point
- Temperature compensated and calibrated sensor suite
- Custom ground station software w/bi-directional command and control API
- Cascading PID control system, velocity based for smooth transitions
- Auto land / takeoff
- Hover position / altitude hold
- Autonomous waypoint mission navigation
- Precise altitude hold indoors
Example of current capabilities:
Design philosophy:
- High performance
- Efficiency
- Ease of development
- Consistency / Repeatability
- Low cost
There is always room for improvement. For instance, I would like to see how much of a benefit using a SPKF (Sigma Point Kalman Filter) would be over my fixed gain navigation filter. Looking forward to the new Cortex M4 uC's with a hardware FPU so that any such math intensive solution can be more easily handled. As I mentioned above, there is a lot of room for work with vision navigation and SLAM. Also interested in propulsion efficiencies which with an eye toward higher endurance. Although the PID based control system works extremely well, I'm interested in exploring different types of MPC (model predictive control) to reduce control costs and increase precision.
I'm wondering if there is anyone interested in joining forces to work on some of the above mentioned or anything else along these lines that presents itself. This is only a hobby for me and I currently have no profit motive. This is definitely not a beginner's project as you can see by my sloppy SMD hand soldering job.
Comments?
Comments
Bill, what is the f factor in the derivative component?
Perfect ,Bill !!!
Can we use standard PWM ESCs ?
Maximus
Hi Bill, anyone watching your video and knowing "a little" about multicopters should be impressed !
What a precise flight !
Greeeeeeeat job !
I've not seen if you plan the tilt/roll compensation of the camera mount ? Did you ?
Once you have some ready boards, I am in !
Bravo again !
Maximus
Hi,
Very nice project, and smooth fly. Congratulations!
I have a question: you said that sensors datas are collected at 113khz. This is much higher than the refresh rate of the gyros that I understood to be at 140hz. Did I miss something or is there any reason why high speed rate is used ?
OlivierRobero,
Yes, that is a RTOS file that is part of the Crossworks platform. Their license would not allow me to release it. You can get a free trial of their IDE here.
Hi Bill,
i try to compile your code , but i dont found ctrl.h include file in your project ... what about the ide that you use and the other lib that i need to try to compile your code.
Regards
Roberto
Nice work Bill,
I knew by the quality of the video (you used a tripod) you were all about quality. I had a look at your source code and was quite impressed. This will give me the motivation to dust off my STM32Discovery evaluation board and learn more about the ARM. I've been playing in the shallow (8 bit) end of the pool far too long.
Just going through the source code gave me some ideas for solving an Xbee communications problem on a final project here at school. I do hope you decide to make this project available for the rest of us when you decide it is to your liking.
Good luck with this and you need not reply to this post.