newsletters:2023-11
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
newsletters:2023-11 [2023/11/30 20:19] – osnr | newsletters:2023-11 [2023/11/30 22:48] (current) – Remove Govind TODO, constrain keyboard GIF admin | ||
---|---|---|---|
Line 21: | Line 21: | ||
* {{: | * {{: | ||
- | * TODO: Govind? | + | ==== Tabletop / in-system editor |
- | + | ||
- | ==== Editor | + | |
* Naveen working on [[https:// | * Naveen working on [[https:// | ||
Line 30: | Line 28: | ||
* Andrés working on multi-keyboard, | * Andrés working on multi-keyboard, | ||
* (we'll finally be able to dump tcl-thread and pi.tcl and have everything in virtual programs and subprocesses and statement communication!) | * (we'll finally be able to dump tcl-thread and pi.tcl and have everything in virtual programs and subprocesses and statement communication!) | ||
+ | * Here's a preview of it monitoring key presses from multiple keyboards plugged into %%folk0%%: | ||
+ | * {{: | ||
==== Calibration and CNC ==== | ==== Calibration and CNC ==== | ||
Line 37: | Line 37: | ||
(the material might be an inch or two thick, so you need to be able to projection-map 3D surfaces above the base plane of the Folk system, and you need high accuracy -- current Folk is only calibrated to a single plane homography and is often 1cm off or worse) | (the material might be an inch or two thick, so you need to be able to projection-map 3D surfaces above the base plane of the Folk system, and you need high accuracy -- current Folk is only calibrated to a single plane homography and is often 1cm off or worse) | ||
- | Basically, you need to hold up some known pattern in a few different poses and project onto it, and that lets you characterize the behavior of the camera and projector in 3D space. Most people say that a pretty simple pinhole-camera (linear) model with some adjustment for radial distortion is sufficient for better-than-a-pixel accuracy. | + | Basically, in order to do 3D calibration, you need to hold up some known pattern in a few different poses and project onto it, and that lets you characterize the behavior of the camera and projector in 3D space. Most people say that a pretty simple pinhole-camera (linear) model with some adjustment for radial distortion is sufficient for better-than-a-pixel accuracy. |
- | Using AprilTags for the projected pattern is nice, because we already link the AprilTag library (so no need for more custom computer | + | Using AprilTags for the projected |
- | * Early November: the first 3D calibration test/demo, using a calibration pattern based on [[http:// | + | * Early November: the first 3D calibration test/demo, using a calibration pattern based on [[http:// |
* {{: | * {{: | ||
+ | * It's useful to leave gaps in the printed and projected patterns so it's easy to move the board & get the tags ' | ||
+ | * Then once you can see most of the projected + printed tags on the board, you record that as a set of example points for calibration (you now have both board-plane coordinates in meters and camera and/or projector coordinates in pixels for all corners of all those tags) | ||
* Notice how tags in the center of the calibration board are projected dynamically, | * Notice how tags in the center of the calibration board are projected dynamically, | ||
- | | + | |
+ | * {{: | ||
- | | + | * Mid-November: |
- | + | * So we introduced a concept of // | |
- | | + | |
* {{newsletters: | * {{newsletters: | ||
- | * Late November: Why was it projecting upside-down? | + | * Late November: |
+ | * Why was it projecting upside-down | ||
+ | * And in folk-convivial, | ||
+ | * Had to figure out extrinsic information during camera calibration and projector calibration (what is the rotation and translation of each pose relative to the projector & relative to the camera), then use those extrinsics to derive the rotation and translation of the projector frame relative to the camera frame (" | ||
+ | |||
+ | * Late November: Finally got 3D calibration to the point of testing it and seeing the outlines align with the tags: | ||
+ | * {{newsletters: | ||
+ | * The outline is still ~1cm off, but notice how it's the right size no matter what distance from the camera or skew I hold the tag up at. That's a 3D calibration :-) (and internally, coordinates here are all in meters from the center of the camera lens, too) | ||
+ | |||
+ | * Next: try to improve smoothness and accuracy by using nonlinear refinement & adding a radial distortion term to the calibration | ||
+ | |||
+ | I'm excited about real-world calibration because it feels like the first system change in a long time (6 months? a year?) that will actually bring in new modes of interaction, | ||
- | I'm excited about real-world calibration because it feels like the first system change in a long time (6 months? a year?) that will actually bring in new modes of interaction, | + | I've spent a lot of the last 6-12 months on performance and on making cleaner and more powerful APIs, but I haven' |
==== Other system improvements ==== | ==== Other system improvements ==== | ||
Line 67: | Line 80: | ||
* Naveen added [[https:// | * Naveen added [[https:// | ||
- | * Naveen added [[https:// | + | * Naveen added [[https:// |
* but **not** (yet) when subprocess goes down due to an internal crash (like a segfault) or due to arbitrary external Unix kill (we have this whole supervisor thing already that's meant to be able to waitpid on each subprocess and detect those conditions, we're just not using it) | * but **not** (yet) when subprocess goes down due to an internal crash (like a segfault) or due to arbitrary external Unix kill (we have this whole supervisor thing already that's meant to be able to waitpid on each subprocess and detect those conditions, we're just not using it) | ||
* see [[https:// | * see [[https:// | ||
Line 109: | Line 122: | ||
> | > | ||
- | == jim == | + | ---- |
One thought is that a parallel Folk evaluator would basically be a mix of [[https:// | One thought is that a parallel Folk evaluator would basically be a mix of [[https:// | ||
Line 156: | Line 169: | ||
* Fun interim on-a-wall stage during setup, before we pointed it down at the table: | * Fun interim on-a-wall stage during setup, before we pointed it down at the table: | ||
* {{: | * {{: | ||
- | * (whenever I see a projection mapping demo, I always feel like we should be able to subsume it and make it really easy to set up and reprogram, like it was trivial to make the meow text here wiggle around over time) | + | * I think this image is a fun provocation because it's sort of //about the wall//, the drawing on the whiteboard, instead of being about the system. Imagine wheeling a system over in 10 seconds and pointing it at part of your environment because you want a thin layer of computation or sharing or dynamism on top of what's there (and not because you want a generic "Folk system" |
+ | * (btw, whenever I see a projection mapping demo, I always feel like we should be able to subsume it and make it really easy to set up and reprogram, like it was trivial to make the meow text here wiggle around over time) | ||
* Simplified install instructions to just use Vulkan binaries from apt, instead of compiling mesa from scratch | * Simplified install instructions to just use Vulkan binaries from apt, instead of compiling mesa from scratch | ||
Line 165: | Line 179: | ||
* Got a Logitech C922 camera for folk-beads: at least it can do 60fps at 720p, much smoother-feeling than the C920 or Azure Kinect which can only do 30fps at any resolution | * Got a Logitech C922 camera for folk-beads: at least it can do 60fps at 720p, much smoother-feeling than the C920 or Azure Kinect which can only do 30fps at any resolution | ||
+ | ===== Hmm ===== | ||
+ | |||
+ | {{newsletters: | ||
+ | |||
+ | and there are a lot of applications like CNC preview or various projection-mapping demos where I think you should be able to get lots of value out of using Folk w/o having any tags visible in the end interface at all}} | ||
+ | |||
+ | (I think part of our job has to be to just broaden the examples so that fitting to them still gives you a pretty productive working set) | ||
===== What we'll be up to in December ===== | ===== What we'll be up to in December ===== | ||
+ | |||
+ | * **[[https:// | ||
* Still need to complete RFID refactor. I need to make the ringbuffer faster and I need to wait on less data to start parsing .. | * Still need to complete RFID refactor. I need to make the ringbuffer faster and I need to wait on less data to start parsing .. | ||
Line 174: | Line 197: | ||
* Hacking on parallel Folk? | * Hacking on parallel Folk? | ||
+ | |||
+ | * Finishing up tabletop editor | ||
Line 181: | Line 206: | ||
==== Andrés ==== | ==== Andrés ==== | ||
* [[https:// | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | ]] | ||
==== Omar ==== | ==== Omar ==== | ||
Line 188: | Line 219: | ||
* [[https:// | * [[https:// | ||
* [[https:// | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// |
newsletters/2023-11.1701375598.txt.gz · Last modified: 2023/11/30 20:19 by osnr