Reach + Ardupilot over WiFi instead of 3DR radios

  1. Firmware Image: newest with ReachViewApp: v2.5.3-r0

  2. I’m having trouble getting Reach + Ardupilot integration to work over WiFi. I’ve been able to get Reach units to communicate with eachother over WiFi, getting a Fix on the rover. They don’t seem to be outputting from the Reach to the Navio 2, however, because Gps Status2 stays at 0 within mission planner.

My Mission Planner is version 1.3.48 and Arducopter is version 3.4-dev.

Do I need to use GPS Inject, even if I don’t plan on using the 3DR radio and just do everything through WiFi?

  1. I’ve followed the Reach Ardupilot integration documentation, only changing the source of Base corrections to be over TCP rather than over UART. I’ve also attempted to do GPS inject over WiFi, but I don’t think there’s support for this? I can see data coming in and out and the green satellite data, but still no Gps Status 2 change. Some clarification on this would be nice…

  2. Here’s a diagram of my setup:

  3. I’m using a Navio 2, two Reach units, (drone with Tallysman 4721 antenna and base with 3710 antenna)

This is how you can tell Ardupilot to get GPS data from TCP:

When launching Ardupliot on Navio you can use -E switch to use 2nd GPS over TCP.

-E tcp:

On Reach set position output to TCP Server, port 9001, ERB protocol.

I would like Ardupilot to still receive GPS data over UART, but I want to pass corrections over WiFi, directly from Base Reach to Rover Reach.

I can’t seem to get that part working (Ardupilot doesn’t receive the GPS data as can be seen by Gps Status 2)

Do you have a float or a fix solution with the Rover? I do not have a system to test right now, but last one I built it seemed I could not get gpsstatus2 to even register as 1 unless I was outdoors with at least a float. I believe that to be new behavior and will confirm once I get a system back in the shop in a few weeks. I used to see gpsstatus2 = 1 whenever I had things configured correctly, even indoors. Perhaps someone else can confirm.

I had a float solution most of the time and a fix at some points, but gps status2 never moved from 0.

if i have one that is not working it is usually a typo or a single parameter i changed but forgot to write

Your startup variables are?

-A udp:
-E tcp: <- Assuming that is your ERB output port from Reach Rover

I am wondering if you are having an issue with the socket communication trying to receive on 9000 and send on 9001. Don’t know enough about the comms architecture to say for sure. Seems ReachView and RTKLib is setup for this kind of work.

And you have tweaked serial4 parameters in arducopter to match baud and protocol?

The other issue you will have, is once it’s all running, the wifi on the reach will limit your range. But I guess you could have the router on the robot.

Ok, I’ve tried sending position output over TCP, but I’m getting same results, even with switching port to 9001.

Is it possible to send corrections over WiFi (from Base to Rover) and then the position output of the Rover Reach over UART to the Navio 2 and then see this change the GpsStatus2 within Mission Planner? That is my end goal, so it should be as simple as setting -E /dev/ttyAMA0, and position output on Rover to be over UART, correct? Has anyone gotten this specific setup to work?

Even when all of the devices are within 2 meters of one another, I’m still not able to get GpsStatus2 to change, so I don’t think range is the issue. The router is not on the rover but will be on the ground.

I am using all WiFi and use mission planner to inject. But I don’t see why your approach would not work over short range.