1. The value 1500 must be replaced with a more appropriate expression.
2. The term _rc_pitch->pwm_out * _pitch_factor[i] produces to small servo movement. I need +/- 45 degrees similar to camera tilt. The idea is to preserve the desired position of the propellers when the frame is balancing.
3. The stability patch that follows in the code must be adapted.
4. Are the terms _roll_factor[i] _pitch_factor[i] and _yaw_factor[i] redundant in this case?
I was thinking about this the other day. maybe there's an easy way. If you have two side by side heli type rotors, then using 2 servo's per side, you can change the pitch ( differential ) or the collective ( together ). So with the 4 servo's you can pitch, roll, yaw and apply collective for altitude. Then the 4 ESC outputs off a standard quad configuration can control the 4 servo's without the need for mixers. This scheme in theory should give better stability because you don't have worry about propellor speed delay.
Replies
I use the KK2.1 with Steveis 1.17 pro firmware and it works pretty good with out the use of a WSM. Check it out in my video.
https://www.youtube.com/watch?v=JNfCkg8pvWw
I made some test with a modified code.
I need assistance from a developper because I am not a SD.
In AP_MotorsMatrix.cpp I changed this:
// mix roll, pitch, yaw, throttle into output for each motor
for( i=0; i<AP_MOTORS_MAX_NUM_MOTORS; i++ ) {
if( motor_enabled[i] ) {
motor_out[i] = _rc_throttle->radio_out +
_rc_roll->pwm_out * _roll_factor[i] +
_rc_pitch->pwm_out * _pitch_factor[i] +
_rc_yaw->pwm_out*_yaw_factor[i];
}
}
with this:
// Motors
i = 0;
if( motor_enabled[i] ) {
motor_out[i] = _rc_throttle->radio_out +
_rc_roll->pwm_out * _roll_factor[i];
}
i = 1;
if( motor_enabled[i] ) {
motor_out[i] = _rc_throttle->radio_out +
_rc_roll->pwm_out * _roll_factor[i];
}
// Servos; Change signs + to - for servo revers
i = 2;
motor_out[i] = 1500 + _rc_pitch->pwm_out * _pitch_factor[i] +
_rc_yaw->pwm_out * _yaw_factor[i];
i = 3;
motor_out[i] = 1500 + _rc_pitch->pwm_out * _pitch_factor[i] +
_rc_yaw->pwm_out * _yaw_factor[i];
It works but there are some problems.
1. The value 1500 must be replaced with a more appropriate expression.
2. The term _rc_pitch->pwm_out * _pitch_factor[i] produces to small servo movement. I need +/- 45 degrees similar to camera tilt. The idea is to preserve the desired position of the propellers when the frame is balancing.
3. The stability patch that follows in the code must be adapted.
4. Are the terms _roll_factor[i] _pitch_factor[i] and _yaw_factor[i] redundant in this case?
Can somebody help me out?