GeistHaus
log in · sign up

uavster's blog

Part of ignaciomellado.es

A selection of experiments and random thoughts by Ignacio M. Bataller, a Robotics Engineer experimenting with artificial perception, signal processing, robotics and other cool stuff.

stories primary
Aiming at the best robot developer experience

Good hardware is nothing without good software, so I’ve been heads down coding a module system that will ship with the robot. There’s motion, speech, camera, behavior, bridge… Each module [...]

Motion is the gateway to the robot’s hardware via a ROS2 interface. It lets you create trajectories for the robot’s mobile base, the head and even the RGB LED. The module is a thin layer talking [...]

Speech takes the audio from the onboard mic and publishes messages with the transcribed text and the emotional classification that the behavior module uses to move the robot accordingly.

https://ignaciomellado.es:443/blog/Coding-my-robots-software-system
HF1: End of 2025 Recap

As we say goodbye to another year, I wanted to recap the progress of the HF1 robot project with you.

The project has come a long way from last year’s proof of concept. We now have a robot that can be serially produced, and availability of the first batch is expected by the first half of 2026.

I understand this new release date might come as a disappointment to some of you, as I previously announced Q4 2025 in social networks. However, an electrical compatibility issue with the Jetson Orin Nano [...]

The good news is that I took the redesign as an opportunity to add features that many of you requested, including audio, longer battery life thanks to external power banks, compatibility with the NVIDIA [...]

https://ignaciomellado.es:443/blog/HF1-End-of-2025-recap
HF1: End of 2024 Recap

As the year reaches its end, I wanted to share with everyone what the HF1 project accomplished in 2024 and what to expect in 2025.

Every sign of support is one more push for HF1 to become a real product. If you joined the waitlist, talked about HF1, liked or reposted my posts, thank you.

One of my New Year's resolutions is making HF1 a learning experience around a DIY kit. If you want that too, please spread the word. There’s a section at the end with ways in which you can help [...]

A lot has happened since I started working full-time on the project in mid April. The prototype’s hardware was mostly in place back then, from the time HF1 was just a fun way to pass the time on [...]

https://ignaciomellado.es:443/blog/HF1-End-of-2024-Recap
How to get into robotics if you are a CS major

I was recently asked by a Computer Science (CS) major about a good roadmap to get into robotics. This is was my response, in case it can help someone else:

My approach to learning is normally by making. If that’s the case for you too, the best way to learn to make your own robot is starting to make your own robot. That should be the forcing function [...]

Linear algebra: to express locations and movements of the robot and other things in 3D, e.g. vectors, homogeneous matrices, quaternions… There's a lot of overlap with 3D graphics here. 

Synchronization: robots are almost always distributed systems; even when there’s only one processor, there are many independent sensors and actuators that can’t be queried/commanded [...]

https://ignaciomellado.es:443/blog/How-to-get-into-robotics-if-you-are-a-CS-major
How I hacked a vintage C++ compiler to support exceptions before they were standard

TL;DR I hacked a 28-year-old C++ compiler to support exceptions. That’s two years before exceptions were even part of the first C++ standard!

The compiler is the Watcom C++32 Optimizing Compiler Version 11.0, from 1996, by Sybase, Inc. Around that time, some friends and I started a real-time graphics [...]

Fig. 1: The Watcom C++32 Optimizing Compiler Version 11.0 running on DOSBox.

Years later, I resumed maintaining the library. Real-time code was mostly written in assembly, but I started adding C++ support to integrate faster. However, with error checking everywhere, the code started [...]

https://ignaciomellado.es:443/blog/How-I-hacked-a-vintage-C-compiler-to-support-exceptions-before-they-were-standard
Readying a MacBook Pro M2 Max for Tensorflow

I was looking for a development laptop that would let me prototype rather big ML models locally. Life will have me moving across countries in the next months, and I would like to avoid depending [...]

I ended up getting myself a MacBook Pro M2 Max. Apple silicon is very power-efficient, and, most importantly, its shared memory architecture gives the GPU access to the entire RAM. In my case, that's [...]

Making Tensorflow work with Apple silicon can be straightforward... if you know how to. Hopefully, this post will save someone the time I spent troubleshooting.

According to this Apple Developer guide, you need four things:

https://ignaciomellado.es:443/blog/Readying-a-MacBook-Pro-M2-Max-for-Tensorflow
Ultrafast switching between OpenCV versions

OpenCV 3.0.0-alpha came out recently with exciting new functionalities. I was keen to give a try in particular to the new 3D reconstruction functions, so I downloaded, built and installed OpenCV 3.0.0-alpha [...]

CVswitch allows you to take snapshots of OpenCV installations and switch between them at light speed. It is open-source and I am releasing it under the GPL 3 license on GitHub [...]

Some people might think that the correct way of working on my experiment without affecting my client's project would be installing version 3 in its own directory and making my experiment point there. [...]

https://ignaciomellado.es:443/blog/Ultrafast-switching-between-OpenCV-versions
The relative pose problem: A chronology

I have been investing some time in reading about the relative pose problem during the last weeks. My aim is to develop a monocular SLAM system for mobile devices, as part of my Perceptive [...]

We have two images of the same 3D scene from two different viewpoints. There is a set of scene points that appears in both images and we know which point in image 1 corresponds to which point in image [...]

Whereas this problem might look pretty modern in the first instance —a product of the digital age, the era of 3D graphics and augmented reality—, it turns out to be century-old. As I found [...]

https://ignaciomellado.es:443/blog/The-relative-pose-problem-A-chronology
Boosting color-based tracking

Tracking an object over a video sequence is a classic problem in Computer Vision. A tracking algorithm looks for the object at every new frame, given a model of the object. This model holds information [...]

There are tons of tutorials on color-based tracking that use the histogram back-projection to find those pixels in the image that are most likely to be object pixels. Then, they use MeanShift [...]

After normalization, each bin value in the color histogram expresses the probability that a pixel has a color in bin B, given that it is a pixel of object O. We can express this as the conditional probability [...]

https://ignaciomellado.es:443/blog/Boosting-color-based-tracking
Measuring heart rate with a smartphone camera

There are some apps out there that can read your heart rate with a smartphone camera. No need for external pulsometers. The procedure is simple: you press the smartphone camera lens gently with your finger [...]

It is time to open your photo app and observe what happens when you cover the camera with your finger. The frame is not black but slightly red. The ambient light is traveling through your finger tissues [...]

The experiments in this post were done offline. I recorded the videos with an iPhone 4S and copied them to my laptop. Then, I processed them with Matlab. The full code is available here [...]

https://ignaciomellado.es:443/blog/Measuring-heart-rate-with-a-smartphone-camera
Attitude estimation on iPhone

Stand up and close your eyes. If you have superpowers and managed to memorize this text before doing so, you'll be now reading it in your mind. Now, try to walk straight for two meters towards somewhere [...]

In order to know their spatial orientation and keep balance, robots use Inertial Measurement Units (IMU). They are composed of accelerometers, gyroscopes and, sometimes, magnetometers that measure linear [...]

Thanks to MicroElectroMechanical Systems (MEMS), the components in an IMU today can be embedded into chip-like casings and consume very low power. This opened the door some years ago to the inclusion of [...]

https://ignaciomellado.es:443/blog/Attitude-estimation-on-iPhone