Things I'm doing, did, built or worked in; in some order.


PhD at CIRS

I am currently pursuing a PhD in underwater robotic manipulation using Deep Reinforcement Learning, where I've had to work mostly with the Girona 500 intervention AUV, equipped with two Reach Robotics Bravo 7 manipulators. Plus some odds and ends with other systems; subsystems; and simulator training, mostly MuJoCo (with our own hydrodynamics modelling), Gym and SB3.

As a side quest, and to learn Rust, I'm working on a wrapper for a Rust driver of an SO-100 arm in leader configuration so that I can use it as an input device for teleoperating the Bravo 7 arms. You can see that codebase on its GitHub Repo. At some point GitHub will annoy me enough that I will selfhost Forgejo, but that day has not yet come around.

RobotX Caleuche

Active team member from the project's beginnings in mid 2021 until mid 2023, went to Sydney for RobotX 2022, had a blast and learned lots even if there were some major logistic issues. Then took a more laid back role until RobotX 2024 and finally left the project after that. What follows here are some pictures of the sytems, showing its evolution, and some notes on my own contributions.

On this project, I worked first in simulation, integrating a AUV into VRX's Gazebo sim. Then I moved into setting up the system's telecommunication solution; internal network; integrating sensors, such as an Ouster LiDAR (easy), Parker-Lord 3DM GNSS/INS (which had a very basic ROS1 driver that required a lot of extra work, and a ROS2 driver which was pretty much plug-and-play), Luxonis Oak cameras (easier); a Lora wireless e-stop system (iffy); hydrophone system and some other odds and ends.

I also spent a considerable effort during the 2022 competition writing image recognition algorithms for target recognition and control loops for precision landing using the drone, and this, combined with more team effort, gave the team 1st place in RobotX Air. At Sarasota it was a similar story, albeit with less overall success.

Above you can see a SplashDrone, we tried using it, but the API was too limited and the payload integration system was also very restrictive, so we ended up going with a more DIY solution. Next is a picture of the Ubiquiti antennas and radios we used for shore-to-vessel communications, basically every other team uses the same vendor for their medium range comms, and you can see a fantastic example of security there, with the post-its which had the IP and passwords written on them. I also participated in an effort to measure and model the transmission characteristics of this setup with a small logger. The rightmost picture is the computing box we had in Australia, which was kind of a mess.

These are some pictures of what was basically the third or fourth circle of integration hell, and an attempt at limit testing the router with a space heater.

Pictures of the WAM-V at various stages of development, from some of the latter water tests in 2022 with the 4 motor holonomic setup; testing in 2024 and that same year in Sarasota. For the first in-water test, and sadly I do not have good pictures of this, we had an open latop sitting on top of the boat, a router by the poolside and two ESP-32s driving the thrusters by spoofing the signal of what used to be the tiller handler's encoder.

More images, this time of the drone we used in Australia, the drone we went to with to Sarasota, with its HaLow antenna, tin-can grabber mechanism and a RPi which was later upgraded to a LattePanda 3 Delta, because we got tired of cross-compiling ROS2 packages for ARM and wanted to use OpenVINO.

An odd event was that we lost 4 Lylygo T-Beam boards almost consecutively, and while I do not have proof nor a good explanation, from the evidence gathered, I blame a radar that another team had as the culprit. The images show my attempt at replacing the burned-out IC; the compute box with its Jetson and the Zoom guitar ADC for the hydrophone; and a broken hydrophone that dragged on the boat ramp when a linear actuator malfunctioned and extended by itself.

Levita Magnetics

I also did a brief stint at Levita Magnetics, where I worked as an R&D engineer serving the MARS surgical assistant. From this I can safely say that medtechs are cool, the paperwork is always a mountain and that KUKA is a weird mix of old, cutting edge and german.

PaperLux

For PaperLux, my contribution to them was improving the IR pen detection rate and making the tracking flow more resistant to interference, using classical pattern recognition and video processing techniques.

Computer Architecture

Has been a passion of mine for a while, and especially all RISC-V related since I was a TA for IIC2343. Because of that, I ended up going for an internship at Synopsys, which later turned into a full time job until I left for Levita. In-between, I also had the opportunity to fly to ISCA 2024 in Buenos Aires, thanks to a grant to participate in the µArch Workshop.

Frost Forecast Gateway

I did an internship at INRIA, where I worked on an agricultural IoT project called Frost Forecast, whose objective was to give acre-accurate convective frost prediction using stacks of thermometers and hygrometers, connected to a gateway using SmartMeshIP motes. With another intern, we rebuilt the gateway from scratch and did some performance improvements to increase the battery life of the motes.

Here you can see the gateway, an attempt at characterizing the power spikes from the motes, and the mote itself.

This website (et al.)

This website is entirely hosted in a small VPS with a single core and 1 GB of ram, which means that if I ever get slash dotted, this website might collapse even behind Cludflare's protection. The WireGuard server also came in handy while I was a Distributed Systems TA, so that student groups could build a system that felt more real than just running things on localhost. The reason behind this VPS was to have a self-hosted Minecraft server running on an old computer, but since my ISP had me sitting behind CGNAT, I had to use the VPS to expose the server through a WireGuard connection and some UFW forwarding rules. That old computer was running a six core AMD Bulldozer CPU with a woefully undersized cooler, 4 RAM sticks, of different capacities (IIRC they were 8, 4, 4 and 2), a white-label SSD, a very old GPU and an EVGA PSU I bought from a friend for 30 dollars.

DIY Weather Station

I also built a weather station out of a sensor kit, a Mk1 Raspberry Pi and an Arduino, because I wanted to know what the rainfall was at home, here are some pictures of it (food containers make great weatherproof cases):

This project's code is a bit all over the place, but basically the Arduino and serial reader code is on this repo, and a small visualizer which worked over LAN and updated periodically with a cron job.

Janky fixes and more

I've always liked repairing my own, my friends and family's broken electronics; so here is an assortment of rather unpleasant pictures. Some of them are from repairs, a few are small projects, and others I honestly don't quite remeber the context.


There may be projects or details which are not here due to NDAs. I'll either think about them frequently enough they'll show up here in a few years, or the NDA will run its curse and I'll have forgotten about them when the time is up.