Tried to use Express LRS 900Mhz and found weird lag.
It is noticeable on this video
In the video I configured RC IN to directly passthrough to servo out. The ELRS is configured for 40Hz update rate. I.e. the delay should be 1/40 sec. that should not be noticeable. But in fact is feels like 1/3 second delay between RC Stick movement and servo reaction.
Asked in ELSR discord chat and found no issues with Radio/module setup.
in logs it looks like that (though I’m not sure what is RCIL log rate):
Just out of curiosity – are you using one of the four primary full-resolution channels that are updated on each packet, or an auxiliary channel, whose value is submitted once in few packets in a round-robin fashion? (Check the description of HYBRID_CHANNELS_8 at the official website).
Shorter - is 40 Hz the packet rate, or you have already compensated for hybrid switches in your speech?
I’m configured for hybrid switches, but yes here I’m using channel #3 that should be in full resolution. Also I was told by ELRS support that values for channels 1-4 are passed in each radio frame. So I’m expecting 40 Hz update rate.
Do you have ADC filter enabled in your radio? Everyone recommends switching it off for smoother response.
Which kind of UART do you use? Ardupilot complains about non-DMA ports used for CRSF, and in some setups this may indeed be harmful.
Do you have inverted/non-inverted RX and TX? For common 2.4 hardware, not having that right just stops everything, but it might be different for 900 (aka works but at reduced speed). Pay attention that the UART may be (surprisingly) pre-inverted, so you shall un-invert it through the config (this has hit me in the very beginning).
I believe I did tried with disabled ADC, but I will doublecheck that
Tried UART and USART - no difference. Now I think these two were non-DMA enabled. That’s a good idea to try DMA enabled one. @andyp1per could you please help here what would the best option? USART1 or UART7 or maybe USART6 with ALT config?
It’s F7 based MatekF765, but I didn’t use inversion. Yes I believe it will either work or don’t work at all.
@andyp1per I never tried to use debug output, but I can print some debug info into OSD. Maybe I will find some counter re missed or corrupted frames, or frame rate etc. BTW there is a CRSF v3 implementation in master, but not in Copter 4.1. Though I tried master build - there was no difference.
So I tried on USART1, and it is hard to say if it really better or it’s only autosuggestion. I think it is slightly smoother now at 40 Hz. And at 100 Hz it feels almost like FrSky. On 200 Hz it is good.
Did you ever properly get to the bottom of this? I’ve recently upgraded my quad to use ELRS and it is reacting a bit…drunk. The inputs appear very ‘steppy’ and laggy like you described.
I tried upping packet rate to 250Hz and it made no difference at all.
I didn’t played with servos on ELRS+Ardupilot setup since than. So cannot say if it resolved for low refresh rate and servos.
From the other hand I have a FC-less plane on ELRS and the reaction looks good there. I don’t think I tried low rates, but 200Hz definitely good. This is on ELRS v2.2 / 915Mhz.
Also I have a copter with same ELRS setup, again I feel no issues with control.
I was able to work out my drunk drone in the end. The rx was wired into a UART that is only for certain types of receiver. Long story short and lots of experimentation later, I wired the rx into another UART and reconfigured it within Ardupilot. Now it reacts very nicely.
I have the same kind of problem with my matek F765 wse and happymodel 2.4 elrs. I have connected the tx and rx channels of the receiver to rx6 e tx6 of matek.
Then as reported in expresslrs site under ardupilot setup, I have changed the Serial6_protocol = 23 , Serial6_baudrate= 115 an RC_OPTIONS to supprrss crsf mode. But it is still laggy.
How have you solved ?
Thank you very much in advance
Alberto
Thank you for the information. What does full DMA mean ?
I’m coming from an old APM 2.6 with 3.2 ardupilot where things were a little bit easier.
I soldered tx and rx of the receiver to RX6 and TX6 as shown in the instruction for crsf receiver.
So if have to change the values I wrote in the previous post for the serial1 instead of serial6 correct ?
I though it was serial6 because they are rx and tx 6.
Thank you very much in advance
Thank you. I have connected rx and tx of receiver to tx1 and rx1 and changed serial2_protocol to 23 but now I don’t have any feedback from the radio, indeed if I go to radio calibration and I move the sticks, nothing happens.
Have I done something wrong ?
Thank you very much in advance