Code Monkey home page Code Monkey logo

duo3d_driver's Introduction

#DUO3D Driver for ROS

The duo3d_driver ROS node interfaces with DUO SDK and publishes stereo images, disparity, point cloud, and IMU data from the DUO3D sensor. This package is build on Ubuntu 16.04.1 LTS x64 running ROS Kinetic.

##Introduction The DUO MLX is an ultra-compact imaging sensor with global shutter and a standard USB interface for ease of use and connectivity. The DUO is intended for use in research, autonomous navigation, robotics and industrial areas. The camera's high speed and small size make it ideal for existing and new use cases for vision based applications.

DUO MLX

With a programmable illumination board and built-in IR filters and auto-exposure it allows for precise control of lighting environment, delivering configurable and precise stereo imaging for robotics, inspection, microscopy, visual odometry, human computer interaction and beyond.

The DUO MLX solution consists of:

  • Factory Calibrated Stereo Camera
  • Industrial Grade Monochrome/Global Shutter Sensors
  • Integrated Accelerometer/Gyroscope/Temperature (6 DoF IMU)
  • Fully Programmable Active LED Array (3xIR 850nm High Power LEDs)
  • DUO SDK License
  • DUO Dense3D License
  • USB Mini-B Cable

The DUO line of sensors offer a versatile board level solution for 3D sensing, a solution equipped with IMU and IR illumination and a board level sensor with an aluminum enclosure and a complete system for utilizing stereo vision that comes with a DUO MLX sensor and the DUO VPC processor. All DUO sensors are ready to work right out of the box and support a wide range of accessories and configurations.

For more information visit DUO3D Home Page

##Installation

###DUO SDK The DUO SDK package is required for DUO device support under your Linux operating system. It consists of kernel module and user mode libraries that expose all of the DUO functionalities with a simple and concise C/C++ API. Included in the package is the Dense3Dā„¢, an SIMD/NEON optimized multi-threaded library that performs the disparity and 3D data extraction from DUO stereo image pair.

###DUO ROS package DUO ROS driver is developed and supported in ROS Kinetic.

Get the package from github and put it in your catkin workspace ''src'' folder:

$ cd ~/catkin_ws/src
$ git clone https://github.com/duo3d/duo3d_driver

Build the package:

$ cd ~/catkin_ws
$ catkin_make duo3d_driver
$ source ./devel/setup.bash

###Published Topics The duo3d_driver node interfaces with DUO SDK and publishes images, disparity, point cloud, and IMU data from the DUO3D sensor.

  • /duo3d_driver/left/image_rect (sensor_msgs/Image) Left camera rectified image
  • /duo3d_driver/left/camera_info (sensor_msgs/CameraInfo) Left camera info
  • /duo3d_driver/right/image_rect (sensor_msgs/Image) Right camera rectified image
  • /duo3d_driver/right/camera_info (sensor_msgs/CameraInfo) Right camera info
  • /duo3d_driver/rgb/image_rect (sensor_msgs/Image) Left camera RGB rectified image
  • /duo3d_driver/rgb/camera_info (sensor_msgs/CameraInfo) Left camera info
  • /duo3d_driver/depth/image_raw (sensor_msgs/Image) Colored disparity image
  • /duo3d_driver/depth/camera_info (sensor_msgs/CameraInfo) Disparity info
  • /duo3d_driver/point_cloud/image_raw (sensor_msgs/PointCloud2) DUO 3D point cloud data
  • /duo3d_driver/imu/data_raw (sensor_msgs/Imu) DUO IMU data

###Parameters

  • ~frame_rate (double, default: 30) DUO image capture frame rate
  • ~image_size (vector, default: {640,480}) DUO image frame size
  • ~dense3d_license (string) Dense3D license string
  • ~gain (double, default: 0%) Image gain value [0, 100]
  • ~exposure (double, default: 50%) Image exposure value [0, 100]
  • ~auto_exposure (bool, default: False) Image auto exposure value [False, True]
  • ~camera_swap (bool, default: False) Image swap [False, True]
  • ~horizontal_flip (bool, default: False) Horizontal image flip [False, True]
  • ~vertical_flip (bool, default: False) Vertical image flip [False, True]
  • ~led (double, default: 10%) LED brightness value [0, 100]
  • ~accel_range (int, default: +/-2g (0)) Accelerometer Range [+/-2g (0), +/-4g (1), +/-8g (2), +/-16g (3)]
  • ~gyro_range (int, default: 250deg/s) Gyroscope Range [250deg/s (0), 500deg/s (1), 1000deg/s (2), 2000deg/s (3)]
  • ~imu_rate (double, default: 100Hz) IMU Data Sampling Rate [25, 500]
  • ~processing_mode (int, default: BM (0)) Dense3D Processing Mode [BM (0), SGBM(1)]
  • ~image_scale (int, default: ScaleXY (3)) Dense3D Image Scaling Mode [ScaleNone (0), ScaleX (1), ScaleY (2), ScaleXY (3)]
  • ~pre_filter_cap (int, default: 28) Dense3D Pre-filter cap [1, 63]
  • ~num_disparities (int, default: 4) Dense3D Number of disparities [2, 16]
  • ~sad_window_size (int, default: 6) Dense3D SAD Window Size [2, 10]
  • ~uniqueness_ratio (int, default: 27) Dense3D Uniqueness Ratio [1, 100]
  • ~speckle_window_size (int, default: 52) Dense3D Speckle Window Size [0, 256]
  • ~speckle_range (int, default: 14) Dense3D Speckle Range [0, 32]

