Author: Olalekan Ogunmolu
The sensor captures a single 3D profile for each camera exposure. The Ensenso camera uses the projected texture stereo vision technique and is fitted with two global shutter CMOS sensors and a pattern projector, which projects a random dot pattern onto the object to be captured.
Figure 1: Left: Raw Image from the Sensor's Camera
Right(left: inset): Point Cloud from scene of the head ย
Right(right inset): Point Cloud after segmenting face from head
For 3D visualization, we need OpenGL 3.0 compatible graphics card and drivers. A minimum iof 2GB RAM and 2GHz CPU frequency is required to run the camera. This code is C++-11 compatible. It would not compile without enabling the c++ 11 options on your compiler. A minimum of g++ 4.8 or VS 2012 is required to run this code.
ROS Indigo/Jade/Kinetic. Possible backwards compatibility with ROS Hydro but not tested.
Please make sure you have the IDS uEye driver installed in version 4.00 or higher. For N20, N30 and N35 cameras a driver with version 4.41 or higher is required. Please visit ensenso download page and download and install the latest driver for your system.
After the uEye driver installation is complete, download the latest EnsensoSDK software release from ensenso download and follow the instructions on screen to install the software.
The sensor requires pcl-1.8.0. Clone the 1.8.0 trunk from the pcl github repo, then follow the readme instructions to install. Remember to turn on ensenso
features during compilation e.g. cmake -D WITH_ENSENO=ON ../
from your build directory.
A good place to install might be in your Documents directory. After installing, be sure to set the directory of the cmake pcl config file to that where the libraries are installed in the CMakeLists.txt
. For example, the config file could be at /usr/local/share/pcl-1.8/PCLConfig.cmake
. Go to the CMakeLists.txt file within the root directory of this project and amend the PCL directory/path to the one where your installer saves it (you can easily find this in the installer_manifest.txt
file of your build directory).
- VTK LIBRARY (Optional)
- Boost Library (Optional)
Open idscameramanager
with root privileges and manually set the ip address of ensenso to a persistent one. A typical one might be 192.168.1.11
for example.
In our setup, we connect the camera to a local router and connect our system to the same router so that the desktop can access the internet while having access to the ensenso camera.
In addition, ensure your ubuntu firewall is turned off:
sudo ufw disable
If you encounter problems during set-up, it might be worth the while runing the ueyesetupid
executable packed into the gunzipped tarball available at setup id. You would want to unzip the tar ball and run the ueyesdk-setup-4.81-eth-amd64.gz.run
file. This should install configuration files to your /usr/local/share/ueye/bin
directory from where you can configure the id of your sensor (which should be 1 by default).
-
Power up the sensor. Connect the Power/LAN cable to the sensor and the other end to the Ethernet port on the RJ45 connector port on your computer
-
Clone this repo to your catkin src folder then
catkin build
from your catkin workspace root. -
Run the program
-
The bridge is our ros interface to the sensor.
We can bring up the ros nodes with,
Terminal 1$ rosrun ensenso ensenso_bridge
-
To visualize the ir and point clouds of the environment, we would run
Terminal 2$ rosrun ensenso_viewer ensenso_viewer
-
Segmentation described in the paper is performed in
rosrun ensenso_seg ensenso_seg
-
Recognition and Detection with CMU Open Face Detector
rosrun ensenso_detect ensenso_detect
Be sure the id of the sensor is properly set using the ids camera manager
configuration utility that ships with ueye. You can find this in the images folder of this package.
Please follow the advice listed in the Installation section
I solved this problem by simply uninstalling em, and installing empy:
pip uninstall em pip install empy
See this issue ticket.
Catkin build as follows:
cb -DPYTHON_VERSION=2.7
. Be sure to delete your devel, build and logs spaces before re cb'ing
remove the ensenso_seg files from your catkin built devel space
rm devel/liv/.private/ensenso_seg -rf
If you run into further issues, feel free to open an issues ticket.
If you used ensenso
in your work, I would be glad if you could cite it.
@electronic{ensenso,
author = {Ogunmolu, Olalekan P.},
title = {{ensenso pointclouds in C++}},
year = {2016},
url = {\url{https://github.com/lakehanne/ensenso}},
note = {Accessed December 24, 2016}
}