Check the Google SoC website for general information about the Google Summer of Code. If you are not familiar with the Summer of Code, it is essentially a tele-commuting internship, where you get paid by Google and mentored by developers from an open source project. The GSoC Student Guide might also be helpful. The official timeline should be consulted for the other dates.
Motion planning is a key problem in robotics. The basic version of the motion planning problem can be defined as finding collision-free paths between a start and a goal configuration of a robot. The problem gets much harder if additional constraints on the kinematics and dynamics of the robot are imposed. The complexity of the basic version of the problem is already PSPACE-hard, while some of the variants of the motion planning problem are even undecidable. Sampling-based algorithms have emerged as the state-of-the-art technique for motion planning. The Open Motion Planning Library (OMPL) contains efficient, yet general implementations of many of these algorithms. It is actively developed and is used to plan motions for many different robot hardware platforms (thanks to its integration with ROS, the Robot Operating System). There is a rapidly growing community of OMPL users, which we want to broaden through the Google Summer of Code projects listed below.
Brief explanation: The core OMPL library is very abstract. We have developed OMPL.app as a simple front-end for OMPL. It integrates collision checking and mesh loading with a simple GUI based on PyQt / PySide. The graphical front-end can be used for planning motions for rigid bodies and a few vehicle types (first-order and second-order cars, a blimp, and a quadrotor). We would like to make it easier for people to try out OMPL without having to compile any code or install a large number of packages. One way to do this is to install OMPL.app on one of our servers and create a web front-end that is similar to the OMPL.app GUI.
Expected results: A web-based application that allows a user to (1) choose different meshes for a robot and its environment, (2) define start and goal states for the robot, (3) find a feasible path with different planners. See http://ompl.kavrakilab.org/gui.html for information on how the stand-alone GUI works. The path needs to be visualized using WebGL. OMPL is written in C++, but has extensive Python bindings (the current GUI is written in Python). It might therefore be easiest to develop the web-based version of OMPL.app using Django.
Knowledge Prerequisites: strong web development skills, knowledge of Django and WebGL.
Skill level: high.
Brief explanation: OMPL has built-in functionality for logging all kinds of diagnostic information that is stored in SQLite databases. Due to the random nature of the sampling in OMPL’s motion planning algorithms, many runs are necessary to say anything about an algorithm’s performance. The performance obviously also depends on the particular benchmark problem and algorithm parameter settings. We would like to know in what aspects a particular algorithm is different than others. That is, we want a characterization of an algorithm’s performance relative to others. This project involves data analytics, statistical testing, and (time permitting) machine learning on algorithm parameters that will optimize some performance metric.
Expected results: An end user should be able to interactively explore the databases and plot results, while the code would automatically highlight interesting trends. Ideally, this is done through a web interface. R Shiny looks like a strong candidate for implementing this, but we are open to alternatives (e.g., Django/Pandas or Google Charts).
Knowledge Prerequisites: basic knowledge of statistics and benchmarking, web development skills.
Skill level: high.