I want to creat LUA’s script which allows me to overwrite pwm after failsafe. I’m looking for way where i can find information how can i read messages from pixhawk or read mavlink, or something else which can help me to figure it out
What I mean is some receivers handle failsafe (loss of signal) differently.
Some hold channels as they are
Some cease all outputs
Some have a completely configurable output (eg: reduce throttle, pitch down, roll left) or no output
So you will have to determine what your receiver does, maybe configure it to no output, and work your LUA scripting (reading PWM from an input and writing PWM to another channel) based on that.
Also the throttle failsafe value in Ardupilot is for an INPUT - that is “what PWM value on the throttle RC input is deemed to be lost signal” . It’s not something Ardupilot outputs under a failsafe condition.
To be more precise. My transmitter is MX16 pro (foxtech),
I’m looking for solution only for RC lost, after lost of communication my receiver hold channels as they are.
After RC failsafe I want to set PWM output for my gimbal and extra payload.
Reciver is connected to pixhawk via SBUS.
In first idea i want to read pixhawk messages and after find failsafe word, I want to trigger my lua script. But as I know lua can’t read this kind of message or I can’t find solution for it.
If your receiver holds all channels and gives no indication of signal loss (such as reduced or zero output on throttle channel) then you REALLY need to look at using a different receiver.
If it does indicate signal loss in some way (such as throttle channel) then the LUA script above should be adaptable for your purpose.
What does your transmitter/receiver actually do in the event of signal loss?
Connect up to MissionPlanner with the transmitter turned on, go to the RC Calibration page - observe what happens when you switch off the transmitter.
EDIT
Foxtech manuals specify that a receiver exists and it works off 7.2 volts or more but that’s it - not any details on binding or failsafes or anything other than some antenna position basics.
See if you can get more information from them.
SBUS has this data format, including indication of failsafe
SBUS header (0x0F)
16 servos (11 bits each) packed together into 22 bytes.
Final byte showing if failsafe activated, plus channels 17,18
SBUS final byte (0x00)
So a receiver wont necessarily alter any of the “servo” channels, such as dropping the throttle channel.
This could depend on your transmitter/receiver combination and the manufacturer.
The Frsky and other brands have procedures to specify “no pulses” or different actions on signal loss, so maybe if Foxtech have more detailed documentation that might help.
Unfortunately I cant see how Ardupilot indicates radio failsafe in any way that’s detectable to the outside world - except via mavlink and a separate telemetry radio, which is not appropriate in this case.
It could be possible to detect the RC failsafe by LUA scripting, but I don’t know how myself.
There’s been a couple of feature requests for similar things, like setting a servo PWM for some failsafe, but none have ever progressed so far.
I can certainly see how that would be useful though.
Hi @Pimpelpimpel did you happen to find a way to receive RC failsafe at the lua script? I also need to do something similar and I could not find a way.
But i think you can check differences of some chanels in time, and if it stop for several seconds you can get failsafe in your code, but it is not perfect solution
What about the telemetry link? I know that mp monitors gcs connection with a watchdog i suspect, you can select in failsafe modes to trigger rtl from either rc link drop out or gcs dropout separately, so even if your mx16 is holding last state for all the sbus data the flight controller should still trigger rtl from loss of gcs link? This is how i do it with lte link, i only use rc to takeoff and land line of sight, once im loitering above i turn off my transmitter and plug it in as a joystick input throught usb trainer port dongle and fly through mavlink,