Giter VIP home page Giter VIP logo

loam_velodyne's Introduction

loam_velodyne

Screenshot Sample map built from nsh_indoor_outdoor.bag (opened with ccViewer)

โœ… Tested with ROS Indigo and Velodyne VLP16. (Screencast)

All sources were taken from ROS documentation

Ask questions here.

How to build with catkin

$ cd ~/catkin_ws/src/
$ git clone https://github.com/laboshinl/loam_velodyne.git
$ cd ~/catkin_ws
$ catkin_make -DCMAKE_BUILD_TYPE=Release 
$ source ~/catkin_ws/devel/setup.bash

Running

roslaunch loam_velodyne loam_velodyne.launch

In second terminal play sample velodyne data from VLP16 rosbag:

rosbag play ~/Downloads/velodyne.bag 

Or read from velodyne VLP16 sample pcap:

roslaunch velodyne_pointcloud VLP16_points.launch pcap:="$HOME/Downloads/velodyne.pcap"

Troubleshooting

multiScanRegistration crashes right after playing bag file

Issues #71 and #7 address this problem. The current known solution is to build the same version of PCL that you have on your system from source, and set the CMAKE_PREFIX_PATH accordingly so that catkin can find it. See this issue for more details.


Quantifying Aerial LiDAR Accuracy of LOAM for Civil Engineering Applications. Derek Anthony Wolfe

ROS & Loam_velodyne

loam_velodyne's People

Contributors

adishavit avatar dimatura avatar facontidavide avatar haoala avatar jizhang-cmu avatar jlblancoc avatar kitkat7 avatar laboshinl avatar libing64 avatar matlabbe avatar stefanglaser avatar

Stargazers

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

Watchers

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

loam_velodyne's Issues

