ROS package developed by the Control Robotics Intelligence Group from the Nanyang Technological University, Singapore. This package acts as a ROS driver for the ensenso 3D cameras.
The master branch is compatible with both ROS Hydro and Indigo.
Update (13-Jun-2016): On going development continues in the kinetic-devel branch.
- Ensenso camera N35 (Ethernet version) (Tested with N35-802-16-BL and N35-804-16-BL models)
- ROS Hydro (Ubuntu 12.04, 64 bits) or ROS Indigo (Ubuntu 14.04, 64 bits)
- See the installation instructions below.
- Throughout the various files in this repository.
TODO
The Ensenso drivers are available for download here: http://www.ensenso.com/support/sdk-download/. You need to install 2 things:
- uEye Driver 4.72
- EnsensoSDK 1.3.180
Note: We have the ethernet version, so install the corresponding drivers.
Now, check your installation running the nxView command.
The first time you run it, the camera should appear under Monocular Cameras. Press the Auto Config button. This will move the camera to Depth Cameras. Select the camera and click Open.
In case you don't see the camera at all, check your internet connection, ping the camera or try to restart the ueye daemon: sudo /etc/init.d/ueyeethdrc restart
You need at least PCL 1.8.0 to be able to use the Ensenso cameras. To do so, you need to install PCL from source.
$ sudo apt-get install g++ libboost-all-dev libeigen3-dev libflann-dev libvtk5-dev python-vtk libvtk5-qt4-dev libvtk-java libqhull-dev libgomp1 libpcap-dev
Clone the PCL repository:
$ cd ~/git
$ git clone https://github.com/PointCloudLibrary/pcl.git
We require c++11 support. In the file ~/git/pcl/CMakeLists.txt locate the line that contains this:
SET(CMAKE_CXX_FLAGS "-Wall ...
And add the c++11 flag:
Ubuntu 12.04
SET(CMAKE_CXX_FLAGS "-Wall -std=c++0x ...
Ubuntu 14.04
SET(CMAKE_CXX_FLAGS "-Wall -std=c++11 ...
Create a build directory, compile and install:
$ cd ~/git/pcl
$ mkdir build && cd build
$ cmake -DCMAKE_BUILD_TYPE=Release ..
$ make -j `nproc`
$ sudo make install
Go to your ROS working directory. e.g.
$ cd ~/catkin_ws/src
Clone the required repositories:
$ git clone https://github.com/ros-perception/perception_pcl.git -b $ROS_DISTRO-devel
$ git clone https://github.com/crigroup/ensenso.git
You need to make pcl_ros depend on PCL 1.8.0. In the file ~/catkin_ws/src/perception_pcl/pcl_ros/CMakeLists.txt locate the line that contains this:
find_package(PCL REQUIRED)
And replace it by:
find_package(PCL 1.8.0 REQUIRED)
Install any missing dependencies using rosdep:
$ rosdep update
$ rosdep install --from-paths . --ignore-src -y
Now compile your ROS workspace. e.g.
$ cd ~/catkin_ws && catkin_make
Be sure to always source the appropriate ROS setup file, e.g:
$ source ~/catkin_ws/devel/setup.bash
You might want to add that line to your ~/.bashrc
Try the following command (Be patient, the ensenso camera takes around 10 seconds to start):
$ roslaunch ensenso viewer.launch
If you get errors related to OpenNI2 or boost version required 1.47 when building pcl set the WITH_OPENNI2 compilation flag to OFF:
$ cmake -DCMAKE_BUILD_TYPE=Release -DWITH_OPENNI2=OFF ..
In the file ~/git/pcl/io/CMakeLists.txt comment out the source file src/vlp_grabber.cpp.
Additionally, in the file ~/git/pcl/visualization/tools/CMakeLists.txt comment out these two lines:
PCL_ADD_EXECUTABLE(pcl_vlp_viewer ${SUBSYS_NAME} vlp_viewer.cpp)
target_link_libraries(pcl_vlp_viewer pcl_io pcl_common pcl_visualization)
If you get errors like these while compiling PCL:
/tmp/ccRLy4Re.s:2488: Error: no such instruction: `vfmadd312ss (%r9),%xmm2,%xmm1'
/tmp/ccRLy4Re.s:2638: Error: no such instruction: `vfmadd312ss (%rdx),%xmm2,%xmm1'
/tmp/ccRLy4Re.s:3039: Error: no such instruction: `vfmadd312ss (%rax,%r11,4),%xmm5,%xmm1'
/tmp/ccRLy4Re.s:3402: Error: no such instruction: `vfmadd312ss (%rax,%r11,4),%xmm5,%xmm1'
/tmp/ccRLy4Re.s:3534: Error: no such instruction: `vfmadd312ss (%rax,%rdx,4),%xmm1,%xmm2'
Please refer to these answers. For the dellstation (Ubuntu 12.04), I had to use: -march=native -mno-avx.
Look for errors using the ueye camera manager:
$ ueyecameramanager
Try restarting the ueye daemon
$ sudo /etc/init.d/ueyeethdrc restart
In case this doesn't work, try a forced stop before restarting:
$ sudo /etc/init.d/ueyeethdrc force-stop
You can change the camera IP using the ueyesetip command.