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.