Close

[C] 3DxPoint: Absolute Movement Zone

A project log for AirBerries and SpaceExplorer

I should start using my £80 split keyboard and £40 spacemouse more than my £32 keyboard and £16 mouse.

kelvinakelvinA 11/10/2023 at 16:150 Comments

2 days ago, whilst thinking of possible ways to obtain better precision and accuracy, I got the idea to have a small part of the range used for "absolute movement". So, instead of a trackpoint, it'll act more like an optical sensor seen on small netbooks like the OneGX1. 

As I expected, I wasn't using anywhere near the full range of motion for moving the cursor. The first thing to try was to just send the 1 : 1 position of the spacemouse to the cursor, which is just taking away the previous mouse position from the current one, thus only the difference is sent. This produces a cursor that looks like it's trapped in a gravity well, and is rather jittery:

To turn this into something useful, I don't send the moments when the spacemouse moves closer to the center. Additionally, I send the usual movements when outside the "absolute zone". It looks like the mouse is running at stop-motion speeds, but it does work to increase accuracy and precison when the cursor is near a target. This was one of the major issues with the traditional method.

Unfortunately, things weren't as glamarous when I tested it out. 

For starters, my best speed for White TIle, Don't Touch It was 50.499 seconds (my best with the traditional movement was 45.07). I can certainly feel that getting the cursor from place to place is slower than before.

My accuracy and precision have certainly improved, looking at these results:

However, I decided to also compare with the small optical sensor that's on Q3ti, my OEM 8" N100 Laptop from AliExpress. I believe it's the same thing as the one on the OneGX1. My results show that I'm still a long way off from a mouse replacement, though it also gave me the impression that I'm better on this claimed "7.2 * 7.2mm square" than on a trackpad.

Right now, I'm wondering if I should implement a look-ahead buffer and positional averaging to make the cursor appear smoother and reduce the chance of overshoot, or to just cut my losses, upload what I've already got and then buy a traditional mouse. I have just recently split the monolithic .cpp up a bit, so it may be a good time to publish:

Right now, 3DxPoint would be around about the "media center control" level of usability.

Discussions