Navio2 & Reach RS+, GPS and Compass problems

For almost a year I have been trying to get Navio2 connected for my Robot. I have 2 of them, a Reach M and 2 Reach RS+. My current setup is a Reach RS+ as a base station. One RS+ connected to a Navio2 and the Navio2 connected to Reach M for another robot. It has been more than frustrating. Each time i invest a day or so, hit a wall and put it back on the shelf. The problems have varied and below are the latest attempt.

I’m going to give this one last try and I obviously need some help. :slight_smile: In this attempt i’m starting from scratch and cannot get it to work because of two problems:

  1. I’m unable to get the Reach RS+ connected to Navio2 via USB.
  2. The compass is all over the place when operating. So can’t use the compass for navigation.

For the purposes of a complete picture i’ve mentioned both problems but i’m going to focus on problem 1 for now.

I was starting with a fresh rpi image that i installed in Jan of 2020. It’s the one from November of 2019 (latest as of now). I’m operating on a rover so i’m using Ardurover.

Problem 1 - Navio2 + Reach RS

I have followed a couple of sets of instructions for this and tried every combination. The problem is Reach is not making it to ArduPilot. Below is my current setup.

Reach RS+:
Position Output
Device: USB-to-PC
Baud Rate: 38400
Format: NMEA

Ardupilot:

My /etc/default/ardurover

TELEM1="-A udp:192.168.2.52:14550"
#Reach RS via USB.
#-A - serial 0 (always console; default baud rate 115200)
#-C - serial 1 (normally telemetry 1; default baud rate 57600)
#-D - serial 2 (normally telemetry 2; default baud rate 57600)
#-B - serial 3 (normally 1st GPS; default baud rate 38400)
#-E - serial 4 (normally 2nd GPS; default baud rate 38400)
#-F - serial 5
TELEM2="-E /dev/ttyACM0"

# Options to pass to ArduPilot
ARDUPILOT_OPTS="$TELEM1 $TELEM2"

Output from my dev directory

a snapshot of screen /dev/ttyACM0

My Parameters from Ardupilot:

Result:

And there is no GPS reading for the vehicle at all. it does not show on the map.

image

image

At one point i had the built in GPS working but that has since stopped working. I have modified so many things trying to get this to work that it’s possible several things are wrong at this point. Any help is much appreciated.

-B

Hi @beeeeee,

Thanks for such a detailed description of the setup! As I can see from screenshots, RPi is getting the data over a USB port in NMEA format which means that everything is fine with this part of the system.

Let’s try to check other settings in more detail.

May I ask you to run the sudo systemctl status ardurover and post the output here?

Also, could you please check the GPS2 Status in Mission Planner? Reach is usually defined as a 2nd GPS.

Hi @tatiana.andreeva,

Thanks for getting back to me. Here is the output from the running sudo systemctl status ardurover

Something seems odd here with the Active uptime. I just started this up about 5 minutes before i ran this command so there’s no way it has been up for 1 day and 22 hours.

