-
Notifications
You must be signed in to change notification settings - Fork 632
Ideas page for MRPT Google Summer of Code 2016
- GSoC2016 website. It is fundamental to read all rules and documents from Google before writing a proposal.
- GSoC mailing list: You can ask general questions here.
- GSoC 2016 timeline
Being accepted as a GSoC student is a quite competitive process. Please, if you wish to submit a proposal, consider becoming familiar with the involved technologies first. Simply copying and pasting from this page will not be accepted.
Student projects will be paid only if:
- Midterm (20-27 June 2016): A pull request is requested that...
- Builds, ideally in travis-ci
- Has, at least, stubbed out new functionality
- Code has appropriate Doxygen documentation
- Has a stubbed out example/tutorial/ROS launch file that builds/runs without errors
- It observes the recommendations in "How to contribute", which include C++ style suggestions.
- End of summer (23-29 August 2016):
- A complete pull request that builds, full Doxygen documentation, unit test if applicable, complete functionality.
- A video (e.g. on YouTube) demonstrating your code.
- You must already be proficient in C++.
- Take your time to learn about MRPT. Try downloading it and launching demo applications, for example.
- Take a look at the projects in the "GSoC ideas page". Discuss those of your interest, or your own ideas, in the MRPT forum/mailing list.
- Read carefully about Google's student eligibility rules.
- Sign up in GSoC and post your project proposal to the MRPT Organization.
- Don't forget including a coding portfolio of past/current projects and your GitHub username in your application.
- Rules say that all communications between students and mentors should happen in public: please, use the MRPT mailing list or GitHub comments in pull-requests or commits whenever possible.
MRPT provides developers with portable and well-tested applications and C++ libraries covering data structures and algorithms employed in common robotics research areas. ROS (Robot Operating System), supported by the OSRF, provides libraries and tools to help software developers create robot applications. It provides hardware abstraction, device drivers, libraries, visualizers, message-passing, package management, and more.
At present (Feb-2016), only a minimal part of MRPT functionality is available to ROS users, hence that many of the project ideas are aimed at developing MRPT-powered ROS packages.
List of potential mentors:
- Jose Luis Blanco (jlblancoc)
- Javier G. Monroy (JGMonroy)
- Jesus Briales (jesusbriales)
- Eduardo Fernandez-Moral (EduFdez)
-
Brief description: Design a set of "QR code-like" bidimensional markers suitable for recognition from several meters away, write (or integrate existing) C++ code to detect and unequivocally identify them by some unique ID numbers in stereo images. A set of non-aligned points (a bidi array of corners?) must be detected with (sub)pixel accuracy to enable the optimization algorithm to converge to a non-degenerate solution. With all these, you can write code for automatically reconstruct the 3D pose (SE3) of all markers and the exact trajectory of the camera. This is called Bundle Adjustment or SLAM, and consists in solving an optimization problem, most of its pieces already implemented in MRPT. Also, once a map of markers is generated, one can run the optimization for the camera poses only, allowing accurate and robust localization, with applications to autonomous vehicle navigation, augmented reality, etc.
-
Expected results:
-
A new C++ class in
mrpt-vision
for QR-like markers detection. When finished, its integration into OpenCV will be considered. -
Generic new C++ classes in
mrpt-slam
for the SLAM and localization problems. -
A working application capable of running the new methods on live or offline stereo visual datasets.
-
The method must work for professional stereo cameras (e.g. Bumblebee2). The organization will provide the student with stereo images of the markers designed by him/her.
-
The method may optionally also work with a pair of consumer-grade webcams, in the case the student wants to print his/her own markers for testing at home.
-
Knowledge prerequisites: C++, computer vision, OpenCV, numerical optimization.
-
Difficulty level: Middle
-
Brief description: Use ROS pluginlib to integrate MRPT TP-Space reactive navigation for autonomous vehicles/robots as a local_planner in
move_base
. Further reading:- http://wiki.ros.org/move_base
- http://www.mrpt.org/Obstacle_avoidance (Incl
- There exists at present an independent ROS node for MRPT reactive navigation, mrpt_reactivenav2d, but it is not integrated into
move_base
- Expected results: Being able to launch a navigation command in ROS' RViz so it is firstly processed by existing ROS global planners and the path followed locally by MRPT methods. Writing a good tutorial on ROS Wiki about the process would be also a great outcome.
- Knowledge prerequisites: C++, GNU/Linux, vehicle kinematics.
- Difficulty level: Middle-high.
Useful for features-based mapping and localization: laser corners This task only includes the definition of a generic SLAM/Localization node, without integration with real sensors.
- Brief description:
- Expected results:
- Knowledge prerequisites: C++, GNU/Linux.
- Difficulty level: Middle.
MRPT features RBPF-SLAM with different kinds of map models and sensors. Create ROS nodes for some practical cases:
-
LIDARs + occupancy grid maps.
-
Range-only sensors + beacon maps.
-
Brief description:
-
Expected results:
-
Knowledge prerequisites: C++, GNU/Linux.
-
Difficulty level: Middle / Middle-high.
-
Brief description: Many datasets are available in MRPT Rawlog format or can be imported to it (e.g. Carmen logs). ROS log format (rosbag) is incompatible, so run-time or off-line conversion tools are required if Rawlog datasets want to be used in a ROS application.
- mrpt_rawlog ROS wiki page of existing packages. Very limited set of sensors are implemented at present.
-
Expected results: Being able to view all/most sensory data from a complex Rawlog dataset, e.g. Málaga Urban Dataset, in ROS RViz. It may be done via run-time on-the-fly conversion (easier) or by a new command-line tool capable of converting among
rawlog
androsbag
formats (harder). - Knowledge prerequisites: C++, GNU/Linux.
- Difficulty level: Low / Middle-Low.
-
Brief description:
- During 2005-2008 there existed a complex GUI application with this purpose called
SimpleMapsViewer
, but it was Windows-only (written in Borland C++ Builder!) so it was dropped when MRPT became crossplatform. - It is strongly recommended to have a look at a working snapshot of the old app (from 2008!) to get an idea of the expected basic functionality: (SimpleMapsViewer-MRPT-0.5.3-win32.zip)[http://ingmec.ual.es/~jlblanco/downloads/SimpleMapsViewer-MRPT-0.5.3-win32.zip] Use: Extract the ZIP, execute
SimpleMapsViewer.exe
and load the example map filelocalization_demo.simplemap
. - At present, the only similar app in MRPT is observations2map, which allows generating metric map but without a GUI and without edit possibilities.
- During 2005-2008 there existed a complex GUI application with this purpose called
-
Expected results: A new GUI app should be able to load recent versions of MRPT simple maps as generated from ICP-SLAM or RBPF-SLAM. The app must allow inspecting the raw observations (at least, 2D LIDAR scans and monocular and stereo images) and generate one or more metric maps according to user-given parameters, e.g. 2D point clouds, 2D occupancy grid maps, a 3D octomap, etc.
-
Knowledge prerequisites: C++, GUI design (Qt or wxWidgets).
-
Difficulty level: Middle
- Brief description:
- Expected results:
- Knowledge prerequisites:
- Difficulty level: