the following is an idea that has been brewing in my head for some time now, and I’d like to get community feedback!
Cameras are getting more and more common on (autonomous) drones, and along with them, gimbals. The most common type of gimbal used these days is a brushless gimbal - it uses similar motors to what most UAVs do. However, they are operated in a specific way, using sinusoidal motor control to achieve precise control.
This usually requires a brushless gimbal controller. I have found that the majority of these controllers (at least the reliable ones) are very expensive and completely proprietary. There is, of course, STorM32BGC - and while I mean no ill will to the developer OlliW of STorM32, I have a few problems with it; the biggest being that while the hardware schematic is open source, the firmware is not.
My idea is as follows: design an affordable (~$50 max) open source 3 axis brushless gimbal controller board which is standards compliant in terms of MAVLink. Here are the basic requirements:
- Completely open source (hardware and software)
- 3 axis
- Reliable (of course)
- Affordably priced
For the hardware, I’m thinking to base it off of the STorM32 design and take it from there (although, make a few modifications as far as what communication protocols it handles).
As far as implementation of software:
- Some RTOS (Nuttx would probably be a nice choice, although it seems complicated, would appreciate some advice)
- Speaks MAVLink (Parameter protocol, command protocol, Gimbal protocol, maybe even camera trigger)
- Configured via MAVLink Parameter protocol.
- QGC should be able to connect to it just like to any MAVLink device, although in the long term a special tab or another program might be useful for configuration?
- MAVLink gimbal protocol for controlling the gimbal
- Of course, I’d also like to support direct control via RC/PWM, for those who need it.
I have don some research on sinusoidal control; I need to do more reading to figure out a proper implementation. However, the basic idea is just a control loop that reads IMU values and uses PID to move the gimbal to a desired position.
Brushless gimbals are the target, but it shouldn’t be too difficult to implement control for a servo based gimbal either…
Let me know what you guys think, if you would like to see something like this! The use case, while primarily for MAVLink based UAVs, isn’t strictly limited to that - it will probably work fine in other scenarios.