Skip to content

Rev 0.1 (Etch‐A‐Sketch)

Nolan Hergert edited this page Nov 26, 2023 · 3 revisions

Original idea was a computer screen LCD. However, they are pretty dark.

Glare reduction

Blocking the light!

Won't work

  • Sunglasses, darken everything else too
    • LCD screen, same problem. The minimum transmissibility is too low, even with a monochrome screen (below). Although they can make the light go black!
    • Electrochromic/photochromic (color) and polymer dispersed liquid crystal (smart film, diffuses) might work due to much higher transmissivity, but need an addressable display form in mass quantities. I don't have the budget yet. It's actually not that expensive, found a supplier on Alibaba. From Dynamic Eye and "Chris Mullin": https://www.dyneye.com/night-glasses image
    • Another one is welding-helmet-style? Not sure why this one is $250, other than it's portable and maybe higher resting transmissivity. https://e-tintproducts.com/product/ctrl-ts3/

image

Something physical blocking just the headlights would work though. As long as you can move it fairly quickly eye_blocking

Motor

Need velocity control and a homing sequence for power up. Sorta similar to notes here: https://github.com/nolanhergert/realistic-roller-coaster/wiki#motor

Determining Lengths

Need to know exact distances of motors. How to make that process as simple as possible for the end user? Connecting once to wifi on phone all to enter a few numbers doesn't make that much sense. However, can't detect skipped steps using current very easily. Or at least not without an expensive chip. Can I use some switches reliably?

Homing

I think I can get away with intentionally skipping steps to get the lines initially taut and then move it around from there so I am aligned on the user's face? Maybe...requires darkness, and an oncoming headlight! Seems like traditional homing would be easier.

CV Algorithm

Don't really need initial training, since it's kind of hard to set up. Just train/learn on the fly.

  • Acquire face on spacebar. Then use LK trackers to 1) know where the face currently is and its size (for better prediction next time) and 2) TrackWarpCrop new face back to original face to do shadow detection.
  • Shadow detection. Do brightness/color comparison to original acquired face (without blocking).
  • Motion:
    • If no trained model, move steppers to center of windshield if possible. Detect center of blob(s). It should be centered on the eyes. Move steppers appropriately. Take samples to create model along the way. Encourage moving face around to make motion faster in the future.
    • With trained model, just move there! And adjust if needed.

Stepper motion

Prototype

Just do one line in a diagonal.

Gen 1

  • Assume rectangular positioning of motors. I think horizontal and vertical distances do not need to be the same from car to car. Need to know exact positioning, actually. If you want to move a little in x and your x position of a stepper is off, then the amount of r you need is different depending on your x position.

Getting exact position

Automatically:

To get exact position, I'm thinking of disabling/lowering power to all steppers except one under test. And pull on test stepper until stall/skipped steps/higher current draw. That tells you distance from wherever you were. Then do the same for other motors. Maybe with some diagonal stuff thrown in. Need to have less power to some steppers and be able to detect stall. I can do that, right?

Manually:
* Just measure with measuring tape each side and diagonals. Then need to enter using wifi and server. Annoying for most end-users, but not that bad for first prototypes. It's a one-time thing.
  • r = sqrt(dx^2 + dy^2).

Blocker

  • Have removable blocker? That way you don't see lines in daytime. Ehh, I don't think this is that helfpul.
  • Needs to eventually be adjustable to any angle of windshield, or the blocking should be wide enough to handle most angles of windshields.

String

  • Should be strong enough to resist breaking if accidentally grabbed? It's currently quite annoying to restring, especially for end user.
  • Have end caps? Or just tie knot onto center thing.

Spool

  • I think I can still use a hole through center. UV cure glue in center along with gear. Trim on other side.

Computer Vision

Current plan is to have just one camera facing the driver, detecting when the obstacle is no longer blocking the face and moving it to keep it on the eyes.

  • Probably will want a "nose gap", since the side of the face is dark! (can't detect off by x and y).
    • However, a nose gap at one foot distance is going to let light in, darn. Nevermind, seems to work great?! More testing and thought needed. If can't use nose gap, then can't look at face reliably and need to do more robust control with a front-facing camera.
  • Will it fail with super dark skin? I can still detect the whites of the eyes, but I really need to detect the car motion. Maybe need a front-facing camera too for better control.
  • Tracking: Most do some kind of optical flow. Might want to implement LK tracking by hand using this? https://github.com/tovask/ESP32-CAM. Eyes and mouth would be good

Mounting

Won't work

  • Something that hangs down from sunvisor. Too close to eyes and difficult to stop from swaying
  • Double jointed arm. Might work, but needs to be strong-ish to support weight and potentially needs to be really long. Plus you need to mount a servo in the middle somewhere...annoying!
  • 2D stage like etch a sketch or 3D printer. I mean, it'll work but it requires a rail on the y axis far side, which is super annoying. Can't simplify it.

Art drawing bot

Except with 3 lines instead of 2, in a y shape. This should work...

Lego test

https://stackoverflow.com/questions/63658480/how-can-mindstorms-ev3-communicate-with-my-pc-via-bluetooth

Mounting

Suction cups would work well though. They allow you to tighten the line perfectly!

Motors

Would like to run the system on 5V only. Need ~500 RPM, 10 rotations per second.

  • might rule out steppers, since you can't overdrive them, but a larger stepper might work.
  • Geared down DC motors would work, but the brushes wear out over time and maybe sound like servos.
  • String needs to be an equal radius on the pulley...