Servers by jDrones

Introducing Hybrid Project


(tridge) #41

I’ve replied on the other forum post


(Ryan Pope) #42

Notes from most recent test flights:

  1. Suspect compass still unhealthy despite moving GPS /MAG to very tip of wing

  2. Abrupt pitch-up upon reaching ARSPD_FBW_MIN in transitions.

  3. Lots of interference from IC engine? Could be contributing to multiple issues?

Sample Flight Log: 0004.BIN

OK, Compass. I moved the whole unit to the very tip of an ugly, but functional RH wing I had laying around. Routed wires in twisted pairs to the FC.

New photo by Ryan Pope

Re-calibrated compass offsets in the middle of a field, still not great numbers:

X -396
Y 148
Z -31

Observing mag level on the Mission Planner tuning page shows a relatively stable base line of around 700 (isn’t that really high?) It fluctuate between ~620 - 800 under quad power and in flight.

Visually, the telemetry suggests that the aircraft is far more aware of its magnetic orientation. Yaw commands in hover are noticeably better, and auto transitions to initial waypoint seem accurate. Still see pretty bad toilet-bowl in Q_LOITER take-off. I’m not sure how to quantify the improvement (or lack thereof) in the logs so if anyone could shed some light on the that it would be much appreciated.

Pitch-UP Issue :

This is a recurring issue that is always there but often so bad in wind that the aircraft almost goes vertical.

The log posted above and these screen shots below likely paint a better picture than I can describe with words.

As far as I can tell, the pitch is an entirely un-commanded output on channel 2 (and 10 - not shown).

That interference on the last screenshot is quite troubling and leads me to my final note:

**Gas Motor Interference and/or Ground issues?

The RH tail servo used to jitter when the gas motor started (I suspected ignition noise), but that went away with shielded servo wire.

Could noise in the long tail servo wires show itself in the RCout as seen in the logs? Or is that different issue form within the FC?

As usual, any help is appreciated, I’ll keep poking around in the meantime.

Till next time,

Ryan


Near crash amidst multiple "EKF yaw reset" messages. Logs inside
(Ryan Pope) #43

Hi Sam, (@JeffBloggs) Thanks for this information. I purchased a couple RFD900x 's to experiment with.

Currently have them hooked up as peer to peer (sik) radios and they are working as expected.

I also have the PPM pass-through working on the ground. Tested via a Taranis and Spektrum Dx8 trainer port. (both 3.3v PPM) in Manual mode the latency is noticeably worse and possibly a bit “notchy” using either radio TX. I am using the default Mavlink settings per the RFD900 configuration tool with the correct GPIO boxes checked for PPM in and out.

Do you experience this latency? (sorry, no scope data) any suggestions on modem settings? I cant find much information on the RFD900x and PPM.

I like your wireless GS idea and will likely pursue something similar.

Thanks again,

Ryan


(Sriram Sami) #44

Hi there, I was looking to implement the prop alignment idea that @rallyon mentioned previously here, but I wanted to check if there’s already Arduplane 3.8-compatible code that does this?


(Shane Roberts) #45

I am an armature coder at best but I did get the prop alignment implemented on Plane 3.7 and working well.

When we moved to 3.8 it stopped working and I haven’t had time to figure out why.

Here is a Change Log for what I added to the code in 3.8 which DOES NOT currently work.

(It is basically the same code I added to 3.7)

Would love help implementing this feature correctly.

-Shane

quadplane.h

Line # 271
Added:
// timers and const for propeller alignment //***** Hybrid Project *****
uint32_t propalign_pulse_ms;
float propalign_state = 0;
float propalign_pulse_current = 1;
const float propalign_number = 5;
AP_Int16 propalign_pulse;
const float propalign_gap = 500;

