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?

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

1 Like