pi@toro:/dev $ sudo systemctl status ardurover
● ardurover.service - ArduPilot for Linux
   Loaded: loaded (/etc/systemd/system/ardurover.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2020-05-04 21:29:30 BST; 1 day 22h ago
     Docs: https://docs.emlid.com/navio2/navio-ardupilot/installation-and-running/#autostarting-ardupilot-on-boot
 Main PID: 396 (sh)
    Tasks: 8 (limit: 2076)
   Memory: 19.9M
   CGroup: /system.slice/ardurover.service
           ├─396 /bin/sh -c /usr/bin/ardurover $TELEM1 $TELEM2
           └─398 /usr/bin/ardurover -A udp:192.168.2.52:14550 -E /dev/ttyACM0

May 06 19:37:31 toro sh[396]: $PGCMD,16,0,0,0,0,0*6A
May 06 19:37:31 toro sh[396]: $PSRF100,0,38400,8,1,0*3C
May 06 19:37:33 toro sh[396]: [5B blob data]
May 06 19:37:33 toro sh[396]: [37B blob data]
May 06 19:37:33 toro sh[396]: $PGCMD,16,0,0,0,0,0*6A
May 06 19:37:33 toro sh[396]: $PSRF100,0,38400,8,1,0*3C
May 06 19:37:34 toro sh[396]: [5B blob data]
May 06 19:37:34 toro sh[396]: [37B blob data]
May 06 19:37:34 toro sh[396]: $PGCMD,16,0,0,0,0,0*6A
May 06 19:37:34 toro sh[396]: $PSRF100,0,38400,8,1,0*3C

While doing this i checked to make sure the NMEA input is still coming through and it is.

Regarding the GPS2 status, i’m using a mac so no Mission Planner but the screenshot in the post above has the GPS status. It’s detecting 0 GPS. Is there something else I can provide to give more insights?

Thanks,
-B

Progress…

To make sure Mission Planner doesn’t have some magic that qgroundcontrol doesn’t have I found my old Microsoft Surface which had Mission Planner. I had the opportunity to verify something i already suspected. This sudo systemctl daemon-reload does not restart the ardurover service anymore. It use to on my previous RPi image. I could tell because my connection to QGroundControl would drop for a few seconds.

When I had to switch to the Windows machine I had to update the /etc/default/ardurover file with the new IP address. I then ran sudo systemctl daemon-reload and nothing happened. It was still connected to the first machine. When i ran sudo systemctl restart ardurover it actually restarted the service and took not only the new IP but also some parameters i was trying to change to test.

This tells me that whatever command is initiated when I “Reboot Vehicle” from my Ground Control Station (qgroundcontrol) or running the documented command, it’s not actually restarting the service. So the hours (days) that i have been trying to change settings and reboot the vehicle it hasn’t been working. Many of the parameters do not require a reboot but most all GPS ones do. Now that i have a command line workaround I can test and get real results. I’ll keep testing.

-B

Problem 1: sudo systemctl daemon-reload doesn’t actually restart the ardupilot service

Hi @beeeeee,

Thanks for pointing this out! We’ll look into that.

As far as I remember, the QGC doesn’t support 2nd GPS.

May I ask you to post the screenshots of GPS2 statuses from MP?

Hi,
had also various communication issues relating to UDP to start with. (Using Ubuntu, APM Planner2 or Q-Groundcontrol,…whichever works best for task at hand).
I fixed the whole issue by using TCP instead. However, it took me weeks to realise the different approach which is required: UDP - you enter the IP of the groundstation. But,…when using TCP you must use the IP of the drone/vehicle and making sure the actual port is open. (This is done within your groundstation after you have the IP of the drone/vehicle). Also make sure UDP is not active in the Arducopter, Ardurover, or whatever “Ardu…” config file your are using.
As to Mission Planner: I’ve got it successfully running in Ubuntu using “Wine”. This is also available for Apple. However, whilst all the regular functions are working the log retrieval doesn’t due to the way file management is done in Ubuntu /Linux.
Hope this helps.

Further to my earlier remark I’ve noticed you have both TELEM1 and TELEM2 active in your config file. I experienced communication problems when activating two settings at once. Hence would recommend only using one until communication works.
Also in regards to TCP connection: Besides setting up your ground station to talk to your vehicle/drone by using its IP address and port, you also have to enter details in your config file.
TELEM1="-A tcp:0.0.0.0:14690"
This will open port 14690 (just an example, you can use your own port number). The zeros will ensure the vehicle/drone will listen on all available IP’s for communication. This is important when your router or vehicle/ drone re-starts and a new IP might be assigned.

Hi @tatiana.andreeva,

I verified that the GPS data shows in screen before taking the screenshot. I don’t know where I would see the second GPS in MP but I checked the Status area in the bottom left and it’s show gpsstatus2 equal to 0 and “No GPS” listed above that in the instruments area.

@kschoelpple Thanks for the info and details on the setup of TCP. I’ll give that a try if I can’t get it going with UDP. Regarding TELEM2, that’s the GPS that I’m trying to setup. The communication works fine for TELEM1 which is my ground control station config, even over UDP. I just can’t seem to get the second GPS data to flow into ArduRover.

Thanks,
B

As i mentioned in my first post, I have a couple of these. With my second one, I decided to upgrade to the latest image and reconfigure. I have that Navio2 connected to a a Reach M+. I can confirm ‘sudo systemctl daemon-reload’ does not not appear to restart the ardurover service and does not load the configuration. However, using the Reboot Vehicle function from QGroundControl works as expected.

Hi @beeeeee,

Thanks for the screenshot!

I’ve checked all your settings once again. May I ask you to try setting up the GPS_TYPE2 parameter to 5 (NMEA) and check if it helps?

@tatiana.andreeva,
I tried that. It does seem to make a difference in the startup. It indicates that GPS2 was identified as NMEA but i’m not getting any reading from it. In fact I had it setup that way in my last post with the Mission Planner screenshot.

Thanks,
-B

@beeeeee,

We’ll try to replicate your setup from scratch to find out what may go wrong.

Currently, may I ask you to try another baud rate, 115200? You should change it in the following configurations:

  • Position Output in ReachView
  • Serial4 baud in Mission Planner

Thanks @tatiana.andreeva,

Unfortunately, still no difference.

@tatiana.andreeva,

Were you able to replicate the setup? If so, is it working?

Thanks,
-B

Hi @beeeeee,

Sorry it took so long to get back to you. We’re working remotely now and it’s taking time to get all the necessary equipment in our hands.

We’ve reproduced the setup and it seems you need to configure the following parameters in MP:

  • SERIAL4_PROTOCOL = 20 (NMEA Output)
  • SERIALL4_BAUD = 57 (the baud rate you set up in RV)
  • GPS_AUTO_SWITCH = 1
  • GPS_TYPE2 = 5 (NMEA)
  • GPS_INJECT_TO = 1
1 Like

Hi @tatiana.andreeva,

I wanted to update you. over the course of a few days I have been trying to get this to work. I was able to get Mission Planner to show a gpsstatus2 = 1. There are however 2 problems I have found.

  1. When Reach is plugged into the Raspberry Pi with these settings and I start each of the systems they do not start. The Reach Interface is never available and ArduRover communication never completes to the ground station. I have to unplug them and sometimes restart while unplugged then plug them in for the two to communicate without problems. I noticed this was happening previously and decided to investigate a bit more. The intention of this setup is not to have to unplug/plug to get it working. Any suggestions?

  2. Although i’m able to get a gps status it doesn’t appear that it’s found anything. It still specifies my location as 0,0 and there’s no other indication that it’s connected. It says GPS: No GPS and all that. Were you able to get it to show location on Mission Planner? If so, what other settings might I need to look at?

Thanks,
B

@tatiana.andreeva any ideas on what is wrong here by chance?

Hi @beeeeee,

Sorry for the delayed response!

Would you mind describing your hardware setup in more detail, maybe with the photos? Could you please specify the conditions that you’re testing your setup in?

It’d be also great to see the screenshot of the Mission Planner once again so that it shows the issue.

May I ask you to elaborate on that? Do I understand correctly that the board doesn’t boot?

Would you mind elaborating on that? Do I understand correctly that you can’t access Reach in the network?

At the moment of the testing, is your Reach RS+ capable of seeing the satellites? With the settings Tatiana mentioned earlier, it’s usually possible to get the setup working.

We’ll try double-checking the setup. Unfortunately, it might take a bit longer as we’re working remotely and getting all of the equipment is tricky.

This topic was automatically closed 100 days after the last reply. New replies are no longer allowed.