Git Product home page Git Product logo

laser_scan_matcher's Introduction

Laser Scan Matcher for ROS

This repo is the implementation of Point-to-Line Iterative Closest Point (PL-ICP) algorithm proposed by Censi [1]. The original code can be found in [2]. However, there are some bugs about ROS tf transform in the original code. I fixed the bugs and added the mapping module following the programming habits in open karto library [3].

How to use on Ubuntu?

1. This package has been tested well in Ubuntu 16.04 with ROS Kinetic.

2. If you want to use it, you must install csm first:
    $ sudo apt-get install ros-kinetic-csm

3. Clone the repo to your workspace and complie it
    $ cd ~/catkin_ws/src/
    $ git clone https://github.com/nkuwenjian/laser_scan_matcher.git
    $ cd ../
    $ catkin_make
    $ source devel/setup.bash

4. Run offline rosbag
    $ roslaunch laser_scan_matcher demo.launch
    $ rosbag play <rosbagfile> --clock

Topics

Subscribed topics

Published topics

Thanks

[1] A. Censi, "An ICP variant using a point-to-line metric," in Proceedings of the IEEE International Conference on Robotics and Automation, 2008, pp. 19-25.

[2] https://github.com/ccny-ros-pkg/scan_tools

[3] https://github.com/ros-perception/open_karto

laser_scan_matcher's People

Contributors

nkuwenjian avatar

Stargazers

zz avatar Yaozhong Kang avatar  avatar  avatar  avatar  avatar 庄庭达 avatar  avatar Juwon Kim avatar 赵焕峰 avatar Hyungtae Lim avatar Zhihao Zhan avatar Matthew avatar  avatar fangxiao avatar  avatar Hayden avatar  avatar Matt avatar Amro Al-Baali avatar  avatar Alp Mercan avatar Sai Nikhil Rao Gona avatar sjwa avatar Xu Pengfei avatar grdiv avatar  avatar Mohamed Ali Abdelhafez avatar  avatar  avatar Daniyal Ansari avatar Sriram Vaikundam avatar Zihong Yan avatar Furkan Edizkan avatar Baasit avatar  avatar  avatar  avatar Tao Yuting avatar  avatar  avatar  avatar  avatar Russ Hall avatar Yannis avatar zhanghairong avatar  avatar 然 avatar  avatar 天宇 avatar  avatar Dhammiko Arya avatar Zulhafiz Zulkifli avatar Giacomo Frigo avatar  avatar Khalis Fadil avatar  avatar  avatar  avatar  avatar Tomato1107 avatar Lucas Zhang avatar Lili ZHENG avatar linghusmile avatar Joye-zhangbo avatar  avatar liyunlong avatar Kang Yifei avatar JaySlamer avatar Arun Kumar D avatar Evalyn avatar liyang avatar  avatar cgdsss avatar Pol avatar  avatar  avatar Robert avatar zzh avatar Michael avatar SHI Bo avatar Yi Xie avatar Bob Davies avatar WLwind avatar Renan Salles avatar JIAGANG CHEN avatar 刘国庆, Guoqing Liu avatar Realcat avatar happymoon avatar Kache avatar Robotics_Qi avatar WangNing avatar Abdelhak Bougouffa avatar ChengYang Li avatar Santiago Jiménez avatar Yongkie Wiyogo avatar  avatar rg avatar Charles avatar  avatar

Watchers

James Cloos avatar  avatar  avatar WangNing avatar  avatar

laser_scan_matcher's Issues

What are the differences to the original?

Hey!

I'm using the scan_matcher and just found your fork. Could you maybe add something in the ReadMe regarding the bugs you fixed? In which cases does your version behave different?

Is IMU sensor required?

Hi @nkuwenjian ,

currently, I don't have IMU mounted on my robot. I can create the map, but is a little bit distorted. Does laser-scan-matcher need an IMU sensor?
If yes, where can I find the code segment of the IMU sensor fusion?

How to get the lidar measurement points in the map frame?

Hi @nkuwenjian ,

I have another questions. The function scanCallback() is the start entry of the scan processing if a lidar measurements coming. It contains three important steps : getLaser(), processScan(), and updateMap().

There is no documentation in both repositories from scan_tools and open_karto. Thus, I would like to ask how can I get the measurement points at the map frame?

Furthermore, since the function int value = occ_grid->GetValue(Vector2<int>(x, y)); is index-based. If I have a point (x,y) from the map frame in meter, how can I get the value at the occupancy gridmap?

Thanks

How to integrate Laserscanner?

Hi @nkuwenjian ,

I found your repository, and thank you for your work simplifying the laser scan matching libs in one repository.
I tested with my bagfile, and it works very good. However, if I cannot work directly with the laserscanner (RPlidar).

Using this modification in the launch file, I only see one update of the occupancy grid map. The scan matcher seems not working.

<param name="/use_sim_time" value="false"/>
<node pkg="tf" type="static_transform_publisher" name="base_link_to_laser"
    args="0.15 0.0 0.0 0.0 0.0 0.0 /base_link /laser 40" />
<node pkg="laser_scan_matcher" type="laser_scan_matcher_node"
    name="laser_scan_matcher_node" output="screen">
    <param name="map_frame" value="map"/>
    <param name="base_frame" value="base_link" />
    <param name="max_iterations" value="10"/>
    <param name="do_compute_covariance" value="1"/>
  </node>

Could you give me a hint how to see the real time scan matching by integrating the /scan topic directly?

From the visualization of the nodes, topics and the TF tree, these are the differences:

Offline with bagfile:

scanmatcherFromBag
tfBagfile

Online with the laserscan:
scanmatcherFromRpLidar

tfRplidar

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.