Compass Updates

In the past there has been some confusion about how the compass works. For example:

I started looking into the code to understand what is going on and am now posting my findings/changes and requesting feedback.

Currently the compass displays something like the image below.

The direction arrow points in the direction of the node you have selected and is dependent on you current heading. Your current heading is supposedly represented by the letter N (based on what is in the code) which is confusing since it does not point north or really have anything to do with north.

There were a few other odd things in the code but in the end if you had a device in front of you and started walking in any direction the arrow pointing to another node would indeed guide you in the right direction (just ignore that N marker).

With the changes I have made you now have a display similar to what is pictured below:

The letter N is now fixed at the top of the compass. The letter H now represents your estimated current heading and the arrow points in the direction on the node selected.
This setup allows you to navigate in two ways:

  1. Start moving in any direction until you get H for your estimated heading and then adjust you bearing to try and line up H with the arrow pointing to the node (rinse repeat).
  2. If you know which way north is line up N with north and the arrow points in the direction of the node.

I also tried to clean up as much ambiguity in the code as I could. For example, the rotate function now rotates clockwise instead of counter clockwise, bearing calculations are clear about what points are being used for calculations and so on.

An area where I would like feedback is that I already know that I want to replace H with something else for your current heading. H gets distorted when rotating around the compass and can start looking a lot like N. Also, if you are heading north H will overlap N and it can be difficult to tell that is what happened.

One idea for replacing H would be to use a “flat arrow” to represent you current heading. This would look something like this picture:

The idea being that when your current heading lines up with the direction of the node it will end up looking something like this picture:

Not sure how intuitive that is. Other ideas welcome.

If you would like to try the new compass out give it a go and let me know what you think.
https://github.com/meshtastic/artifacts/blob/device/pr/pr1541-firmware-1.3.22.80ef31a.zip?raw=true

3 Likes

I think N shouldn’t be fixed at the top. It’s better to keep “H” at the top, always, in my opinion.

1 Like

I can appreciate that. It would keep the interface simpler. Will “H” be universally understood to mean heading? I wonder if H and N could be left off completely leaving only the arrow. This comes with the assumption that the top of the screen is always the direction you are headed in (I think that is a generally accepted assumption).

I like the idea of H always being on top. I do think it would be useful to indicate where the device thinks North is in relation to your heading and the node it is providing a Bering for. ’

Maybe North could be indicated by a * on the circle. Something subtle but informative. This would allow users to verify with a compass.

1 Like

In my opinion, unless its 99.xxx% accurate and updating realtime (i.e. spins when you rotate the device), I’d suggest that identifying North is largely a cosmetic factor and potentially dangerous as it could lead users to think they could use it as a rudimentary compass.

Which brings into question which north it is showing: True North or Magnetic North (or even Grid North). All of which vary, sometimes a lot, depending where you are in the world.

A final issue for me is which surface is the compass orienting with? Not all devices will be configured the same way with many folks using the antenna to orient the device, which could be in parallel, perpendicular out out of plane to the screen. So whether its North or Heading, it needs to align to a device agnostic feature

As such, I’d be inclined to have it simply point in the direction of a node, give the bearing as a number (being clear if its true or magnetic), reference it to the top of the screen and give an estimate of the distance, moving realtime as you walk. A minimap would be better with some kind of grid scale on it and an indication of the degree of accuracy (a circle).

MtnGeek

1 Like

Great point. I have to admit, I am hoping the fact that it does not update in real time makes it clear to most users that it is only a rudimentary compass.

Just a short update on the state of the compass at this point.

The plan is to keep the current layout (Top of screen is current heading with north moving dynamically) with the option to change that layout with a configuration setting. Right now the only other option I have coded in is to have north fixed at the top of the screen with no markers for current heading. Are there any other options people would like to see?

1 Like

I would appreciate having settings to display only “H” dynamically moving (no “N”), and a setting that shows only the arrow.

1 Like

As someone who uses GPS for work daily in rugged terrain/dense forest, I think a North indicator is crucial. Not to use as an indication of where North is, but instead to tell you specifically what the bearing is to the remote node relative to North. It’s particularly important if your node is stationary which may be the case more often than not, for example in a rescue operation command post.

Also, in a couple of seconds I can look at the Sun or my physical compass and determine where North is approximately, and then I know the direction to the remote node and can just head immediately in that direction. This is far more efficient than trying to travel in a straight line in some arbitrary direction and then doing the mental math to try and correct the difference as it starts to appear on the display.

If I don’t have the remote node’s bearing relative to North then it’s a big problem in awkward terrain because I may not have a straight enough, quick enough track to keep the compass display from bouncing all over and I’ll spend a lot of time and energy walking around trying to estimate what direction the remote node is actually in relative to my direction of travel. This actually happens to us a lot in the field when we try to use the track up function on a GPS display rather than the North up function. The map just starts swinging around because we are moving too slow and erratically for the GPS to figure out which way we are actually going.

As someone who has to continually troubleshoot issues on the fly in the field, I would also argue that more data points are better than less. For example, if I’m certain a remote node is at a specific bearing relative to North but my node says otherwise, then I will realize I better double check some things. The argument that too much information may confuse somebody, I believe is outweighed by someone wishing they had that extra information when needed in an emergency. It should be up to the user to be aware of the limitations of the system.

Another option instead of a North indicator would be a numerical indication of the bearing to the remote node relative to North, for example “243T” for 243 degrees True North. This is all information that can be calculated without the GPS moving, because the position of both nodes are known relative to the North Pole. This would be preferable to a North indicator actually since a specific number could be entered into your navigation system or forwarded to another party.

1 Like

Thank you for your contribution @loodydo!

How about replacing H with a filled triangle, as a pointer for current heading, fixed on top?

I also like the idea presented by @ConfidentRabbit:
“Another option instead of a North indicator would be a numerical indication of the bearing to the remote node relative to North, for example “243T” for 243 degrees True North.”

By combining these, one could know the calculations for:

  • north (N)
  • heading (fixed filled/black triangle)
  • direction to the selected node (current arrow)
  • bearing of the selected node (243T text)

The heading triangle could be shown only when the node can calculate the heading, and some minutes afterwards (20min for a stop?)?

The updates for the compass have been completed in the firmware for quite a while now, some recent changes have made the circle even smaller. The current compass configuration has been working very well and there is a very limited amount of screen space and characters available. There is also a new config option to make the compass always point point north instead of the default behavior.

2 Likes