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.
|
|
In active development; used day-to-day, as of February 2011. |
|
|
Not in active development, but actively maintained by me. Bugs fixed when found. |
|
|
Actively maintained by other people. |
|
|
Not maintained ("frozen"). |
|
|
Stable, production level, with documentation. |
|
|
Beta version; usable but not stable, or documentation not complete. |
|
|
Alpha version; unstable, no documentation, or experimental. |
Libraries developed in connection with my research.
| started | active | status | language | ||
| PyContracts | 2011 | 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 | 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 | Python | A library for creating unit-tests for "random" functions. |
||
| RepRep | 2010 | 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 | Python | Compmake is a task manager for single host/multiprocessed/distributed batch Python applications. |
||
| ProcGraph | 2010 | Python | ProcGraph ("processing graph") is a Python tool for rapid prototyping of processing pipelines for logged and realtime data. |
||
| raytracer | 2010 | 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 | 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 | C | Library for solving the generalized 2D point correspondence problem. This is the core function of PL-ICP. |
||
| OpenRDK | 2005 | C++ | The robotics framework developed at the SIED lab. |
Simple utils that make life easier.
| started | active | status | language | ||
| latex_symbols_list | 2010 | Python | Simple script to create symbol tables in LaTeX. |
||
| Eigen-decomposition of a 2x2 matrix | 2007 | C | It is more difficult than it seems. |
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 | Python,C++ | The software I am developing for my thesis. |
||
| HSM (3D) | 2009 | Matlab, C++ | Source code for the HSM3D algorithm. The C++ implementation is by Stefano Carpin at UCMerced. |
||
| Calibration with range-finders | 2008 | C++ | Software attached to an ICRA'08 paper. |
||
| FTS | 2008 | C++ | Global (re)localization algorithm (ICRA'08 paper) |
||
| Planning with uncertainty | 2008 | C++ | Planner in information spaces. Developed for my MEng thesis. |
||
| HSM (2D) | 2006 | Matlab | Software demonstrating Hough Scan Matching in 2D. |
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 | Python | This is a library for detecting flies "saccades" (rapid turns) in noisy trajectories. |
This is software not related to my research.
| started | active | status | language | ||
| Busymail | 2011 | Python | Software to plot stress/procrastination curves from email data. |
||
| patience | 2010 | Python | A simple script I use privately to manage multiple git repositories. |
||
| Maruku | 2008 | Ruby | A pure-Ruby Markdown-superset interpreter. |
||
| k6 | 2005 | C++ | A free (GPL) KDE client for C6. See also: reverse engineering of the C6 protocol. |
||
| SISO designer GUI | 2004 | 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. |