• Stars
    star
    218
  • Rank 181,805 (Top 4 %)
  • Language
    C++
  • License
    GNU General Publi...
  • Created over 2 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

The code implemented in ROS projects a point cloud obtained by a Velodyne VLP16 3D-Lidar sensor on an image from an RGB camera.

Description

The code implemented in ROS projects a point cloud obtained by a Velodyne VLP16 3D-Lidar sensor on an image from an RGB camera. The example used the ROS package to calibrate a camera and a LiDAR from lidar_camera_calibration. In order to have points in a denser cloud, we interpolate the point cloud data by converting the point cloud to a range image and a bilinear interpolation with the armadillo library.

Interpolated point cloud

The white dots are the original point cloud of the Velodyne VLP-16 lidar. The colored dots are the interpolated point cloud.

Lidar and camera fusion

Requisites

  • ROS Melodic or Noetic
  • Velodyne repository
      cd ~/(your_work_space)/src
      git clone https://github.com/ros-drivers/velodyne.git -b melodic-devel
      cd ..
      catkin_make --only-pkg-with-deps velodyne
    
  • PCL (Point Cloud Library) (tested with pcl 1.8)
  • Armadillo (11.0.1 or higher)
      tar -xvf armadillo-11.1.1.tar.xz
      cd armadillo-11.1.1
      mkdir build
      cd build
      cmake ..
      make
      sudo make install
    

Topics

Suscribed Topics

~/pointcloudTopic Input Point Cloud message. (sensor_msgs/PointCloud2)

~/imageTopic Input image message. (sensor_msgs/Image)

Published Topics

Lidar and camera fusion

~/points2 Output point cloud interpolated. (sensor_msgs/PointCloud2) ~/pcOnImage_image lidar point cloud projected on input image. (sensor_msgs/Image)

Interpolated point cloud

~/pc_interpoled Output point cloud interpolated. (sensor_msgs/PointCloud2)

Clone repository

    cd ~/catkin_ws/src
    git clone https://github.com/EPVelasco/lidar_camera_fusion.git
    cd ..
    catkin_make --only-pkg-with-deps lidar_camera_fusion

Ros Launch

Lidar and camera fusion

  roslaunch lidar_camera_fusion vlp16OnImg.launch 

Interpolated point cloud

  roslaunch lidar_camera_fusion interpolated_vlp16.launch

Testing the package

LiDAR Odometry

Lidar odometry has been experimented with the original point cloud and with the interpolated point cloud. You need to install the FLOAM package, it is recommended to use the following fork. We prepared a rosbag for testing with the LiDAR odometry and LiDAR interpolation package. The rosbag is from a closed loop in an outdoor environment generated with a velodyne VLP16. It is necessary to modify the name of the topic in the lauch file. Thus, to run FLOAM with the original point cloud you put the topic /velodyne_points, and to launch FLOAM with the interpolated lidar you have to put the topic

Lauch FLOAM, interpolated_vlp16 and rosbag

roslaunch floam floam_experimets.launch
roslaunch lidar_camera_fusion interpolated_vlp16.launch
rosbag play {your/rosbag/file/address}/loop_8.bag

Results

The image shows the odometry results with the FLOAM package, where the path A and B are generated by the point cloud without interpolation and interpolated respectively. The test was performed after running the rosbag 4 times in a row.

Applications

Detection and depth estimation for domestic waste in outdoor environments by sensors fusion. Preprint

Citation

Application

@article{paez2022detection,
  title={Detection and depth estimation for domestic waste in outdoor environments by sensors fusion},
  author={P{\'a}ez-Ubieta, Ignacio de L and Velasco-S{\'a}nchez, Edison and Puente, Santiago T and Candelas, Francisco A},
  journal={arXiv preprint arXiv:2211.04085},
  year={2022}
}

Code

@misc {EPVelasco_lidar, 
  author = {Edison Velasco}, 
  title = {Lidar and camera fusion}, 
  year = {2022}, 
  editor = {GitHub}, 
  revista = {GitHub Repository},
  url ={github.com/EPVelasco/lidar-camera-fusion}, 
}  

More Repositories

1

lilo

LiLo: Lite 3D-Lidar Odometry
C++
13
star
2

pc2image

This code converts a point cloud obtained by a Velodyne VLP16 3D-Lidar sensor into a depth image mono16.
C++
13
star
3

pc_on_image

The code implemented in ROS projects a point cloud obtained by a Velodyne VLP16 3D-Lidar sensor on an image from an RGB camera.
C++
10
star
4

acados_casadi_ml_Jetson

This docker has Acados, Casadi, neural mpc and ROS Noetic for NVIDIA Jetson. It has been tested on a Jetson Nano and Jetson Orin NX
Dockerfile
8
star
5

acados_casadi_ml

Docker file of ML-Casadi, acados and ROS
Dockerfile
4
star
6

Lidar3D_and_camera

Testing of transformation matrices between Lidar Velodyne VLP16 and RGB camera with MatLAB
MATLAB
4
star
7

bluePlot_Matlab

plot a 3D model of the an UGV robot in Matlab software
MATLAB
4
star
8

livox_360_processing

This package developed in ROS is for point cloud processing of a livox360 sensor.
C++
4
star
9

VisualServoing_NMPC

This repository combines visual srvoing projected to a null space operator and Nonlinear Model Predictive Control (NMPC). The controller is used for autonomous navigation over photovoltaic arrays.
4
star
10

Multi-GNSS

Low cost Multi-GNSS system that has 3 UbloxNeo-M8N modules in one unmanned ground vehicle.
C++
3
star
11

ouster_filtering

This package developed in ROS filters the point cloud of the ouster os1 128 sensor by range imaging and people detection with yolov5.
C++
3
star
12

vision_matrice100

C++
2
star
13

PID_Arduino_Motor

This repository presents a code designed in Arduino for bidirectional PID control of a DC motor, with the option of Serial or I2c communication.
C++
2
star
14

Descriptores_de_agarres

Este repositorio contiene los descriptores de los agarres generados con una mano Allegro Hand junto con un conjunto de sensores Tekscan Grip System
Jupyter Notebook
2
star
15

m5Alexa

M5-atom added to Alexa for voice command operation
C
1
star
16

Serial_Arduino_Function

This code presents a simple function to unframe data received on a serial port.
C++
1
star
17

image2pc

This code converts a depth image provided by the pc2iamge package of a Velodyne VLP16 3D-Lidar sensor into a point cloud.
C++
1
star