Line # 287
Changed:
enum {
TRANSITION_AIRSPEED_WAIT,
TRANSITION_TIMER,
TRANSITION_ANGLE_WAIT,
TRANSITION_DONE
} transition_state;
To:
enum {
TRANSITION_AIRSPEED_WAIT,
TRANSITION_TIMER,
TRANSITION_ANGLE_WAIT,
PROPELLER_ALIGN, //***** Hybrid Project *****
TRANSITION_DONE
} transition_state;

quadplane.cpp

Line # 397
Added:
// @Param: P_ALIGN_PULSE
// @DisplayName: Propeller alignment pulse ms
// @Description: Length of alignment pulse in milliseconds.
// @Units: pulses
// @Range: 0 5000
// @Increment: 1
// @User: Standard
AP_GROUPINFO(“P_ALIGN_PULSE”, 57, QuadPlane, propalign_pulse, 750),
Line # 1216
Changed:
if (is_tailsitter()) {
if (transition_state == TRANSITION_ANGLE_WAIT &&
tailsitter_transition_complete()) {
GCS_MAVLINK::send_statustext_all(MAV_SEVERITY_INFO, “Transition done”);
transition_state = TRANSITION_DONE;
}
To:
if (is_tailsitter()) {
if (transition_state == TRANSITION_ANGLE_WAIT && /Hybrid Project
tailsitter_transition_complete()) {
transition_state = PROPELLER_ALIGN;
}

Line # 1277
Changed:
case TRANSITION_TIMER: {
motors->set_desired_spool_state(AP_Motors::DESIRED_THROTTLE_UNLIMITED);
// after airspeed is reached we degrade throttle over the
// transition time, but continue to stabilize
if (millis() - transition_start_ms > (unsigned)transition_time_ms) {
transition_state = TRANSITION_DONE;
GCS_MAVLINK::send_statustext_all(MAV_SEVERITY_INFO, “Transition done”);
}
To:
case TRANSITION_TIMER: {
motors->set_desired_spool_state(AP_Motors::DESIRED_THROTTLE_UNLIMITED);
// after airspeed is reached we degrade throttle over the
// transition time, but continue to stabilize
if (millis() - transition_start_ms > (unsigned)transition_time_ms) {
transition_state = PROPELLER_ALIGN; /Hybrid Project
}

Line # 1318
Added:
case PROPELLER_ALIGN: { /Hybrid Project
if (propalign_pulse_current > propalign_number){
transition_state = TRANSITION_DONE;
GCS_MAVLINK::send_statustext_all(MAV_SEVERITY_INFO, “Transition done”);
propalign_pulse_current = 1;
}

     if (propalign_state == 0 && millis() - propalign_pulse_ms > (unsigned)propalign_gap){
     propalign_pulse_ms = millis();
     propalign_state = 1;
     motors->set_desired_spool_state(AP_Motors::PULSE_ON);
     motors->output();
     GCS_MAVLINK::send_statustext_all(MAV_SEVERITY_INFO, "pulse");
     }
     
     if (propalign_state == 1 && millis() - propalign_pulse_ms > (unsigned)propalign_pulse){
     propalign_pulse_ms = millis();
     propalign_state = 0;
     propalign_pulse_current ++;
     motors->set_desired_spool_state(AP_Motors::PULSE_OFF);
     motors->output();
     GCS_MAVLINK::send_statustext_all(MAV_SEVERITY_INFO, "off");
     }
     
     break;    
 }

AP_Motors_Class.h

Line # 90
Changed:
enum spool_up_down_desired {
DESIRED_SHUT_DOWN = 0, // all motors stop
DESIRED_SPIN_WHEN_ARMED = 1, // all motors at spin when armed
DESIRED_THROTTLE_UNLIMITED = 2, // motors are no longer constrained by start up procedure
};
To:
enum spool_up_down_desired {
DESIRED_SHUT_DOWN = 0, // all motors stop
DESIRED_SPIN_WHEN_ARMED = 1, // all motors at spin when armed
DESIRED_THROTTLE_UNLIMITED = 2, // motors are no longer constrained by start up procedure
PULSE_ON = 3, // turns motors on without ramp
PULSE_OFF = 4, // turns motors off without ramp
};

AP_MotorsMulticopter.cpp

Line # 469, 502, 549, 589, 621
Added:
//Hybrid Project
if (_spool_desired == PULSE_ON) {
_spool_mode = THROTTLE_UNLIMITED;
break;
}
if (_spool_desired == PULSE_OFF) {
_spool_mode = SHUT_DOWN;
break;
}


(Sriram Sami) #46

Thank you very much Shane, I’ll take a look at it in a couple days :slight_smile:

When you said it doesn’t work, do you mean that the pulses don’t trigger at all?


(Shane Roberts) #47

The pulses trigger but we can no longer control their length.

It is like there is a minimum interval that the quad motors can be turned on and off in 3.8 that was not present in Plane 3.71.

-Shane


(Shane Roberts) #48

Tridge,

Last year you offered a lot of valuable advice on our hybrid VTOL project which was very much appreciated.

We have made a lot of progress on our engine management system and would like to further integrate it with Ardupilot.

It seams the best way to do this would be to connect via UART (serial 4) or MAVLINK then add a driver similar to those used for range finders to import engine and electrical system telemetry. We would like to log that information on pixhawk as well as sending it back to the GCS for monitoring.

Do you think this is the right approach?

Also, I am an armature coder so do you know of anyone that might help with the process?

-Shane


(Ted) #49

I like this design! The specs are impressive and the fabrication is top notch.

@rallyon @Shane_R
I suggest moving the compass as far away from carbon fiber as your design will allow.

Carbon fiber is conductive so you may consider each strand to be an antenna. This phenomenon will skew the readings from the sensor since the carbon fiber is 1) physically in the path of the Earth’s field that you are attempting to sample, and 2) echoing the EMI emanating from your avionics bay.

Ted


(Ryan Pope) #50

Hello, just dropping in to give a quick update of what we have been up to over the winter:

  • We switched to The RFD-900x for RC and telemetry as suggested by @JeffBloggs ( Thanks! I considered it in the past, but did not realize the “x” version supported PPM pass-through) It added a small amount of latency, haven’t measured it, but the telemetry has been rock solid so far.

  • Moved a stand-alone magnometer (HMC5983) to the nose of the aircraft and compass issues have ll but disappeared. I’m still using the internal compass as a secondary, and sometimes get a compass variance message on Q takeoff, but it auto performance is very good. We will likely make our own board combining the airspeed and the mag since they are both I2C and conveniently near each other in the nose.

  • We manufactured our own pito-static tube / main battery disconnect. Shane’s idea and design and it is awesome! The idea is that it facilitates our future water resistant goals, at time same time it is extremely convenient. You pull the tube to connect the main power bus, and push it to disconnect. This has the added benefit of a easy to hit kill switch that will auto activate on any nose first incident/accident. Safety!

Thanks for all the input. Until next time…


(James Pattison) #51

Noting the length of the i2c cable run, if you’re going to make a custom board, I’d suggest taking it a step further and making it canbus.


(David Kaden) #52

ProfiCNC is releasing a combined airspeed/mag board on CAN soon. (see the PH2 facebook group)

How long is your I2C cable now?


(Ryan Pope) #53

I2C currently is about 24" long (shielded wire) and no real noise issues in telemetry data (haven’t scoped it). Only airspeed and external mag on it.


(***) #54

Ryan,

That pitot tube idea is a brilliant idea, especially in the event of a nose down crash that could very well save a lot of components from getting burned up, great design. Also nice looking website!!


(Marc-Antoine SALMON) #55

Congratulations guys !! It is absolutely beautiful.

I just read a previous post about your ICE starter, but I wanted to know a bit more about the parts you used. Typically, I was wandering what is the power of your ICE and what is the embedded starter you used ? :smiley: :airplane:
Thanks in advance for your answer !

Marc