[laserMapping-3] process has died [pid 29080, exit code -11

@dimatura@evenator @laboshinl @facontidavide
_001

I run the loam_velodyne according to the github page.
In first terminal
$ cd ~/catkin_ws/src/
$ git clone https://github.com/laboshinl/loam_velodyne.git
$ cd ~/catkin_ws
$ catkin_make -DCMAKE_BUILD_TYPE=Release
$ source ~/catkin_ws/devel/setup.bash
In second terminal
$ roslaunch loam_velodyne loam_velodyne.launch
$ rosbag play ~/Downloads/velodyne.bag

and then ,show the follow error:
[laserMapping-3] process has died [pid 29080, exit code -11, cmd /home/yong/catkin_ws/devel/lib/loam_velodyne/laserMapping __name:=laserMapping __log:=/home/yong/.ros/log/caae77aa-ffda-11e7-b7e2-1002b5cc091b/laserMapping-3.log]. log file: /home/yong/.ros/log/caae77aa-ffda-11e7-b7e2-1002b5cc091b/laserMapping-3*.log

I use ubuntu14.04 and PCL 1.8.
I found it caused by this code in LaserMapping.cpp:
matX = matAtA.colPivHouseholderQr().solve(matAtB);
Could you tell me how to solve it.

Trying to make loam_velodyne closed loop

I noticed that Loam_velodyne is open loop, i'm wondering if there is a way or any other packages out there to pull from to modify loam to make it closed loop as to better update current state of the robot. I was thinking instead of ROS package to close the loop using FPGA to pull from the sensors at the beam center extraction point on the LIDAR and to pair this with a feed-forward ANN and GA to update current state better. Execution speed would be our LIDAR's clock cycle, so if there is any way to close the loop along with concurrently running ANN and GA using our LIDAR it would be appreciated for some feedback.

Suggestion for improvements. Use Eigen instead of OpenCV and remove cryptic math

Hi,

I noticed that you are using OpenCV just to do simple math operations on matrices.
I would warmly suggest to use Eigen instead, to improve consistency, readability and reduce dependencies. For reference https://eigen.tuxfamily.org/dox/group__QR__Module.html

As well there are a lot of long mathematical calculations like PluginIMURotation and AccumulateRotation which are totally cryptic. Which mathematical operation are they supposed to perform?
Can they be refactored in terms of consecutive single axis rotations to improve readability?

Is colorization possible?

Hello!
Is colorization of the point cloud possible with a camera? How to achieve this?
Thank you.

IMU problem

Hey! Everyone.I have a problem about using the IMU.
Using the code stated in https://github.com/laboshinl/loam_velodyne/ and then run the gates_oscillating_motion.bag,but the result is fuzzy and can not get the results like the demo in ROS wiki.
Anything wrong ?
Thanks!

How can I use LOAM with Velodyne64

Hallow,I'm using LOAM now,it's so great! I have modified code with "modified on linux" and "add velodyne HDL64E support" The procedure has compiled successfully. But when I execute launch there is only one node(transformMaintenance) live.The terminal displays as follows:

[laserOdometry-3] restarting process process[laserOdometry-3]: started with pid [14995] [laserOdometry-3] process has died [pid 14995, exit code -11, cmd /home/rmy/loam64/devel/lib/loam_velodyne/laserOdometry __name:=laserOdometry __log:=/home/rmy/.ros/log/038a2858-612a-11e7-b1f8-002324502a96/laserOdometry-3.log]. log file: /home/rmy/.ros/log/038a2858-612a-11e7-b1f8-002324502a96/laserOdometry-3*.log
I don't know why,can you help me? please

Loop Closure

Hello!
What is the process of loop closure the point cloud?
Do you use external loop closure technique?
The result has small drift from start to end.
Thank you.

How to build a big outdoor map?

Does anyone meets the problem when build a big outdoor map? When I build a map with a size of 3km*3km, loam can only build a fixed-size map and this map less than actual size of map. Where can I modify the code to make it?

Information

Hi. Just a simple question.
What if I'd like to use this package with a simulated vlp16 in gazebo?
Or is it just for playback .bag files ?

Thanks !

Detach LOAM from ROS

Hi,
I think that it could be extremely useful to detach LOAM from ROS, such that:

  1. It can be used as a stand-alone method for motion estimation, e.g. by instantiating a class "LoamEstimator", which is feed with point clouds and IMU messages. It could return odometry, mapping and integrated motion estimates, as well as point clouds that contain features, the map and the current cloud registered in the map.
  2. As a consequence of 1, be able to tune the parameters of the algorithm to increase accuracy.
  3. Also because of 1, be able to integrate Loam into more complex systems, non dependent on ROS.
  4. Make it easier to run tests with KITTI or other datasets.

There was substantial work in this direction from users @adrelino and @sebdi, contained in this repo. I'm also currently working on this for my thesis, but it may take some time until I submit a pull request.

What do you think? Would anyone be interested in collaborating for achieving this?

Kind regards,
Yoshua Nava

Export trajectory

Hi
I want to use LOAM for it's odometry output.

So far I've tried to record the three odomertry topics:

  • aft_mapped_to_init
  • laser_odom_to_init
  • integrated_to_init
    using "rostopic", but the timestamps seems off

did anyone tried to use these topics?

How to show the complete map in Rviz?

I want to build a big outdoor map by using the Loam. But in the rviz, it just show a fixed-size map. Actually all the points cloud still exist in the rviz but it just show the sub map around the car. So how to show the complete map? And further more, how to save the full map into a .PCD file, Thanks.

Loam compile package error

i am working on loam using this tutorial
https://github.com/daobilige-su/loam_velodyne
i successfully downloaded the loam package but when i compile the package it gives me cmake error. I am working with VLP-16 and Kinetic ROS.
here is the error log
ubuntu@ubiquityrobot:$ cd /home/ubuntu/catkin_ws
ubuntu@ubiquityrobot:
/catkin_ws$ catkin_make
Base path: /home/ubuntu/catkin_ws
Source space: /home/ubuntu/catkin_ws/src
Build space: /home/ubuntu/catkin_ws/build
Devel space: /home/ubuntu/catkin_ws/devel
Install space: /home/ubuntu/catkin_ws/install

Running command: "make cmake_check_build_system" in "/home/ubuntu/catkin_ws/build"

-- Using CATKIN_DEVEL_PREFIX: /home/ubuntu/catkin_ws/devel
-- Using CMAKE_PREFIX_PATH: /home/ubuntu/catkin_workspace/devel;/opt/ros/kinetic
-- This workspace overlays: /home/ubuntu/catkin_workspace/devel;/opt/ros/kinetic
-- Using PYTHON_EXECUTABLE: /usr/bin/python
-- Using Debian Python package layout
-- Using empy: /usr/bin/empy
-- Using CATKIN_ENABLE_TESTING: ON
-- Call enable_testing()
-- Using CATKIN_TEST_RESULTS_DIR: /home/ubuntu/catkin_ws/build/test_results
-- Found gtest sources under '/usr/src/gtest': gtests will be built
-- Using Python nosetests: /usr/bin/nosetests-2.7
-- catkin 0.7.8
-- BUILD_SHARED_LIBS is on
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- ~~ traversing 7 packages in topological order:
-- ~~ - fiducial_follow
-- ~~ - velodyne (metapackage)
-- ~~ - velodyne_msgs
-- ~~ - loam_velodyne
-- ~~ - velodyne_driver
-- ~~ - velodyne_laserscan
-- ~~ - velodyne_pointcloud
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- +++ processing catkin package: 'fiducial_follow'
-- ==> add_subdirectory(demos/fiducial_follow)
-- +++ processing catkin metapackage: 'velodyne'
-- ==> add_subdirectory(velodyne/velodyne)
-- +++ processing catkin package: 'velodyne_msgs'
-- ==> add_subdirectory(velodyne/velodyne_msgs)
-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
-- velodyne_msgs: 2 messages, 0 services
-- +++ processing catkin package: 'loam_velodyne'
-- ==> add_subdirectory(loam_velodyne)
-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
-- Boost version: 1.58.0
-- Found the following Boost libraries:
-- system
-- filesystem
-- thread
-- date_time
-- iostreams
-- serialization
-- chrono
-- atomic
-- regex
-- Checking for module 'libopenni2'
-- No package 'libopenni2' found
-- Could NOT find OpenNI2 (missing: OPENNI2_LIBRARY OPENNI2_INCLUDE_DIRS)
** WARNING ** io features related to openni2 will be disabled
** WARNING ** io features related to pcap will be disabled
** WARNING ** io features related to png will be disabled
-- The imported target "vtkRenderingPythonTkWidgets" references the file
"/usr/lib/arm-linux-gnueabihf/libvtkRenderingPythonTkWidgets.so"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/cmake/vtk-6.2/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtk" references the file
"/usr/bin/vtk"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/cmake/vtk-6.2/VTKTargets.cmake"
    but not all the files it references.

-- Checking for module 'libopenni2'
-- No package 'libopenni2' found
-- Could NOT find OpenNI2 (missing: OPENNI2_LIBRARY OPENNI2_INCLUDE_DIRS)
** WARNING ** visualization features related to openni2 will be disabled
-- looking for PCL_COMMON
-- looking for PCL_OCTREE
-- looking for PCL_IO
-- looking for PCL_KDTREE
-- looking for PCL_SEARCH
-- looking for PCL_SAMPLE_CONSENSUS
-- looking for PCL_FILTERS
-- looking for PCL_FEATURES
-- looking for PCL_KEYPOINTS
-- looking for PCL_GEOMETRY
-- looking for PCL_SEGMENTATION
-- looking for PCL_VISUALIZATION
-- looking for PCL_OUTOFCORE
-- looking for PCL_SURFACE
-- looking for PCL_TRACKING
-- looking for PCL_REGISTRATION
-- looking for PCL_RECOGNITION
-- looking for PCL_APPS
-- Could NOT find PCL_APPS (missing: PCL_APPS_LIBRARY)
-- looking for PCL_PEOPLE
CMake Error: File /home/ubuntu/catkin_ws/src/loam_velodyne/tests/loam.test.in does not exist.
CMake Error at loam_velodyne/CMakeLists.txt:51 (configure_file):
configure_file Problem configuring file

-- +++ processing catkin package: 'velodyne_driver'
-- ==> add_subdirectory(velodyne/velodyne_driver)
-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
-- Boost version: 1.58.0
-- Found the following Boost libraries:
-- thread
-- chrono
-- system
-- date_time
-- atomic
-- +++ processing catkin package: 'velodyne_laserscan'
-- ==> add_subdirectory(velodyne/velodyne_laserscan)
-- +++ processing catkin package: 'velodyne_pointcloud'
-- ==> add_subdirectory(velodyne/velodyne_pointcloud)
-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
-- Boost version: 1.58.0
-- Found the following Boost libraries:
-- signals
-- Configuring incomplete, errors occurred!
See also "/home/ubuntu/catkin_ws/build/CMakeFiles/CMakeOutput.log".
See also "/home/ubuntu/catkin_ws/build/CMakeFiles/CMakeError.log".
Makefile:304: recipe for target 'cmake_check_build_system' failed
make: *** [cmake_check_build_system] Error 1
Invoking "make cmake_check_build_system" failed
ubuntu@ubiquityrobot:~/catkin_ws$

Changing axis of map and odometry

Hi,

The direction of motion for my vehicle is in the Z axis as per loam. I do not know why. I have enclosed two screen shots of the LOAM. It directly starts perpendicular to the grid in RVIZ.

screenshot from 2018-05-03 09-03-02
screenshot from 2018-05-03 09-03-05

You can see that the LOAM considers the vehicle to be moving in the Z axis. Is there any way to alter this? When I just play the data (PCAP file) with the velodyne driver, the direction of motion is in the X axis.

Screenshot from Velodyne
screenshot from 2018-05-03 09-08-04

I could rotate the final pointcloud, but I will also have to rotate the odometry in that case. I was wondering if this is an issue with my data or it is an issue with LOAM and if so, is there a way to fix it in the code.

I would like to rotate the axis to the general ROS convention. (X forward, Z upwards). This is required for path planning. I wanted to know which part of the code I should work with to change the orientation as even the input pointcloud is rotated in LOAM.

Thanks!

Running loam_velodyne.launch

started roslaunch server http://lin-drive-tx:36969/

SUMMARY

PARAMETERS

  • /laserMapping/scanPeriod: 0.1
  • /laserOdometry/scanPeriod: 0.1
  • /multiScanRegistration/lidar: VLP-16
  • /multiScanRegistration/scanPeriod: 0.1
  • /rosdistro: kinetic
  • /rosversion: 1.12.13

NODES
/
laserMapping (loam_velodyne/laserMapping)
laserOdometry (loam_velodyne/laserOdometry)
multiScanRegistration (loam_velodyne/multiScanRegistration)
rviz (rviz/rviz)
transformMaintenance (loam_velodyne/transformMaintenance)

ROS_MASTER_URI=http://localhost:11311

ERROR: cannot launch node of type [loam_velodyne/multiScanRegistration]: can't locate node [multiScanRegistration] in package [loam_velodyne]
ERROR: cannot launch node of type [loam_velodyne/laserOdometry]: can't locate node [laserOdometry] in package [loam_velodyne]
ERROR: cannot launch node of type [loam_velodyne/laserMapping]: can't locate node [laserMapping] in package [loam_velodyne]
ERROR: cannot launch node of type [loam_velodyne/transformMaintenance]: can't locate node [transformMaintenance] in package [loam_velodyne]
process[rviz-5]: started with pid [12604]

please how can I resolve this issue?

Please remove magic numbers from the code

@laboshinl first of all, please remember that my issues/complains are my way to tell you "thank for your code, let me show you my appreciation by contributing to it".

The whole code is full of hard coded numbers that represent either time, distance in meters, squared_distance or integer numbers.

An example is to use CURVATURE_REGION_SIZE as shown here.
StefanGlaser@528368f

loam error

i am working on loam using this tutorial
https://github.com/daobilige-su/loam_velodyne
i successfully downloaded the loam package but when i compile the package it gives me cmake error. I am working with VLP-16 and Kinetic ROS. Here is the Error log.

ubuntu@ubiquityrobot:$ cd /home/ubuntu/catkin_ws
ubuntu@ubiquityrobot:
/catkin_ws$ catkin_make
Base path: /home/ubuntu/catkin_ws
Source space: /home/ubuntu/catkin_ws/src
Build space: /home/ubuntu/catkin_ws/build
Devel space: /home/ubuntu/catkin_ws/devel
Install space: /home/ubuntu/catkin_ws/install

Running command: "make cmake_check_build_system" in "/home/ubuntu/catkin_ws/build"

-- Using CATKIN_DEVEL_PREFIX: /home/ubuntu/catkin_ws/devel
-- Using CMAKE_PREFIX_PATH: /home/ubuntu/catkin_workspace/devel;/opt/ros/kinetic
-- This workspace overlays: /home/ubuntu/catkin_workspace/devel;/opt/ros/kinetic
-- Using PYTHON_EXECUTABLE: /usr/bin/python
-- Using Debian Python package layout
-- Using empy: /usr/bin/empy
-- Using CATKIN_ENABLE_TESTING: ON
-- Call enable_testing()
-- Using CATKIN_TEST_RESULTS_DIR: /home/ubuntu/catkin_ws/build/test_results
-- Found gtest sources under '/usr/src/gtest': gtests will be built
-- Using Python nosetests: /usr/bin/nosetests-2.7
-- catkin 0.7.8
-- BUILD_SHARED_LIBS is on
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- ~~ traversing 7 packages in topological order:
-- ~~ - fiducial_follow
-- ~~ - velodyne (metapackage)
-- ~~ - velodyne_msgs
-- ~~ - loam_velodyne
-- ~~ - velodyne_driver
-- ~~ - velodyne_laserscan
-- ~~ - velodyne_pointcloud
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- +++ processing catkin package: 'fiducial_follow'
-- ==> add_subdirectory(demos/fiducial_follow)
-- +++ processing catkin metapackage: 'velodyne'
-- ==> add_subdirectory(velodyne/velodyne)
-- +++ processing catkin package: 'velodyne_msgs'
-- ==> add_subdirectory(velodyne/velodyne_msgs)
-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
-- velodyne_msgs: 2 messages, 0 services
-- +++ processing catkin package: 'loam_velodyne'
-- ==> add_subdirectory(loam_velodyne)
-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
-- Boost version: 1.58.0
-- Found the following Boost libraries:
-- system
-- filesystem
-- thread
-- date_time
-- iostreams
-- serialization
-- chrono
-- atomic
-- regex
-- Checking for module 'libopenni2'
-- No package 'libopenni2' found
-- Could NOT find OpenNI2 (missing: OPENNI2_LIBRARY OPENNI2_INCLUDE_DIRS)
** WARNING ** io features related to openni2 will be disabled
** WARNING ** io features related to pcap will be disabled
** WARNING ** io features related to png will be disabled
-- The imported target "vtkRenderingPythonTkWidgets" references the file
"/usr/lib/arm-linux-gnueabihf/libvtkRenderingPythonTkWidgets.so"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/cmake/vtk-6.2/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtk" references the file
"/usr/bin/vtk"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/cmake/vtk-6.2/VTKTargets.cmake"
    but not all the files it references.

-- Checking for module 'libopenni2'
-- No package 'libopenni2' found
-- Could NOT find OpenNI2 (missing: OPENNI2_LIBRARY OPENNI2_INCLUDE_DIRS)
** WARNING ** visualization features related to openni2 will be disabled
-- looking for PCL_COMMON
-- looking for PCL_OCTREE
-- looking for PCL_IO
-- looking for PCL_KDTREE
-- looking for PCL_SEARCH
-- looking for PCL_SAMPLE_CONSENSUS
-- looking for PCL_FILTERS
-- looking for PCL_FEATURES
-- looking for PCL_KEYPOINTS
-- looking for PCL_GEOMETRY
-- looking for PCL_SEGMENTATION
-- looking for PCL_VISUALIZATION
-- looking for PCL_OUTOFCORE
-- looking for PCL_SURFACE
-- looking for PCL_TRACKING
-- looking for PCL_REGISTRATION
-- looking for PCL_RECOGNITION
-- looking for PCL_APPS
-- Could NOT find PCL_APPS (missing: PCL_APPS_LIBRARY)
-- looking for PCL_PEOPLE
CMake Error: File /home/ubuntu/catkin_ws/src/loam_velodyne/tests/loam.test.in does not exist.
CMake Error at loam_velodyne/CMakeLists.txt:51 (configure_file):
configure_file Problem configuring file

-- +++ processing catkin package: 'velodyne_driver'
-- ==> add_subdirectory(velodyne/velodyne_driver)
-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
-- Boost version: 1.58.0
-- Found the following Boost libraries:
-- thread
-- chrono
-- system
-- date_time
-- atomic
-- +++ processing catkin package: 'velodyne_laserscan'
-- ==> add_subdirectory(velodyne/velodyne_laserscan)
-- +++ processing catkin package: 'velodyne_pointcloud'
-- ==> add_subdirectory(velodyne/velodyne_pointcloud)
-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
-- Boost version: 1.58.0
-- Found the following Boost libraries:
-- signals
-- Configuring incomplete, errors occurred!
See also "/home/ubuntu/catkin_ws/build/CMakeFiles/CMakeOutput.log".
See also "/home/ubuntu/catkin_ws/build/CMakeFiles/CMakeError.log".
Makefile:304: recipe for target 'cmake_check_build_system' failed
make: *** [cmake_check_build_system] Error 1
Invoking "make cmake_check_build_system" failed
ubuntu@ubiquityrobot:~/catkin_ws$

How can I use LOAM with Velodyne64

Hallo,I'm using LOAM now,it's so great! I have modified code with "modified on linux" and "add velodyne HDL64E support" The procedure has compiled successfully. But when I execute launch there is only one node(transformMaintenance) live.The terminal displays as follows:

[laserOdometry-3] restarting process process[laserOdometry-3]: started with pid [14995] [laserOdometry-3] process has died [pid 14995, exit code -11, cmd /home/rmy/loam64/devel/lib/loam_velodyne/laserOdometry __name:=laserOdometry __log:=/home/rmy/.ros/log/038a2858-612a-11e7-b1f8-002324502a96/laserOdometry-3.log]. log file: /home/rmy/.ros/log/038a2858-612a-11e7-b1f8-002324502a96/laserOdometry-3*.log

I don't know why,can you help me? please

Odom from LiDAR drifting upward. How to include the IMU data?

Hi,
I am using this package to estimate the position of a car through a velodyne-16, but the trajectory (and the reconstructed point cloud) drift exponentially upward.
However, the rosbag that I recorded includes synchronized IMU data too, so how can add the imu data to the odometry process ?
Thank you

Understanding `transformToEnd()`

I'm trying to understand the order of operations for the ego-motion.
Conceptually or geometrically it is supposed to move/transform each point forward based on the solved transform by an amount [=time] proportional to the difference between each point's sampling time and total scan-period. I understand this geometrically.

I do not understand what each of the rotations and translations do and why they are performed in the order that they have. Can someone explain to me the flow of LaserOdometry::transformToEnd()?

scanRegistration error

@laboshinl
I have successfully implemented according to your steps.
But when I connect the VLP-16 Lidar (roslaunch velodyne_pointcloud VLP16_points.launch _ip_address:=192.168.1.201),
Usually happen the following error,

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
[scanRegistration-2] process has died [pid 13615, exit code -11, cmd /home/ctwu/ROS_Code/catkin_loam/devel/lib/loam_velodyne/scanRegistration __name:=scanRegistration log:=/home/ctwu/.ros/log/1f7faff2-5d33-11e6-98e2-74d02b61e376/scanRegistration-2.log].
log file: /home/ctwu/.ros/log/1f7faff2-5d33-11e6-98e2-74d02b61e376/scanRegistration-2
.log
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
(the scanRegistration-2
.log can't find in the folder)

Array index size probrem in scanRegistration.cpp

Hi,
I found array size problem in scanRegistration.cpp.
In the code, 4 arrays has literal value 40000 was defined.
But VLP16's specs are horizontal resolution #0.1-0.4 degee and vertical 16 channels.
So I think max array size needs 3600 x 16 = 57000 at least.
Actually, It is often over 40000 (48000 nearly.), and memory broken with scanRegistration process died.

thanks.

Does LOAM impliment loop closure?

Hi,
I read Dr. Zhang's paper and it says that they had planned to implement loop closure. I was wondering if this package has it implemented.

Thank you,

Illegal C++ Identifiers

The code uses the convention of naming members with an _ prefix: _memberName.
Such names are "are reserved and may not be declared in a program, doing so invokes undefined behavior".

Such members should be renamed to e.g. memberName_.

Update:
Actually, members starting with _ are technically OK, but are generally frowned upon, because they may lead to erroneously using UB forms:

In C++,

  1. identifiers starting with an underscore, followed by a capital character
  2. identifiers having two consecutive underscores anywhere
  3. identifiers in the global namespace starting with an underscore
    are reserved to the implementation.

... Rather than trying to remember these rules, many simply do not use identifiers starting with an underscore. That's why the trailing underscore was invented.

Point interpolation error

Hi,
I'm currently trying to improve the implementation of this algorithm. As part of my refactorings, I changed the calculation of the ring start and end indices. They are now calculated by accumulating the sizes of the individual ring clouds. After doing so, I noticed a slight difference in the results and took a closer look again.

I've added

ROS_INFO("Scan count changed to: %d", scanCount);

after line 384 in scanRegistration.cpp to output the scanCount variable each time it changes.

While for some scans, the output matches the expected sequence, namely:

[ INFO] [1511533007.272980959]: Scan count changed to: 0
[ INFO] [1511533007.273194307]: Scan count changed to: 1
[ INFO] [1511533007.273374062]: Scan count changed to: 2
[ INFO] [1511533007.273552746]: Scan count changed to: 3
[ INFO] [1511533007.273726436]: Scan count changed to: 4
[ INFO] [1511533007.273903323]: Scan count changed to: 5
[ INFO] [1511533007.274091778]: Scan count changed to: 6
[ INFO] [1511533007.274272015]: Scan count changed to: 7
[ INFO] [1511533007.274449377]: Scan count changed to: 8
[ INFO] [1511533007.274637479]: Scan count changed to: 9
[ INFO] [1511533007.274820746]: Scan count changed to: 10
[ INFO] [1511533007.275001383]: Scan count changed to: 11
[ INFO] [1511533007.275172558]: Scan count changed to: 12
[ INFO] [1511533007.275348314]: Scan count changed to: 13
[ INFO] [1511533007.275523124]: Scan count changed to: 14
[ INFO] [1511533007.275698830]: Scan count changed to: 15

some other scans show the following output:

[ INFO] [1511533006.468410449]: Scan count changed to: 0
[ INFO] [1511533006.468714465]: Scan count changed to: 1
[ INFO] [1511533006.468884878]: Scan count changed to: 0
[ INFO] [1511533006.468991116]: Scan count changed to: 1
[ INFO] [1511533006.469013792]: Scan count changed to: 2
[ INFO] [1511533006.469197859]: Scan count changed to: 1
[ INFO] [1511533006.469282555]: Scan count changed to: 2
[ INFO] [1511533006.469309297]: Scan count changed to: 3
[ INFO] [1511533006.469491094]: Scan count changed to: 2
[ INFO] [1511533006.469575016]: Scan count changed to: 3
[ INFO] [1511533006.469601585]: Scan count changed to: 4
[ INFO] [1511533006.469782444]: Scan count changed to: 3
[ INFO] [1511533006.469866047]: Scan count changed to: 4
[ INFO] [1511533006.469892284]: Scan count changed to: 5
[ INFO] [1511533006.470089060]: Scan count changed to: 4
[ INFO] [1511533006.470172099]: Scan count changed to: 5
[ INFO] [1511533006.470200482]: Scan count changed to: 6
[ INFO] [1511533006.470382239]: Scan count changed to: 5
[ INFO] [1511533006.470465808]: Scan count changed to: 6
[ INFO] [1511533006.470491802]: Scan count changed to: 7
[ INFO] [1511533006.470676708]: Scan count changed to: 6
[ INFO] [1511533006.470759771]: Scan count changed to: 7
[ INFO] [1511533006.470788122]: Scan count changed to: 8
[ INFO] [1511533006.470968738]: Scan count changed to: 7
[ INFO] [1511533006.471052407]: Scan count changed to: 8
[ INFO] [1511533006.471078689]: Scan count changed to: 9
[ INFO] [1511533006.471260493]: Scan count changed to: 8
[ INFO] [1511533006.471342678]: Scan count changed to: 9
[ INFO] [1511533006.471369029]: Scan count changed to: 10
[ INFO] [1511533006.471548978]: Scan count changed to: 9
[ INFO] [1511533006.471633309]: Scan count changed to: 10
[ INFO] [1511533006.471661731]: Scan count changed to: 11
[ INFO] [1511533006.471837152]: Scan count changed to: 10
[ INFO] [1511533006.471920503]: Scan count changed to: 11
[ INFO] [1511533006.471946920]: Scan count changed to: 12
[ INFO] [1511533006.472128592]: Scan count changed to: 11
[ INFO] [1511533006.472212757]: Scan count changed to: 12
[ INFO] [1511533006.472239363]: Scan count changed to: 13
[ INFO] [1511533006.472416895]: Scan count changed to: 12
[ INFO] [1511533006.472498789]: Scan count changed to: 13
[ INFO] [1511533006.472524533]: Scan count changed to: 14
[ INFO] [1511533006.472704906]: Scan count changed to: 13
[ INFO] [1511533006.472787776]: Scan count changed to: 14
[ INFO] [1511533006.472814264]: Scan count changed to: 15
[ INFO] [1511533006.472992890]: Scan count changed to: 14
[ INFO] [1511533006.473074925]: Scan count changed to: 15

As a result, the calculated scan start and end indices are sometimes not corresponding to the actual scan ring indices in the combined cloud. This even sometimes results in the scenario where the start index of the last ring is grater than its end index (since the end index is set explicitly afterwards).

The problem seems to originate in the calculation of the relative time of a point based on its angle, respectively the determination of the start and end angles. Tests have shown that (for a VLP-16) the scan range per received input cloud is slightly more than 360 degrees. This in combination with other issues in determining the start and end orientation probably produces negative relative time values, causing the point to "hop" to its predecessor ring.

This issue translates over to the lidarOdometry component, as it also uses the intensities of the points. However, I'm not sure yet about its implications there.

After fixing the scan start and end index calculation, the overall result is comparable, but slightly different. I can't tell if it's better or worse, yet.

Online SLAM using VLP-16 LiDAR

Hi all, I am trying to implement online 3D SLAM using the VLP-16 LiDAR how to I do this with LOAM without having to use rosbags or pcap files?

Error in roslaunch velodyne_pointcloud

lacho@ubuntu:/catkin_ws$ roslaunch velodyne_pointcloud VLP16_points.launch pcap:="/catkin_ws/data.pcap"
... logging to /home/pelacho/.ros/log/fec73608-2c2c-11e7-8c13-000c29e7372c/roslaunch-ubuntu-52119.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://ubuntu:33811/

SUMMARY

PARAMETERS

  • /rosdistro: indigo
  • /rosversion: 1.11.21
  • /velodyne_nodelet_manager_cloud/calibration: /home/pelacho/cat...
  • /velodyne_nodelet_manager_cloud/max_range: 130.0
  • /velodyne_nodelet_manager_cloud/min_range: 0.4
  • /velodyne_nodelet_manager_driver/device_ip:
  • /velodyne_nodelet_manager_driver/frame_id: velodyne
  • /velodyne_nodelet_manager_driver/model: VLP16
  • /velodyne_nodelet_manager_driver/pcap: ~/catkin_ws/data....
  • /velodyne_nodelet_manager_driver/port: 2368
  • /velodyne_nodelet_manager_driver/read_fast: False
  • /velodyne_nodelet_manager_driver/read_once: False
  • /velodyne_nodelet_manager_driver/repeat_delay: 0.0
  • /velodyne_nodelet_manager_driver/rpm: 600.0

NODES
/
velodyne_nodelet_manager (nodelet/nodelet)
velodyne_nodelet_manager_cloud (nodelet/nodelet)
velodyne_nodelet_manager_driver (nodelet/nodelet)

auto-starting new master
process[master]: started with pid [52131]
ROS_MASTER_URI=http://localhost:11311

setting /run_id to fec73608-2c2c-11e7-8c13-000c29e7372c
process[rosout-1]: started with pid [52144]
started core service [/rosout]
process[velodyne_nodelet_manager-2]: started with pid [52151]
process[velodyne_nodelet_manager_driver-3]: started with pid [52158]
process[velodyne_nodelet_manager_cloud-4]: started with pid [52163]

[FATAL] [1493395744.252682183]: Error opening Velodyne socket dump file. [FATAL] [1493395744.663492067]: Failed to load nodelet '/velodyne_nodelet_manager_driver of type velodyne_driver/DriverNodelet to manager velodyne_nodelet_manager' [velodyne_nodelet_manager-2] process has died [pid 52151, exit code -11, cmd /opt/ros/indigo/lib/nodelet/nodelet manager __name:=velodyne_nodelet_manager __log:=/home/pelacho/.ros/log/fec73608-2c2c-11e7-8c13-000c29e7372c/velodyne_nodelet_manager-2.log]. log file: /home/pelacho/.ros/log/fec73608-2c2c-11e7-8c13-000c29e7372c/velodyne_nodelet_manager-2*.log [velodyne_nodelet_manager_driver-3] process has died [pid 52158, exit code 255, cmd /opt/ros/indigo/lib/nodelet/nodelet load velodyne_driver/DriverNodelet velodyne_nodelet_manager __name:=velodyne_nodelet_manager_driver __log:=/home/pelacho/.ros/log/fec73608-2c2c-11e7-8c13-000c29e7372c/velodyne_nodelet_manager_driver-3.log].** log file: /home/pelacho/.ros/log/fec73608-2c2c-11e7-8c13-000c29e7372c/velodyne_nodelet_manager_driver-3*.log`
[velodyne_nodelet_manager_cloud-4] process has finished cleanly
log file: /home/pelacho/.ros/log/fec73608-2c2c-11e7-8c13-000c29e7372c/velodyne_nodelet_manager_cloud-4*.log

Velodyne Driver Build Error

Hello.
I'm trying to build a velodyne driver for https://github.com/ros-drivers/velodyne.git and the following error occurs :
I would like to ask if there is a way to resolve this part.
Thank you

[55 %] Building CXX object velodyne_driversr srcslib_CMakeFelesvelodyne_input.direction.cc.
[57 %] Built-target multI- iSca nRegistration
[59 %] Build target velodyne_laserscan
In file inserted from /home/sangwook/catkin_ws/src/velodyne/velodyne_driver/src/lib/input.cc:34:0:
/ homesangwookcatkin_wssr sr cbelodyne_driverincludeevelotch_drivervelodyne_drivership:37:driversangwooke / input h :
Compilation-terminated
Velodynevelodyne_driversparrylib_CMakeFilesverning_direction.director.composite:62:recipe for target
Make[2]****[velodyne_driversr srikeFliesvelodyne_inpuction.direction.ccc.] Error 1
CMakeFilesMakefile2:5244:recipe for target ' velodynefarodyne_driversriverallib_CMakeFiles_velody'.
Make[1] : *** [velodynevelodyne_driversr srakeFelesvelodyne_inpuction.direction2]
Make[1] : *** Waiting for unfinisheds ....
[62 %] Build target velodyne_puck_decoder
[64 %] Build target velodyne_puck_driver
[64 %] Build target velodyne_msg_generate_messages
Makefile:138 : recise for target ' all ' failed
Make : *** [all] Error 2
Invoking " make - j- l " failed

LOAM for Aerial

hi - possible to use the LOAM with Aerial Multicopter/ drone?

How to make surface output?

Hello! @laboshinl

Thanks for your repository,
I'd build all of your repository and attach my VLP-16 with ros velodyne driver.

And I'd like to make some 3D model with surface like in your readme.

but with velodyne_launch. I can only see some pointclouds from VLP with SLAM.
(also It looses point from faraway, or there are limits for saved pointclouds number?)

Please tell me how to make 3D model with surfaces like you
or just point clouds as file

Thankyou

A question about ShiftToStartIMU

I think the first line in this function is to calculate the distance shift from the first point to the current point in a scan period. So it should be imuShiftFromStartXCur = imuShiftXCur - imuShiftXStart. But there is a imuVeloXStart * pointTime behind them. I am confused about this.

loam_velodyne failed

I have built the loam project successfully.And when I launch in ros kinetic ,it's successful too. But when I play the bag it's error in my computer.such as:
... logging to /home/lmt/.ros/log/d9401fc2-77a2-11e8-a910-902b3433bbc4/roslaunch-lmt-8349.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://lmt:33200/

SUMMARY

PARAMETERS

  • /laserMapping/scanPeriod: 0.1
  • /laserOdometry/scanPeriod: 0.1
  • /multiScanRegistration/lidar: VLP-16
  • /multiScanRegistration/scanPeriod: 0.1
  • /rosdistro: kinetic
  • /rosversion: 1.12.13

NODES
/
laserMapping (loam_velodyne/laserMapping)
laserOdometry (loam_velodyne/laserOdometry)
multiScanRegistration (loam_velodyne/multiScanRegistration)
rviz (rviz/rviz)
transformMaintenance (loam_velodyne/transformMaintenance)

auto-starting new master
process[master]: started with pid [8360]
ROS_MASTER_URI=http://localhost:11311

setting /run_id to d9401fc2-77a2-11e8-a910-902b3433bbc4
process[rosout-1]: started with pid [8373]
started core service [/rosout]
process[multiScanRegistration-2]: started with pid [8382]
process[laserOdometry-3]: started with pid [8389]
process[laserMapping-4]: started with pid [8392]
process[transformMaintenance-5]: started with pid [8393]
process[rviz-6]: started with pid [8409]
[ INFO] [1529840195.272982324]: Set scanPeriod: 0.1
[ INFO] [1529840195.306128817]: Set VLP-16 scan mapper.
0x1c04540 void QWindowPrivate::setTopLevelScreen(QScreen*, bool) ( QScreen(0x1069d50) ): Attempt to set a screen on a child window.
0x1bfa9d0 void QWindowPrivate::setTopLevelScreen(QScreen*, bool) ( QScreen(0x1069d50) ): Attempt to set a screen on a child window.
0x1c02c00 void QWindowPrivate::setTopLevelScreen(QScreen*, bool) ( QScreen(0x1069d50) ): Attempt to set a screen on a child window.
0x1c06060 void QWindowPrivate::setTopLevelScreen(QScreen*, bool) ( QScreen(0x1069d50) ): Attempt to set a screen on a child window.
[multiScanRegistration-2] process has died [pid 8382, exit code -11, cmd /home/lmt/loam_ws/devel/lib/loam_velodyne/multiScanRegistration /multi_scan_points:=/velodyne_points __name:=multiScanRegistration __log:=/home/lmt/.ros/log/d9401fc2-77a2-11e8-a910-902b3433bbc4/multiScanRegistration-2.log].
log file: /home/lmt/.ros/log/d9401fc2-77a2-11e8-a910-902b3433bbc4/multiScanRegistration-2*.log

And then I put this project in other computer It is successful. I can't find the reason of this failure.Why it is fail?

Parameter Changes to Improve Quality

Hi,
Does anyone know any parameters that can be changed to improve point cloud quality. I am mainly working with large indoor spaces and am using the LOAM package with an IMU connected.

Thank you,

Ideas to improve

It is known that V-LOAM is the best on the KITTI dataset. Since it's based on LOAM, it inspires to improve the last. How can we do that? What improvements can be added to this algorithm? What weaknesses does it have?

Stepping back. Eigen::Affine3f is better than the recently introduced changes in #20

Hi,

with the recent PR I wanted to test that there could be a considerable improve in execution time avoiding useless calculations of cos and sin.

Introducing rotateX, rotateY and rotateZ, I believe that the code become more readable.

But thinking twice, I think that the way I would do it myself would be to create an affine transform once and use it for each of the points, instead of doing multiple, simple rotations and translations.

Before doing this change, I wanted to get some feedback from the other users and the author...

Export

Is there any way to export the data or is just for visualization?. By the way, works great.

Building a 3D Map using loam and octomap

Hi,
I am using LOAM to mapping outdoors with a VLP16. The problem is when I use octomap_server package to make the map reconstruction, it seems the combination of point clouds is not matching correctly. Could it be a transformation problem with LOAM? Have you noticed this issue?

Thanks,
Bruno

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.