Wang Han [homepage] ![Profile views](https://camo.githubusercontent.com/07ea37c0ebbad29f435525659d07a71105fcf782d9abe195b51e5e7ba63e8f65/68747470733a2f2f677076632e6172747572696f2e6465762f7768323030373230303431)
- :🌱: currently working in Huawei Singapore (Todmind Program).
- 🎓 received Ph.D. in Nanyang Technological University.
- 🔨 specialize in computer vision and robotics.
SSL_SLAM2: Lightweight 3-D Localization and Mapping for Solid-State LiDAR (mapping and localization separated) ICRA 2021
License: GNU General Public License v3.0
Does this apply to other types of solid-state lidar? such as MEMS solid-state lidar
Hi @wh200720041
I'm still studying your masterpiece. but there is a question I can`t understand.
Code block in function LaseProcessingClass::featureExtraction
double last_angle = atan2(pc_in->points[0].z,pc_in->points[0].y) * 180 / M_PI;
double angle = atan2(pc_in->points[i].x,pc_in->points[i].z) * 180 / M_PI;
...
if(fabs(angle - last_angle) > 0.05){ .... }
...
Why could angle and last_angle subtract? What`s the meaning?
BRs
Hi! And thank you for making this code available. Would it be possible to run it without ROS? How embedded is the ROS dependency?
Thanks!
Hi,@wh200720041.
I am trying to apply your work to do some 3D reconstructions. But I am not familiar with the ROS, so maybe I make some basic mistakes.
I output the trajectory from /odom as your said wh200720041/ssl_slam#14 (comment)
And I also output the original point from the bag.
However, the pcl::transformPointCloud for output pose and the original point goes completely wrong, what I am miss?
The pose and pcd are obtained through odomEstimationLocalizationNode.cpp
I make a fork, maybe you can point out the problem.
Thanks.
Hello, i have a problem with the command "rosservice call /save map".
ERROR: service [/save_map] responded with an error: : [pcl::PCDWriter::writeASCII] Could not open file for writing!
[ERROR] [1642414934.582664157, 1642414849.721206964]: Exception thrown while processing service call: : [pcl::PCDWriter::writeASCII] Could not open file for writing!
Picture of my terminal:
Could you help me?
Thank you in advance for your time.
Hi,
I'd like to get some help on how to integrate a t265 tracking camera as an odometry source for the /odom topic instead of using odomEstimationMappingNode to obtain /odom.
How should I make changes on the mapOptimizationNode to make this work with a t265 sensor?
I used realsensense viewer to record data, but it does not work.
Could you share the record command? thanks a lot~
setting /run_id to cbc710a4-d390-11ed-afc1-00d861d6168c
process[rosout-1]: started with pid [21215]
started core service [/rosout]
process[bag-2]: started with pid [21218]
process[ssl_slam2_laser_processing_node-3]: started with pid [21222]
process[ssl_slam2_odom_estimation_mapping_node-4]: started with pid [21224]
process[ssl_slam2_map_optimization_node-5]: started with pid [21229]
process[baselink2cam_tf-6]: started with pid [21231]
process[rviz-7]: started with pid [21232]
process[ssl_slam2/trajectory_server_ssl_slam-8]: started with pid [21233]
double free or corruption (out)
[ssl_slam2_map_optimization_node-5] process has died [pid 21229, exit code -6, cmd /home/hao007/ssl2_ws/devel/lib/ssl_slam2/ssl_slam2_map_optimization_node __name:=ssl_slam2_map_optimization_node __log:=/home/hao007/.ros/log/cbc710a4-d390-11ed-afc1-00d861d6168c/ssl_slam2_map_optimization_node-5.log].
log file: /home/hao007/.ros/log/cbc710a4-d390-11ed-afc1-00d861d6168c/ssl_slam2_map_optimization_node-5*.log
double free or corruption (out)
[ssl_slam2_odom_estimation_mapping_node-4] process has died [pid 21224, exit code -6, cmd /home/hao007/ssl2_ws/devel/lib/ssl_slam2/ssl_slam2_odom_estimation_mapping_node __name:=ssl_slam2_odom_estimation_mapping_node __log:=/home/hao007/.ros/log/cbc710a4-d390-11ed-afc1-00d861d6168c/ssl_slam2_odom_estimation_mapping_node-4.log].
log file: /home/hao007/.ros/log/cbc710a4-d390-11ed-afc1-00d861d6168c/ssl_slam2_odom_estimation_mapping_node-4*.log
[ WARN] [1680685438.207610937, 1613437896.249689627]: No transform between frames map and base_link available after 1613437896.249690 seconds of waiting. This warning only prints once.
Hi,
Thanks for the awesome project.
I am working with l515 lidar (live sensor).
As i am not working with bag files, so i made few changes in ssl_slam2_mapping.launch-
Removed first 2 lines that requires .bag file and replaced it with rs_camera.lauch file. As in SSL_SLAM.
It worked and i saved the generated map as PCD with command-
rosrun pcl_ros pointcloud_to_pcd input:=/map
How can i use that PCD file to be loaded for ssl_slam2_localization? currently it requires bag file.
Also i have out of box querry-
If i want to know there is any object placed in front within 1-2 meter. Is there any way i can implement in code just to get information like something is there in realtime?
Thanks.
Thank you for sharing such amazing work. I am using L515 for map generation and sometimes I was losing the odometry due to low features. I guess currently IMU data is not being used is there any way to use the IMU data to improve the performance of odometry?
If there are any other options please let me know that also.
Thank you
Thank you for sharing. I tested the l515 hand-held and found that the closed-loop effect was not very good. I guess this faction is hidden in“ bool MapOptimizationClass::optimizeGraph(int matched_id, int current_id)”,Unfortunately, I haven't understood it yet -.- ~ I wonder if there are any ways to improve the effect of Closed-loop Detection by sacrificing computational efficiency? Because my device has extra computing power
hi I install a L515 upper on the robot, it's towards the ceiling. Now I always get a rotable map and transform. I see in the laserProcessingClass.cpp and modify the line 20~27, for change the coordinate transform for my install style, but it lead to feature Extraction fail . and then I try to change the final tranform result in odomEstimationLocalizationClass.cpp and add another transform to change what br.sendTransform(), but it also can not get the right map or transform.Do you have any idea for my case?
大佬好,我阅读代码发现matchPointsToMap函数里的odom全局变量是没有地方更新的。q_w_curr和t_w_curr全局变量也仅是通过odom进行更新,也就是odom本质上是没有进行更新的,请问是我理解错了吗?
Eigen::Isometry3d odom_prediction = odom * (last_odom.inverse() * odom);
last_odom = odom;
odom = odom_prediction;
q_w_curr = Eigen::Quaterniond(odom.rotation());
t_w_curr = odom.translation();
if(edge_point_flag && surf_point_flag){
odom = Eigen::Isometry3d::Identity();
odom.linear() = q_w_curr.toRotationMatrix();
odom.translation() = t_w_curr;
}
Hi! I am very impressed by you wonderful SLAM project. I am trying to see if it can run using the pointclouds coming from a mems lidar, in particular the Mid-360.
Reading your original paper it seems like it should be quite generalizable but looking through your codebase I see that you always check for pcl::PointCloud<pcl::PointXYZRGB>
while most lidars only output XYZ values.
And in fact when testing it using my data I get the errors:
[pcl::KdTreeFLANN::setInputCloud] Cannot create a KDTree with an empty input cloud!
[pcl::KdTreeFLANN::setInputCloud] Cannot create a KDTree with an empty input cloud!
Failed to find match for field 'rgb'.
Failed to find match for field 'rgb'.
Failed to find match for field 'rgb'.
[pcl::KdTreeFLANN::setInputCloud] Cannot create a KDTree with an empty input cloud!
[pcl::KdTreeFLANN::setInputCloud] Cannot create a KDTree with an empty input cloud!
Failed to find match for field 'rgb'.
Failed to find match for field 'rgb'.
Failed to find match for field 'rgb'.
Am I missing something?
process[ssl_slam2_map_optimization_node-3]: started with pid [29347]
double free or corruption (out)
process[baselink2cam_tf-4]: started with pid [29391]
process[rviz-5]: started with pid [29393]
process[ssl_slam2/trajectory_server_ssl_slam-6]: started with pid [29398]
[ssl_slam2_map_optimization_node-3] process has died [pid 29347, exit code -6, cmd /home/jzx/l515_slam/devel/lib/ssl_slam2/ssl_slam2_map_optimization_node __name:=ssl_slam2_map_optimization_node __log:=/home/jzx/.ros/log/4f8913b2-bf8b-11ec-b172-000ec672fdee/ssl_slam2_map_optimization_node-3.log].
Thank you for sharing your amazing work. I was collecting data using L515 in bag format. I just subscribed to the topics mentioned in the sample bag file (Mappingtest.bag). I am not able to understand what is /zalpha_odom in the sample bag file? Please let me know how to get this topic information.
如题,google网盘有墙。
any plans to provide a Dockerfile
for this project ? it's getting too difficult to setup the dependencies.
Hi!
I could build ssl_slam without problems, but when I try with ssl_slam2, I can't build.
Have you changed some library version?
I would like to copy the log error, but is too long.
When I use the catkin_make command and run it after cloning the realsense repository I get this error:
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- ~~ traversing 4 packages in topological order:
-- ~~ - realsense2_camera_msgs (plain cmake)
-- ~~ - realsense2_description (plain cmake)
-- ~~ - realsense2_camera (plain cmake)
-- ~~ - ssl_slam2
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CMake Error at /opt/ros/melodic/share/catkin/cmake/catkin_workspace.cmake:100 (message):
This workspace contains non-catkin packages in it, and catkin cannot build
a non-homogeneous workspace without isolation. Try the
'catkin_make_isolated' command instead.
Call Stack (most recent call first):
CMakeLists.txt:69 (catkin_workspace)
-- Configuring incomplete, errors occurred!
See also "/home/third/catkin_ws/build/CMakeFiles/CMakeOutput.log".
See also "/home/third/catkin_ws/build/CMakeFiles/CMakeError.log".
I also tried it after running the catkin_make_isolated command I got this error:
third@ender:~/catkin_ws$ catkin_make_isolated
Base path: /home/third/catkin_ws
Source space: /home/third/catkin_ws/src
Build space: /home/third/catkin_ws/build_isolated
Devel space: /home/third/catkin_ws/devel_isolated
Install space: /home/third/catkin_ws/install_isolated
~~ traversing 4 packages in topological order:
~~ - realsense2_camera_msgs (unknown)
~~ - realsense2_camera (unknown)
~~ - realsense2_description (unknown)
~~ - ssl_slam2
Error: Packages with unknown build types exist
Can not build workspace with packages of unknown build_type
Any idea how to resolve this issue ?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.