sl_sensor

SL Sensor: An open-source, real-time and ROS-based structured light sensor for high accuracy construction robotic applications

https://github.com/ethz-asl/sl_sensor

Science Score: 59.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
  • .zenodo.json file
  • DOI references
    Found 2 DOI reference(s) in README
  • Academic publication links
    Links to: sciencedirect.com
  • Committers with academic emails
    1 of 2 committers (50.0%) from academic institutions
  • Institutional organization owner
    Organization ethz-asl has institutional domain (www.asl.ethz.ch)
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.5%) to scientific vocabulary
Last synced: 7 months ago · JSON representation ·

Repository

SL Sensor: An open-source, real-time and ROS-based structured light sensor for high accuracy construction robotic applications

Basic Info
Statistics
  • Stars: 116
  • Watchers: 6
  • Forks: 33
  • Open Issues: 0
  • Releases: 0
Created almost 5 years ago · Last pushed over 3 years ago
Metadata Files
Readme License Citation

README.md

drawing

SL Sensor is an open-source, ROS-based, structured light sensor for high-accuracy 3D scanning. It can produce high-fidelity point clouds in real-time at 5Hz using hardware triggering of the camera and the projector. Detailed information can be found in this publication.

drawingdrawing

Refer to the Wiki pages for the wiring schematics, CAD as well as steps to calibrate/setup the sensor.

The sample build we have provided contains two cameras (because we want it as a research platform to test our linear motion compensation strategy in both directions) but it can be modified to work with only one camera as well.

Some experience with C++ and ROS is required to troubleshoot and configure roslaunch files to make it work on your system.

Demos

Scanning of Brick and Mortar Wall

https://user-images.githubusercontent.com/19413243/140678239-58d45401-ebac-4b78-907e-b910440c43c0.mov

Scans of Table Tennis Balls (vs RealSense L515)

drawing

Linear Motion Compensation

https://user-images.githubusercontent.com/19413243/140685541-cc4db604-444c-4e43-932a-87a7f24c87e4.mov

Colour Scanning (Depth Information using top camera, RGB information using left camera)

https://user-images.githubusercontent.com/19413243/140679279-821adcbb-1930-419e-af2e-e022aaa04d4a.mov

System Requirements

  • Computer/Laptop with at least one USB3 Port
  • Ubuntu 18.04 with ROS Melodic installed
  • Required Libraries (* included in 18.04 installation)
    • *yaml-cpp (Version 0.5.2)
    • *OpenCV 3.2.0
    • *Point Cloud Library PCL (Version 1.8)
    • Spinnaker (Version 2.4.0.143)
    • Open3d (Version 0.13.0) NOTE: Please refer to this issue to ensure that you can build and install Open3d so that it is ROS-compatible

Contained Packages

  • slsensorcalibration: Calibration utilities for the SL Sensor
  • slsensorcodec: Generate different structured light patterns (encoding) and processing images to obtain projector coordinates (decoding)
  • slsensorimage_acquisition: Group images that are from the same pattern sequence together from timestamped image streams from Versavis
  • slsensorlogger: Logging utilities to save images and point clouds
  • slsensormotion_compensation: Motion compensation algorithm that enables scanning while in motion (constrained to linear motion at the moment)
  • slsensorreconstruction: Converts decoded projector coordinate images into point clouds
  • slsensorregistration: Basic utilities to register point cloud in a pairwise fashion using ICP
  • slsensorrqt_gui: Simple GUI for calibration and scanning
  • slsensortimer: Basic timing utilities

