I asked a different question a while back that led me to realize the hardest part of my project, position sensing. I had an idea and wanted to know if I'm trying to reinvent the wheel.
Specifically, I was considering the idea of a wheel orientation sensor that essentially is a circular PCB with copper channels going out from the center like bicycle spokes. And depending on which channel(s) completes the circuit, I know at least within a small degree of error, which I can figure out with math/trig, what direction my robot is pointed. At that point I might use a fine tune algorithm to further point it, which should be easy. The idea is to use this to orient a laser. I looked into potentiometers and I think the precision I need would cost way more than I'm willing to pay, if it even exists.
Two questions, am I reinventing the wheel? Is there some sensor I can buy that's already essentially this, and has a good amount of precision? If I design it myself, what are some good ways to sense which channel(s) are completing the circuit? I can think of various ways, but none are elegant and simple. (Edit - one way I dreamed up is a digital bus, with one value per-channel that gets sent to the bus if the channel completes. Not exactly sure how to design this off the top of my head but I think it's possible. I can design my own board and stuff if I need to)
This could be a really good solution for me, I think, because what I can do is use math to reduce the gearing to get more precision out of my sensor. In other words, if the sensor wheel spins a lot faster than the orientation wheel, I can use whatever ratio I want to increase the precision of the robot. This comes at the cost of more time spinning the motor of course, which is fine with me.
Can I make this work?
Edit: The precision I need is: as much as possible :). It's for a buddy's pool table as a ball placement device. I need to point at various 1mm spots about 3-5 feet away. I want no more than 2mm error, preferably 1mm.
Also, I am going to store and load positions of the robot, so this circular "wire potentiometer" (I guess that's a thing?) should help with that as well, especially if I can figure out an elegant solution to the channel detection problem.