I'm pleased to announce that we've joined forces with the other Arduino-based powerhouse in the aerial robotics world, the AeroQuad quadcopter team, to extend the ArduPilot platform to whirlybirds of all kinds. The project, called ArduCopter, will use the ArduPilotMega and IMU shield hardware along with a low-cost custom platform that will be available commercially to provide a full quad UAV with both stabilization and GPS waypoint navigation. It builds on the awesome work of Jose Julio in ArduPilot quad development, with the excellent full-systems integration of the AeroQuad team. We expect that first code and hardware will be available this summer.
And here's the impressive work of the AeroQuad team:
Another team is also extending this to traditional helis, starting with the Trex 450 heli (and its equivalents), which should be ready for release this fall. Along with Blimpduino, this should make for 100% coverage of all aerial robotics platforms on the Arduino platform, with shared libraries and ground stations across projects. Go Arduino!
We'll be setting up a proper microsite here, along with dedicated tab, for the project in the next few days.
If you haven't already seen this preview of what the ArduPilot/ArduIMU combo can do with quads, check this out:
And here's the impressive work of the AeroQuad team:
Here's the announcement from the AeroQuad team:
ArduCopter - The Full Featured UAV Multicopter!
Hey guys, as many of you know the AeroQuad has teamed up with DIY Drones on developing a very full featured multicopter! Chris from DIY Drones has proposed the name of this new effort to be called the ArduCopter! It will be based on the ArduPilot Pro Mega (APM) and the APM sensor board currently nicknamed the Oil Pan. Here's an initial feature list and software road map. Please chime in! Your input is valuable! I'll keep updating this front page until we agree on the first version of the ArduCopter's capabilities.
ArduCopter Feature ListSoftware Roadmap
- 6 Degree of Freedom IMU stabilized control
- Gyro stabilized flight mode enabling acrobatics (loops and barrel rolls)
- GPS for position hold
- Magnetometer for heading determination
- Barometer for altitude hold
- IR sensor integration for obstacle avoidance
- Sonar sensor for automated takeoff and landing capability
- Automated waypoint navigation
- Motor control using low cost standard PWM Electronics Speed Controllers (ESC's)
- On board flight telemetery data storage
- Mounted camera stabilization capability
- Wireless command & telemetry for long distance communication
- Capability to fly in "+", "x", hexa and octo configurations
- Battery level detection
- User configurable LED flight pattern
- Capability to use any R/C receiver
- ArduCopter Configuration and Ground Control Software
- Realtime graphs of flight data
- GUI for configuration of PID and other flight parameters
- On Screen Display integration
- Waypoint programming using Google Maps
- Mixertable view to auto configure "+", "x", hexa and octo configurations
- Initial baseline using Jose Julio's v3 software
- Provides absolute angle PID flight control
- Obstacle avoidance
- Waypoint navigation
- Generalize basic ArduCopter functions (ie. Separate PPM receiver input and motor control functions into separate libraries. Allows future coding of PWM vs. I2C ESC's)
- Emphasis on developing new capability into easy to use C++ libraries
- Integrate user defined EEPROM storage capability
- Develop/optimize AeroQuad serial real-time command/telemetry for ArduCopter
- Integrate AeroQuad Configurator for external software configuration of ArduCopter
- Rename Configurator to Ground Control Station and integrate graphical programming of waypoint navigation
- Integrate AeroQuad rate PID control
- Integrate mixertable configuration for multicopter configurations
- Integrate AeroQuad camera stabilization
- Integrate I2C motor control
- Develop capability to wirelessly control ArduCopter directly from Ground Control Station (USB joystick controller from laptop or through waypoint programming)
Comments
Regular PID regulator
Stable mode (Attitude_control_v3):
PI regulator,
bias correcting output,
multiplied with STABLE_MODE_KP_RATE_XXXX (D value in configurator stable mode)
Öncü, hmm it should not be like that. Maybe you have some problem with your propellers/motors eg overall thrust. It sounds that you don't have enough authority from props on lower rpms. Any ideas how low those rpms are and can you lift your quad properly with low rpms?
I will discuss with our algorithm guys about your code proposal. You need to remember that Acro and Stable mode are totally different, While Acro uses only gyros, Stable uses gyros/accels and does computation totally different ways.
For future, these proposals would be good to upload on our Issue tracking system at http://code.google.com/p/arducopter/issues/list that way we can track better different issues
"At high rpms quad is getting more stable. At low rpms (when taking off or landing) it is quite unstable.
"
this is why planes using flaps when landing. More stress at wings when low speed = stabilization :) but i have no idea for copters xD i must learn something about quad stuff :)
For stable mode control equation is like this:
control_pitch = D . ( P . error ( t0 ) + I . Sum ( error ( t ) ) - Omega )
So if you set D = 0 you are controlling nothing.
It is not impossible but hard to adjust PIDs for this equation. Maybe if we write the equation like
control_pitch = P . error ( t0 ) + I . Sum ( error ( t ) ) - D . Omega
*******************************************************************************************************
replacing
err_pitch = stable_pitch - ToDeg(Omega[1]);
control_pitch = STABLE_MODE_KP_RATE_PITCH*err_pitch;
with
err_pitch = stable_pitch - ToDeg(Omega[1]);
control_pitch = stable_pitch - STABLE_MODE_KP_RATE_PITCH*ToDeg(Omeg[1]);
*******************************************************************************************************
adjusting PIDs will be easier. Good side of open software :)
Perhaps this could be automated...
There is no any really easy way to do it. Reason why AR.Parrot is so stable is that every single unit is 99.5% same so they have tested and tested PID settings until they were perfect. That's the same thing what we are doing in ArduCopter and also why we are creating ArduCopter frame, motors, propellers, electronics and escs.. To have identical or almost identical quads for people.
Like said, there is no easy way to do it. Every time when I start doing it, I start working with one value, change it, test it, change it, test it and so on.. If I see that quad get's unstable or having other weird behavior i will go one or few steps back. Then I continue working with another value.
And now that we just changed how stable mode works few revisions ago, all new methods has to be learned again.
Best suggestion is that start working with values that are default, on P/D values you can go -+ 0.5 steps, I values less.