##Testing the DUO ROS package Make sure that DUO device is plugged in the USB port and it is operating properly.

###DUO ROS Camera Example This example demonstrates the acquisition of rectified stereo image pair from DUO. To launch DUO Camera ROS example, in a terminal run the following command:

$ roslaunch duo3d_driver duo3d_camera.launch

You should see the following: DUO ROS Camera Example

###DUO ROS IMU Example This example demonstrates the DUO's on-board 6DoF sensor fusion using Madgwick algorithm running at 100Hz. To launch DUO IMU ROS example, in a terminal run the following command:

$ roslaunch duo3d_driver duo3d_imu.launch

You should see the following: DUO ROS IMU Example

###DUO ROS Point Cloud Example This example demonstrates disparity and point cloud generation using DUO. To launch DUO IMU Point Cloud example, in a terminal run the following command:

$ roslaunch duo3d_driver duo3d_depth.launch

You should see the following: DUO ROS Point Cloud Example

##Getting Help

  • For general help regarding DUO, you can visit the official DUO forum
  • For more information about DUO API please visit DUO SDK
  • For ROS specific issues, please open a ticket

duo3d_driver's People

Contributors

duo3d avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

duo3d_driver's Issues

64bit ARM binaries (TX1)

The newest Linux4Tegra 16.04 distribution finally ships a 64-bit userland. Older versions had a 32-bit userland on top of a 64-bit kernel, a pretty painful setup.

Can you please provide aarch64 .so libraries that we can use on the TX1? I can provide the hardware for testing if needed.

Duo3DConfig.h not find [solution]

Hey

As mentioned in https://github.com/duo3d/duo3d_driver/issues/2, the problem "Duo3DConfig.h cant find" could be solved by fixing the CMakeLists.txt.

But when i checked the codes from https://github.com/duo3d/duo3d_driver, the CMakeLists.txt from master branch is not corrected. So when you download and build the workspace following the guidelines from http://wiki.ros.org/duo3d-ros-driver, you may face to this problem.

So the solution would be fixing the /src/duo3d_driver/CMakeLists.txt according to https://github.com/duo3d/duo3d_driver/pull/3/commits/4bea60ca43dd68e641dd50e2c596f91e97d3e39e.

I tried and it works.

Indigo version

Is the driver installation compatible with Indigo version?

DUO MLX for ROS-Indigo

Hi i am planning to use the DUO MLX for obstacle avoidance in Mobile robots. However, I had a few concerns that I would like to know about

Does this ROS package/driver work with Ubuntu 14.04 and ROS-Indigo ? Is yes, then what changes do we need to make for it?

Does stereo Vision work well in night time without proper lightning?

How is the 3D point cloud as compared to ToF camera like Kinect2.

Thank you very much in advance

Wrong scale when using 320x240 resolution

The scale of the point cloud generated by duo3d when using the 320x240 resolution is wrong. The objects appear larger than they actually are, for example, an object that its height 15 cm appears to be a little bit more than 30cm. This does not occur when using the native 752x480 resolution. This can be easily measured using the "measure" tool in RVIZ.

Dense3D

I get an error "Could not open Dense3D library" when trying to launch the launchfiles

Missing file (Duo3DConfig.h)

Hi,
Thank you for the driver !! but unfortunately I think that there is a missing file :/
duo3d_driver.cpp:36:38: fatal error:

include <duo3d_driver/Duo3DConfig.h>

Could you fix it please ?

Calibration / Displacement

I've encountered an error while using the duo3d mlx for marker detection with apriltags.
I think it's an error in the calibration - but the apriltags node which gives me (relative to the camera) marker positions has a displacement. When Markers are straight in front of the camera (which appear in the middle of the image as well!) , it gives me an offset to the side.
I calibrated the camera like 100 times, but this only changed the offset a little. Anyone has ideas? Is there maybe a way to write a manually generated calibration to the camera? The calibration app doesn't give me this possibility.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    šŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. šŸ“ŠšŸ“ˆšŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ā¤ļø Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.