Software

Writing elegant code is one of my favorite activities. This page presents a list of all my software that is publicly available. Most is related to my research, or computational science in general, but there are also some general utilities.

Note about stability and support: This page includes robust, production-ready code, as well as very experimental projects. The tables below explain the icons describing code quality and support level.

License: Almost everything is available under either the GPL or LGPL. In the cases where it is not, it is because I got a different deal with my collaborators, or there were some other constraints. You are very welcome to use and redistribute this software under the conditions of those licenses (no need to contact me); if you need different terms you will have to contact me.

If you are building something neat on top of my code, I’d really appreciate a word from you.

Repositories: Nowadays I’m using mostly GitHub to distribute the software. Most of the links below will take you to the GitHub pages, where you can download the code (git not required, a .zip archive is always provided as an alternative). If you have an account on GitHub, you can “watch” and “fork” repositories and be updated on any changes. If you collaborate with me (also on “private” projects, not publicly shared) you should at some point create an account on GitHub.

Activity levels
active In active development; used day-to-day, as of February 2011.
active Not in active development, but actively maintained by me. Bugs fixed when found.
active Actively maintained by other people.
active Not maintained ("frozen").
Quality levels
stable Stable, production level, with documentation.
beta Beta version; usable but not stable, or documentation not complete.
alpha Alpha version; unstable, no documentation, or experimental.

Research (libraries)

Libraries developed in connection with my research.

started active status language
PyContracts 2011 active stable Python

PyContracts is a Python package that allows to declare constraints on function parameters and return values. Contracts can be specified using Python3 annotations, or inside a docstring :type: and :rtype: tags. PyContracts supports a basic type system, variables binding, arithmetic constraints, and has several specialized contracts (notably for Numpy arrays), as well as an extension API

PyGeometry 2011 active alpha Python

PyGeometry is a Python package that implements common operations on the differentiable manifolds usually encountered in computer vision and robotics. Implemented manifolds: euclidean space, hyperspheres, special euclidean and orthogonal groups, tori. Implemented operations: conversion between representations, geodesic distances, interpolation, random sampling.

stochastic_testing 2011 active alpha Python

A library for creating unit-tests for "random" functions.

RepRep 2010 active alpha Python

RepRep stands for Reproducible Reports. It is designed to make quick hierarchical reports of experimental data. "Reproducible" because it encourages you to add the source data to the report.

Compmake 2010 active beta Python

Compmake is a task manager for single host/multiprocessed/distributed batch Python applications.

ProcGraph 2010 active alpha Python

ProcGraph ("processing graph") is a Python tool for rapid prototyping of processing pipelines for logged and realtime data.

raytracer 2010 maintained by me beta C

Simple C++ raytracer with JSON input/output. This is what I use in my papers when I need to simulate a range-finder.

CSM 2008 maintained by me stable C

The C(anonical) Scan Matcher contains a reference implementation of PLICP. There is also a wrapper for ROS created by Ivan Dryanovski.

GPC 2007 maintained by me stable C

Library for solving the generalized 2D point correspondence problem. This is the core function of PL-ICP.

OpenRDK 2005 maintained by others stable C++

The robotics framework developed at the SIED lab.

Research (utilities)

Simple utils that make life easier.

started active status language
latex_symbols_list 2010 active alpha Python

Simple script to create symbol tables in LaTeX.

Eigen-decomposition of a 2x2 matrix 2007 maintained by me stable C

It is more difficult than it seems.

Software for research papers

This is software which is attached to one of my papers. I always released all non-trivial software: I think this should be compulsory for every scientific publication (not necessarily with an open-source license.) With each paper, I'm trying to make my software more compatible with the principles of reproducible research ("one click" to run the experiments and produce the figures) but I'm not there yet.

started active status language
Bootstrapping software 2010 active alpha Python,C++

The software I am developing for my thesis.

HSM (3D) 2009 not active beta Matlab, C++

Source code for the HSM3D algorithm. The C++ implementation is by Stefano Carpin at UCMerced.

Calibration with range-finders 2008 maintained by me beta C++

Software attached to an ICRA'08 paper.

FTS 2008 not active beta C++

Global (re)localization algorithm (ICRA'08 paper)

Planning with uncertainty 2008 not active beta C++

Planner in information spaces. Developed for my MEng thesis.

HSM (2D) 2006 not active beta Matlab

Software demonstrating Hough Scan Matching in 2D.

Research/biology

This is software related to my collaboration with biologists (more to come once the work goes through review).

started active status language
Geometric Saccade Detector 2010 active beta Python

This is a library for detecting flies "saccades" (rapid turns) in noisy trajectories.

General-purpose software

This is software not related to my research.

started active status language
Busymail 2011 active beta Python

Software to plot stress/procrastination curves from email data.

patience 2010 active alpha Python

A simple script I use privately to manage multiple git repositories.

Maruku 2008 maintained by others stable Ruby

A pure-Ruby Markdown-superset interpreter.

k6 2005 not active beta C++

A free (GPL) KDE client for C6. See also: reverse engineering of the C6 protocol.

SISO designer GUI 2004 not active beta Java

A graphical design tool for SISO systems, written in Java, as a course project, many years ago. It is analogous to Matlab's SISO tools, but of course much better.