The multirotor mixer return 0 instead of the number of channels, my Hex is flying now (not reliably now, random flips

This commit is contained in:
Julian Oes 2012-12-31 16:12:55 -08:00
parent 8d1b1354e1
commit 805c08815e
3 changed files with 10 additions and 4 deletions

View File

@ -587,9 +587,9 @@ PX4IO::io_send()
cmd.f2i_magic = F2I_MAGIC;
/* set outputs */
for (unsigned i = 0; i < _max_actuators; i++)
cmd.output_control[i] = _outputs.output[i];
for (unsigned i = 0; i < _max_actuators; i++) {
cmd.output_control[i] = (uint16_t)_outputs.output[i];
}
/* publish as we send */
_outputs.timestamp = hrt_absolute_time();
/* XXX needs to be based off post-mix values from the IO side */

View File

@ -55,6 +55,8 @@
#define debug(fmt, args...) do { } while(0)
//#define debug(fmt, args...) do { printf("[mixer] " fmt "\n", ##args); } while(0)
//#include <debug.h>
//#define debug(fmt, args...) lib_lowprintf(fmt "\n", ##args)
MixerGroup::MixerGroup(ControlCallback control_cb, uintptr_t cb_handle) :
Mixer(control_cb, cb_handle),

View File

@ -56,6 +56,8 @@
#define debug(fmt, args...) do { } while(0)
//#define debug(fmt, args...) do { printf("[mixer] " fmt "\n", ##args); } while(0)
//#include <debug.h>
//#define debug(fmt, args...) lib_lowprintf(fmt "\n", ##args)
#define CW (-1.0f)
#define CCW (1.0f)
@ -213,9 +215,11 @@ unsigned
MultirotorMixer::mix(float *outputs, unsigned space)
{
float roll = get_control(0, 0) * _roll_scale;
//lib_lowprintf("roll: %d, get_control0: %d, %d\n", (int)(roll), (int)(get_control(0, 0)), (int)(_roll_scale));
float pitch = get_control(0, 1) * _pitch_scale;
float yaw = get_control(0, 2) * _yaw_scale;
float thrust = get_control(0, 3);
//lib_lowprintf("thrust: %d, get_control3: %d\n", (int)(thrust), (int)(get_control(0, 3)));
float max = 0.0f;
float fixup_scale;
@ -272,7 +276,7 @@ MultirotorMixer::mix(float *outputs, unsigned space)
if (outputs[i] < _deadband)
outputs[i] = _deadband;
return 0;
return _rotor_count;
}
void