Giter VIP home page Giter VIP logo

vdbfusion_mapping's Introduction

VDBFUSION_ROS_MAPPING

This repo is modified ROS1 version of vdbfusion for mapping incrementally based on received odometry and corresponding point cloud message. Since the origin repo of vdbfusion_ros have some problems on the cow dataset, more issues can be found here. The whole process is based on the ROS1, please check origin repo of vdbfusion if you'd like to use directly without ROS. Please remember clone submodules also.

# 内地的同学用gitee 快一点
git clone --recurse-submodules https://gitee.com/kin_zhang/vdbfusion_mapping.git
# OR from github
git clone --recurse-submodules https://github.com/Kin-Zhang/vdbfusion_mapping.git

Install

Docker version for convenient usage. [在内地的同学建议使用docker pull 先换一下dockerhub的源]

docker pull zhangkin/vdbmapping_mapping

# or build through Dockerfile
docker build -t zhangkin/vdbfusion_mapping .

# =========== RUN -v is the bag path in your computer
docker run -it --net=host -v /dev/shm:/dev/shm -v /home/kin/bags:/workspace/data --name vdbfusion_mapping zhangkin/vdbfusion_mapping /bin/zsh

Dependencies

Own environment, please check the file here, TESTED SYSTEM: Ubuntu 18.04 and Ubuntu 20.04. Here are some dependencies for desktop installed if you'd like to try. Please follow their dependencies to install, Dockerfile may help you with that also.

  • IGL: mesh save
  • OpenVDB: vdb data structure, ATTENTION Boost need 1.70, Ubuntu 18.04 default is 1.65
  • glog, gflag: for output log
  • ROS1: ROS-full (tested on melodic)

Usage

Please note that this is the for incremental mapping, no! odom output! So, you have to have odom/tf topic with same timestamp lidar msg. If you don't have the package to do so, checkout here: Kin-Zhang/simple_ndt_slam Really easy to get poses!! (But it didn't work well on depth sensor point cloud like cow dataset)

Config

The only thing you have to change is the config file about the topic name on your own dataset/equipment.

# input topic name setting ===========> Please change according to your dataset
lidar_topic: "/odom_lidar"
odom_topic: "/auto_odom"

# or tf topic ==> like the cow and lady dataset

Run

run launch with bag directly

roslaunch vdbfusion_ros vdbfusion_mapping.launch

save and pub map, open with visualization tools example image, .pcd file and .ply file (mesh)

rosservice call /save_map '/workspace/data/test' 0.0

Results

My own dataset with Kin-Zhang/simple_ndt_slam give the pose and this repo to mapping

ETH Zurich ASL: Cow and Lady RGBD Dataset Meshlab view, If the bag have the RGB info in the msg like XYZRGB etc, the results could be like right one:

Another dataset: TU Munich RGB-D SLAM Dataset and Benchmark - FR1DESK2 Test bag: rgbd_dataset_freiburg3_long_office_household-2hz-with-pointclouds.bag

Acknowledgement

Others

includes some todo and issue

  • grouped process TODO from voxblox
  • Memory increases a lot, maybe buffer and thread is not so great option, throw some data away if the queue is too long?
  • speedup again?? GPU? I don't know, let's find out

Solved:

  • For HDDA, here are comments from vdbfusion author @nachovizzo:

    Additionally, the HDDA makes not much sense in our mapping context since it's highly effective ONCE the VDB topology has been already created

vdbfusion_mapping's People

Contributors

kin-zhang avatar

Stargazers

Zhongmiao Yan avatar davci avatar Yinqiang Zhang avatar dk avatar 王德相 avatar  avatar Zihao_Wu avatar 赵焕峰 avatar  avatar Codeknightarth avatar Charlie avatar  avatar xiaoshan423 avatar Turcan Tuna avatar Yukiya Fukuda avatar  avatar  avatar  avatar Chen Yao avatar Haebeom Jung avatar  avatar Arslan avatar  avatar  avatar adam avatar Zhili avatar Saurabh Gupta avatar Ignacio Vizzo avatar Tomato1107 avatar  avatar Hu Zhu avatar Grandzxw avatar 爱可可-爱生活 avatar 刘国庆, Guoqing Liu avatar  avatar Liu Jianheng avatar Yue Pan  avatar gogojjh avatar

Watchers

Charlie avatar Ignacio Vizzo avatar  avatar yinloonga avatar

vdbfusion_mapping's Issues

Error While building with Dockerfile (open3D)

When I Install Open3D dependencies, "util/install_deps_ubuntu.sh" doesn't to assume yes to apt-get,which results in Abort.As I am a freshman to Docker,I don't know how to solve this problem.

Undefined reference

Sorry about creating a new issue, I couldn't figure out how to reopen the closed issue.

I'm running into the exact same issue as #3 when trying to catkin_make the workspace after installing glog, open3d and the such.
I can't exactly make out what the solution was other than there being some conflict between open3d and ROS?

