Hi all,
I’ve been experimenting with a control concept where horizontal movement is commanded via acceleration targets (X/Y) to improve system responsiveness, while vertical movement is controlled via absolute position (Z). This approach is useful for external guidance systems or reinforcement learning controllers that issue force-like commands for quicker dynamic response.
To test this concept, I created a prototype mode in ArduCopter called AccelXY_PosZ by extending the Guided mode.
Summary of what I implemented:
- A new GuidedSubMode: AccelXY_PosZ
- Modified
ModeGuided::set_mixed_accelpos()
to:- Accept X and Y acceleration targets (in m/s²)
- Accept a Z position target (in cm)
- Set yaw / yaw_rate optionally
- Sets PosControl target values accordingly
- Ignores velocity and Z acceleration
- Logs are written using existing
Log_Write_Guided_Position_Target()
API
Here is the prototype branch:
Questions:
- Is there a preferred way to structure this kind of control mode?
- Is there interest in the community for enabling more flexible control over the
type_mask
settings in guided mode messages?
Appreciate your time and looking forward to your thoughts!
Thanks,
Portes