Posts
Gamma Camera
tl;dr: Gamma Camera is my open source flexible camera array project and you can build your own with https://github.com/robrussell/gamma.
I made a thing I call Gamma Camera. What is it? It’s easiest to explain starting from my motivation. For the past few years I’ve been tinkering with a lot of commodity camera parts and single board computers like the Raspberry Pi and Jetson Nano. I’ve also spent a lot of time trying to get a better handle on algorithms like structure from motion (SfM) and, more recently, neural radiance fields (NeRFs).
Posts
Back to Blender with CAD Sketcher
My most recent designs used OpenSCAD. Before that I was using FreeCAD for a while. I think I’m coming back to Blender now. I love all these open source tools and I’ll get around to each one again.
Blender was my go-to tool for a while to create models for 3d printing from 2017-2020. Here are the kinds of things I designed back then.
Beezus Warthog (my second robocar iteration) was designed in Blender So was my next one, Henry Technical.
Posts
Masking video backgrounds with Apple DepthPro and PyTorch
Last year I wrote about loading and saving video in a Jupyter Notebook for frame-by-frame processing with PyTorch. Today I’d like to explain more of the actual image processing that motivated me. It started from tinkering with Apple’s Depth Pro model. I just wanted to see how it performed with some arbitrary video and maybe use it to separate the background from the foreground.
Today I’ll focus on just two main tasks that differ from the last notebook:
Posts
Running SlimeVR firmware on the Adafruit ESP32-S3 Feather
Over the summer I built some Slime VR trackers for myself. It’s now December and I still haven’t used them very much personally. I wrote about the part selection at the time but I never explained how to put firmware on the trackers.
SlimeVR is written with the ESP32 family of microcontrollers in mind. I chose a board with the very capable ESP32-S3 for my build. There are always slight variations across different microcontrollers, even with similar names, and even from the same vendor.
Posts
Frame-by-frame video processing in a Jupyter Notebook with PyTorch
Today’s goal is just to load a video, display individual frames in the output from a Jupyter notebook cell, and write the video back out to a new file. In the middle I’ll do a little processing on the video frames. The processing is beside the point today - I just want to make the input, interaction, and output work really well so that later I can focus more on that processing step in the middle.
Posts
A local RAG for local memories
I read a lot. But I don’t read the way I used to read. I used to read books. Now I read articles online, conversation threads, and plenty of Wikipedia. Reading for me now feels a lot less structured and a lot more sprawling than it was when I was younger. It’s not just the time in my life that’s passed though, the kinds of reading material available have changed a lot.
Posts
Slime VR tracker DIY build
These are my new VR trackers.
This DIY build of SlimeVR trackers can be assembled with (maybe*) no soldering.
If you’re like me and want to put together your own set of SlimeVR trackers, I’ll tell you about the parts I selected and show you my case design.
Parts My part selection uses fewer parts than some others I’ve seen. The Adafruit feather microcontroller (MCU) boards often include a LiPo charger and “fuel gauge” IC.
Posts
Reordering frames, extracting I-frames, and other ffmpeg tricks
There are a bunch of ffmpeg commands I find myself copying and pasting over and over. Maybe you do too. Here are mine.
I’ll explain the flags for this first one in a lot of detail, if I skip a flag on another example then it’s probably described here. And I’ll link to some more thorough docs at the end.
ffmpeg -i /mnt/nas/photos/PXL_20230128_171859165.mp4 -vf select='between(t\,200\,210)*eq(pict_type\,I)*gt(pts-prev_pts\,0.500)' -vsync 0 -frames:v 100 /mnt/nas/frames-PXL_20230128_171859165/img-%03d.jpg Flags
Posts
Rpi Camv3 Oqt Connector
Here’s another camera mounting block to 3d print. This part is meant to go with my previous design for mounting a Raspberry Pi on a t-slot rig. It’s just the minimum bit of plastic needed to join the camera module v3 to a 1/4-20" nut. Then the nut can be used to attach the camera module to a ball head like this one from Small Rig. Just like the rest of Gamma Camera the idea is to use 3d printed parts to bridge between common COTS parts.
Posts
T-Slot bracket for a Raspberry Pi
My t-slot obsession has not let up. Last night I made a nice little design to easily secure a Raspberry Pi to a piece of 2020-profile extruded aluminum. This follows on from the 1/4"-20 to t-slot mount that I made recently. Just like that component, I used BOSL2 in OpenSCAD to quickly put it all together.
Design Here’s the design for the part if you want to have a look.