Pose estimation tutorial

August 21

CAIP 2017, Ystad, Sweden


The scope of this tutorial is local descriptor based pose estimation and recognition of rigid objects from 3D data. Methods based on local 3D descriptors are showing great potential for recognition and pose estimation of rigid objects, even in challenging scenarios with occlusions and cluttering elements. There is a strong competition within the field, both regarding the choice of a suitable local descriptor for a task and on the algorithmic side. The motivation for achieving a robust and generally applicable solution to this problem is equally strong since this would have a great impact in applications involving autonomous robot systems, e.g. in industrial workcells and in welfare robotics.

This tutorial first introduces the basic concepts of the problem, which in most cases entails accurate reconstruction of complete orientation and position information (the pose) of the recognized objects. In practice, this is often achieved by driving the search for a correct pose by individual point correspondences obtained by matching local descriptors. We review some of the most important local descriptors and show how these can be fused together to boost matching accuracy. Then we introduce some of the different methods available for recognizing 3D objects in point cloud data.

In the last part of this tutorial, we introduce some basic code examples using our own library, aimed at giving the attendees a head start when setting up new object recognition and pose estimation pipelines for 3D data. For those interested in following along with the code examples, installation instructions for the library can be found on the project page: gitlab.com/caro-sdu/covis.


14:00-15:30 Foundations of descriptor based pose estimation and object recognition in 3D data

15:30-16:00 Coffee break

16:00-17.30 Current methods and a practical

Getting started

You can follow along with my code examples during the tutorial, either on your own machine (recommended) or using a virtual machine that I provide.

With a newer Ubuntu Linux installation (16.04 and up), you can use your own machine. Follow these steps:

  • First, you need our own C++ library, CoViS. Compilation guidelines are on the project page: gitlab.com/caro-sdu/covis.
  • After you've successfully compiled the library, additionally compile the python bindings by this command: make covis_python.
  • Get the code and data from the tutorial repository by running the following command from the root folder that you also cloned CoViS into: git clone https://gitlab.com/andersgb1/caip2017petutorial.git.
  • Finally, test that everything works by running the first, basic example from the tutorial folder (remember to do a cd caip2017petutorial first): python preprocessing.py chef.ply --resolution-surface=1 --resolution-feature=5. When a viewer pops up, press R to reset the viewpoint, followed by pressing 1 to switch to depth renderer for point clouds. Press q to close the current viewer.

If you do not have a Linux box, you can use a virtual machine that I have set up using VirtualBox. Having installed VirtualBox on your host machine, you should be able to import my virtual machine (the guest), which you can download here. Note that the file is 4.4 GiB and that the virtual machine is setup to use 2 GiB of RAM. Within this machine, you just need to open a terminal and cd to the folder workspace/caip2017petutorial to get started. Note that this option is entirely at your own risk, since I cannot in advance test how the virtual machine performs on your system.


CAIP 2017 pose estimation tutorial slides


Anders Glent Buch, University of Southern Denmark (anbu@mmmi.sdu.dk)