Compiling PCL on BeagleBone Black with Ubuntu 14.04

In my previous post I explained how to bring up Ubuntu 14.04 with LXDE desktop on BeagleBone Black.  In this blog post I will discuss how to port Point Cloud Library (PCL) to the same platform.

PCL is a powerful 3D vision library that supports many algorithms for 3D cameras such as Kinect and PrimeSense. Porting PCL to BeagleBone Black will enable the use of cost-effective embedded systems for 3D sensing.  Generally speaking the installation follows the same steps outlined in the referenced blog post, except for the following:

Add g++-multilib Support as a Prerequisite

sudo apt-get install g++-multilib

Remove soft floating point support

We need to fix a VFP issues by deleting the `-mfloat-abi=softfp` from the following two files:

~/kinect/OpenNI/Platform/Linux/Build/Common/Platform.Arm
~/kinect/SensorKinect/Platform/Linux/Build/Common/Platform.Arm

Fix a Missing Function

Next, fix the missing function:

XnStatus XnSensorDepthGenerator::GetPixelCoordinatesInView(). 

See this patch for detail.

Set Up 2GB of Swap File

PCL compilation on BeagleBone Black will takes several days.  You didn’t misread.  It takes several days.  Furthermore, in my experience, the build will crash unless there is at least 2GB of swap file set up.  If you set up Ubuntu on BeagleBone Black by following my previous blog post, you would have done this already.

Build PCL without GPU

The resulting build sequence should be as follow:

mkdir release
cd release
cmake -DCMAKE_BUILD_TYPE=None -DBUILD_apps=ON -DBUILD_examples=ON ..
make

References