Build

  1. Set up your Personal Access Token so you can clone over SSH
  2. Install ros-melodic
  3. Clone this repository into the src folder of your workspace
  4. Configure your workspace to build in release: catkin config --cmake-args -DCMAKEBUILDTYPE=Release
  5. Install vcstool and catkin-tools from apt: sudo apt install python3-catkin-tools python3-vcstool
  6. From the src folder of your workspace, clone source dependencies with vcs tool: vcs import < sl_sensor/dependencies.vcs
  7. From the src folder of your workspace, install the system dependencies with rosdep: rosdep install --from-paths . --ignore-src -r -y
  8. Build the FLIR camera driver catkin build flir_camera_driver
  9. Build the SL Sensor package catkin build sl_sensor
  10. To ensure the scannning RQt dashboard loads properly, change the directories in the following RQt perspective files to reflect the actual location in your computer
    • slsensor/core/slsensorrqtguis/slsensorrqtguiscommon/rqtperspectives/scanguimonochrome.perspective:
      Change line 527 ("repr": "u'/home/ltf/catkin
      ws/src/slsensor/slsensor/rviz/scanrqtgui_monochrome.rviz'")
    • slsensor/core/slsensorrqtguis/slsensorrqtguiscommon/rqtperspectives/scanguicolour.perspective:
      Change line 527 ("repr": "u'/home/ltf/catkin
      ws/src/slsensor/slsensor/rviz/scanrqtgui_colour.rviz'")

Making sure that the package is working

  1. Download the parameter files and rosbags from here
  2. Replace core/slsensorcodec/codecyaml/codecconfig.yaml with the codecconfig.yaml in the downloaded folder parameterfiles
  3. Replace the xml files primarycamera.xml, secondarycamera.xml, projector.xml core/slsensorcalirbation/calibrationfiles with those in the downloaded folder parameterfiles
  4. Start a roscore in a terminal by running roscore
  5. On a separate terminal run rosparam set /use_sim_time true
  6. Roslaunch the reconstruction pipeline that has the same pattern name as the rosbag in the downloaded folder
    • For example, if you want to run rosbag play --clock 2p1_tpu_horizontal.bag (make sure terminal is in the 2p1tpuhorizontal folder)
    • Run roslaunch sl_sensor 2p1_tpu_horizontal_motion_compensation.launch to see motion compensation in action
    • Run roslaunch sl_sensor 2p1_tpu_horizontal.launch if you want to see the distortion due to motion if a standard reconstruction pipeline is used

Citing this Work

If you used this repository for academic research, please cite the following publication:

@article{TengFoongLamSLSensor2022, title = {SL Sensor: An open-source, real-time and robot operating system-based structured light sensor for high accuracy construction robotic applications}, journal = {Automation in Construction}, volume = {142}, pages = {104424}, year = {2022}, issn = {0926-5805}, doi = {https://doi.org/10.1016/j.autcon.2022.104424}, url = {https://www.sciencedirect.com/science/article/pii/S0926580522002977}, author = {Teng Foong Lam and Hermann Blum and Roland Siegwart and Abel Gawel} }

Acknowledgements

This repo contains code adapted from: * Reconstruction pipeline components - SLStudio * Bundle Adjustment dual camera-projector calibration (experimental) IDIAP Multicam Calibration

Owner

  • Name: ETHZ ASL
  • Login: ethz-asl
  • Kind: organization
  • Location: Zurich, Switzerland

Citation (CITATION.bib)

@article{TengFoongLamSLSensor2022,
title = {SL Sensor: An open-source, real-time and robot operating system-based structured light sensor for high accuracy construction robotic applications},
journal = {Automation in Construction},
volume = {142},
pages = {104424},
year = {2022},
issn = {0926-5805},
doi = {https://doi.org/10.1016/j.autcon.2022.104424},
url = {https://www.sciencedirect.com/science/article/pii/S0926580522002977},
author = {Teng Foong Lam and Hermann Blum and Roland Siegwart and Abel Gawel}
}

GitHub Events

Total
  • Watch event: 19
  • Fork event: 6
Last Year
  • Watch event: 19
  • Fork event: 6

Committers

Last synced: 12 months ago

All Time
  • Total Commits: 264
  • Total Committers: 2
  • Avg Commits per committer: 132.0
  • Development Distribution Score (DDS): 0.004
Past Year
  • Commits: 0
  • Committers: 0
  • Avg Commits per committer: 0.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Lam Teng Foong t****m@y****g 263
Hermann b****h@e****h 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 12 months ago

All Time
  • Total issues: 3
  • Total pull requests: 8
  • Average time to close issues: about 1 month
  • Average time to close pull requests: 7 days
  • Total issue authors: 3
  • Total pull request authors: 1
  • Average comments per issue: 1.33
  • Average comments per pull request: 0.38
  • Merged pull requests: 8
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • ericwind1978 (1)
  • jakobwilm (1)
  • tengfoonglam (1)
Pull Request Authors
  • tengfoonglam (8)
Top Labels
Issue Labels
Pull Request Labels