Today marks the promotion of the MCAP file format to beta status. This is something I’ve been working on for the past several months at Foxglove, to try and standardize the robotics industry on a common recording and data interchange format for robots. The next step is to collect feedback from early adopters and continue iterating on the different language implementations before maturing to 1.0 status. Work has also begun on the MCAP ROS2 storage plugin, with the goal of replacing the default SQLite storage backend with MCAP.
If you’re working in robotics, either on a ROS-based system or non-ROS, give it a try and let me know what you think on GitHub!
I’ve started blogging on my company blog, Foxglove Technologies, where I talk about building and debugging robots. This first post talks about my favorite hobbyist robotics platform right now, the Duckiebot.
I started experimenting with Unity game development, and overall it’s been an absolute pleasure to work with. I was able to build a 3D environment by importing assets from the Unity asset store, tune the lighting and post-processing, add an animated and motion-controlled character, and lots of fun physics interactions with no more than 20 lines of code or so.
One of the more tedious hurdles I hit was creating physics proxies, i.e. convex hulls, for all of the geometry I imported. A concave shape like a coffee cup can’t be efficiently used directly in physics simulation, it either needs to be represented by a simple proxy shape like a cube or cylinder, or broken down into a series of convex shapes that add up to the full concave shape. This can be algorithmically automated with reasonable results, and this option is available in Unreal Engine but has not been added to Unity yet.
I spent some time polishing up a user-friendly integration of the V-HACD 2.0 algorithm for convex decomposition and released it for general use on the Unity Asset Store. If you are building a 3D Unity game with physics, go check it out! I’m also looking at additional use cases like destructible meshes that shatter apart into smaller bits.
Algorithmia seems like an interesting service. People write scripts that are callable as web endpoints, similar to AWS Gateway + Lambda, and anyone with an account can call the endpoints and pay on a per-call basis. They recently did a writeup focused on image and video manipulation that featured three of my endpoints:
I’m releasing my first self-published app (outside of the Mac app store) today to bring AirPlay support to Sonos speakers. AudioBridge runs in the background on a macOS / OSX computer and provides simple toggling and renaming of each speaker group. If you prefer a command line service that can run on Linux, take a look at AirConnect.
AudioBridge was rejected from the app store for “using private operating system internals”, specifically AirPlay. It’s not entirely accurate since AudioBridge creates its own AirPlay server rather than using any macOS APIs, but I suppose Apple wants to keep tight control over their protocol. If you are less sympathetic to Apple’s need for protocol control and just want your phone and laptop to be able to stream music to your speakers, give AudioBridge a try.
My C++11 port of BEST, “Bayesian estimation supersedes the t test”, is on Github now at https://github.com/jhurliman/best-cpp. This is a port of Rasmus Bååth’s JavaScript port which you can run in a browser at http://www.sumsar.net/best_online/. Given two sets of real-valued numbers, for example session durations from A and B groups in an A/B test, BEST samples a probability distribution of the difference between the two groups to estimate the difference. The output is the 95% highest density interval, or HDI, and the estimated mean. If 0 falls inside of the HDI range, there is not enough confidence to declare a credible difference between the two sets of numbers. Otherwise, a credible difference can be established.
I recently released my first self-published iOS app, Portrayal. It’s a simple interface for a handful of photo stylizations. Some of the non-photorealistic styles like Sketch have a surprising amount of variety in what can be produced by tuning sliders.