(I'm also trying to run this locally rather than using docker)

Any help would be much appreciated!

/usr/bin/ld: CMakeFiles/vdbfusion_mapping.dir/vdbfusion_mapping_node.cpp.o: in function `main':
vdbfusion_mapping_node.cpp:(.text.startup+0x20f): undefined reference to `ros::init(int&, char**, std::string const&, unsigned int)'
/usr/bin/ld: vdbfusion_mapping_node.cpp:(.text.startup+0x2ac): undefined reference to `ros::NodeHandle::NodeHandle(std::string const&, std::map<std::string, std::string, std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > > const&)'
/usr/bin/ld: vdbfusion_mapping_node.cpp:(.text.startup+0x31e): undefined reference to `ros::NodeHandle::NodeHandle(std::string const&, std::map<std::string, std::string, std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > > const&)'
/usr/bin/ld: /home/user/vdbfusion_mapping/devel/lib/libvdbfusion_ros.so: undefined reference to `open3d::io::WriteTriangleMesh(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, open3d::geometry::TriangleMesh const&, bool, bool, bool, bool, bool, bool)'
collect2: error: ld returned 1 exit status
make[2]: *** [vdbfusion_mapping/vdbfusion_mapping/CMakeFiles/vdbfusion_mapping.dir/build.make:419: /home/user/vdbfusion_mapping/devel/lib/vdbfusion_ros/vdbfusion_mapping] Error 1
make[1]: *** [CMakeFiles/Makefile2:3689: vdbfusion_mapping/vdbfusion_mapping/CMakeFiles/vdbfusion_mapping.dir/all] Error 2

Issue with static tfs

Hi,

I am using your docker image with a custom bag which has static tfs which I would like to use for the transform. However, since they dont have a timestamp, i get an error in any of the 3 pose_sources available.
Pose source 0 error:

I0214 00:18:48.177858 16941 transform.cpp:59] Transform from livox_frame to frame map   
E0214 00:18:48.177947 16941 transform.cpp:64] Please check the tf tree between: livox_frame and map
[ERROR] [1676333928.178263056, 1671373741.397928351]: Error getting TF transform from sensor data: "map" passed to lookupTransform argument source_frame does not exist. 
F0214 00:18:48.179100 16941 rotation-quaternion-inl.h:63] Check failed: (squaredNorm()) >= (static_cast<Scalar>(1.0))-(EPS<Scalar>::normalization_value()) (0.25 vs. 0.9999) 
*** Check failure stack trace: ***
    @     0x564f39676216  google::LogMessage::Fail()
    @     0x564f39676151  google::LogMessage::SendToLog()
    @     0x564f39675a82  google::LogMessage::Flush()
    @     0x564f396794fc  google::LogMessageFatal::~LogMessageFatal()
    @     0x7fccbedaca41  kindr::minimal::RotationQuaternionTemplate<>::RotationQuaternionTemplate()
    @     0x7fccbedaa279  common::Transformer::lookUpTransformfromSource()              
    @     0x7fccbed7910e  vdbfusion_mapping::VDBFusionMapper::points_callback()
    @     0x7fccbed939e2  boost::detail::function::void_function_obj_invoker1<>::invoke()
    @     0x7fccbeda8a58  ros::SubscriptionCallbackHelperT<>::call()
    @     0x7fccbef25139  ros::SubscriptionQueue::call()
    @     0x7fccbeed3172  ros::CallbackQueue::callOneCB()
    @     0x7fccbeed3f15  ros::CallbackQueue::callOne()
    @     0x7fccbef272f5  ros::AsyncSpinnerImpl::threadFunc()
    @     0x7fccbb17f43b  (unknown)
    @     0x7fccbefb5609  start_thread
    @     0x7fccbb476133  clone1.407983   Duration: 0.015450 / 445.093984               
    @              (nil)  (unknown)1110   Duration: 0.018578 / 445.093984      

Pose source 1/2 error:

W0214 00:16:11.082625 16805 transform.cpp:81] No match found for transform timestamp: 1671373744.882379143 as transform queue is empty.

My tf tree is complete as you can see in the image
frames

Is there anything I can do to make it work with custom datasets?

undefined reference报错

我在编译过程中,出现了以下报错:

vdbfusion_mapping_node.cpp:(.text.startup+0x20f): undefined reference to `ros::init(int&, char**, std::string const&, unsigned int)'
/usr/bin/ld: vdbfusion_mapping_node.cpp:(.text.startup+0x2ac): undefined reference to `ros::NodeHandle::NodeHandle(std::string const&, std::map<std::string, std::string, std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > > const&)'
/usr/bin/ld: vdbfusion_mapping_node.cpp:(.text.startup+0x31e): undefined reference to `ros::NodeHandle::NodeHandle(std::string const&, std::map<std::string, std::string, std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > > const&)'
/usr/bin/ld: /home/bore/SLAM/VDBFusion/vdbfusion_mapping/vdbfusion_mapping/devel/.private/vdbfusion_ros/lib/libvdbfusion_ros.so: undefined reference to `open3d::io::WriteTriangleMesh(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, open3d::geometry::TriangleMesh const&, bool, bool, bool, bool, bool, bool)'
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/vdbfusion_mapping.dir/build.make:417: /home/bore/SLAM/VDBFusion/vdbfusion_mapping/vdbfusion_mapping/devel/.private/vdbfusion_ros/lib/vdbfusion_ros/vdbfusion_mapping] Error 1
make[1]: *** [CMakeFiles/Makefile2:1259: CMakeFiles/vdbfusion_mapping.dir/all] Error 2
make: *** [Makefile:146: all] Error 2

我在CMakeLists.txt文件中,在target_link_libraries中添加了${catkin_LIBRARIES},仍旧报这个错,请问有可能是什么原因导致的呢?

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.