Welcome to uavster's blog
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 [...]
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 [...]
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:
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. [...]
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 [...]
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 [...]
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 [...]
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 [...]
Getting started with Computer Vision on iPhone
I still remember my first mobile phone back in 1998. It was an Alcatel One Touch Easy. You could do thousands of things with it: calling your parents, calling your girlfriend, calling your friends, calling [...]
Ok, let's get serious. Needless to say, today's smartphones are orders of magnitude more powerful than my old Alcatel thanks to Moore's law. In fact, they are becoming powerful enough to execute [...]
Since a few months ago, I had programmed computer vision software for desktop machines and laptops. I always thought of trying with Android or other mobile operating system, but never had time to really [...]
We got two awards in IMAV 2012!
Home, sweet home. My luggage is laying on the floor, as exhausted as me. I arrived yesterday from Braunschweig, Germany, but went straight to bed for a mandatory energy charge. I slept for an insane number [...]
1) Special Award for the "Best Automatic Performance"
2) 2nd place in the Indoor Flight Dynamics Challenge
According to the organization, our drone was the first one in the history of the competition to pass the challenge without any human intervention, entirely on its own. This is the reason [...]
My colleague Jesús Pestana did an amazing job with the position estimation and high-level controllers (trajectory and mission). My contributions were the software framework, visual speed estimation, [...]