Code Monkey home page Code Monkey logo

nanomap_ros's Introduction

NanoMap

Fast, Uncertainty-Aware Proximity Queries with Lazy Search of Local 3D Data

NanoMap is an algorithm and data structure that enables uncertainty-aware proximity queries for planning.


NanoMap

Features

Key features of NanoMap include:

  • Incorporates frame-specific uncertainty (due to modeled local pose uncertainty) returned along with query point
  • Query algorithm returns k-nearest-neighbors from most recent view of query point
  • Updates pose history information 2-4 orders of magnitude faster than fusion-based voxel packages
  • Particularly fast for low amounts of queries (<10,000)

Quickstart

	git clone https://github.com/peteflorence/nanomap_ros.git
	catkin_make  ## catkin build for catkin_tools, or catkin_make for catkin

Reccomend first testing your installation:

	catkin_make run_tests_nanomap_ros

Then there are two examples of minimal nodes, one is for benchmarking and performs queries:

	rosrun nanomap_ros benchmarking_node

The other shows how to use the nanomap_visualizer:

	rosrun nanomap_ros visualization_node

Support

This ros node has been tested on:

  • ROS Kinetic on Ubuntu 16.04
  • ROS Indigo on Ubuntu 14.04

Benchmarking

NanoMap is particularly fast for low amounts of motion planning queries (< ~10,000), due to its low data structure build time. Fusion-based voxel structures take longer to build but have faster query times, causing them to be faster for > ~10,000 queries.

Nanomap is two to four orders of magnitude faster than these other benchmarked packages at rebuilding its data structure upon receiving updated pose history information.

(On single-core of an Intel Skylake i7. Error bars are shown as standard error of the mean. Docker image with all packages buildable inside provided: https://hub.docker.com/r/flamitdraper/mapping/ )

Required Dependencies

  • Nanoflann (included as nanoflann_two.hpp)
  • Eigen
  • PCL

The PCL dependency is minimal. It only uses the pcl::PointCloud<pcl::PointXYZ>; does not use any algorithms. It would not be hard to replicate this type and remove the PCL dependency. Would gladly merge that PR, PCL is a fantastic library, but is not really used here.

Without ROS

The core of the code has no depdency on ROS. The only parts that have ROS dependencies are the visualization components, and the example node:

  • nanomap_visualizer.h / .cc
  • frustum_visualization.h
  • benchmarking_node.cpp

I have provided this as a ros package since that is how it has been used and tested. If you would like to use this without ros, it would just need a ros-independent CMakeLists.txt / incorporate into other build system.

Testing

    catkin_make run_tests_nanomap_ros 

Debugging NanoMap

The top of nanomap_types.h has #define NANOMAP_DEBUG_PRINT false. Changing this to true turns on potentially useful debug prints.

A particularly useful debug print is in NanoMapDebugPrintState() in nanomap.cc. Often I will turn the first line of this function to if (1) in order to print regular status.

Contributors

Contact

Contact [email protected] / peteflorence.com for more information.

nanomap_ros's People

Contributors

jakeware avatar peteflorence 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

nanomap_ros's Issues

rdf, rdf frame

What represents the "rdf" and "rdf frame" in the repository quadrotor-collision-avoidance?

Issue with Testing nanomap

Was trying to follow the instruction in README.md
I think something is missing.
I made a catkin workspace and cloned the git code.
Steps followed are :

  1. mkdir -p ~/nano_ws/src
  2. cd ~/nano_ws
  3. git clone
  4. catkin_make
    4a. source devel/setup.bash
  5. catkin_make run_tests_nanomap_ros

Problem with 5th step as "make run_tests_nanomap_ros -j8 -l8" failed".
Is some file missing? or some step which I should be doing or not doing above??

addPoseUpdates()

We are experimenting with seeing if NanoMap could be used instead of the traditional SLAM-based navigation planning. I'm been looking at what addPoseUpdates() does but I'm still not sure (seems like it takes a path of recent poses and updates the k-d tree). Is this a necessary component and how exactly would we get that data?

Thanks

I DON'T

May i start by pulling the docker into a raspberry pi and how would I do to tune this with my pi camera?

question about topic px4 setpoint_raw/attitude

Do you know how long the published thrust in mavros_msgs/AttitudeTarget can keep influence in MAV?

Because the time delay has important role in motion implementation with this attitude_thrust?

How can I get collision_visualization?

HI,
I just tested nanomap after saw your awesome video from CSAIL youtube channel. Thank you for sharing this as open source code! Is that possible to get collision_visualization from nanomap_ros? The bag files you provided in the docker container have it and I think it might be useful for further testing or tuning the nanomap program. And is there any instruction providing more details about integrating nanomap with some planning node (like some planning nodes in ROS navigation stack)? Thanks!

How to integrate Nanomap with rotors_simualtor?

Hi!,
I have read through you paper on Nanomap and it is really interesting approach. I have managed to pull down docker image provided in the document. However, I am a bit curious on how to integrate this Nanomap with the rotors_simulator. I found rotor_simulator. in your build folder in the docker, but I could not figure out how Nanomap can actually be integrated into rotor_simulator

I am now working on uav collision avoidance project using stereo camera and I think that your work here is really amazing. So I would like to see how could it be integrated into simulator so that I could try feeding point cloud generated with stereo camera instead of depth camera.

Thank you in advance ๐Ÿ˜„

catkin_make

when i catkin_make in the root of workspace, There is an error:
The specified base path "/home/nanomap_ros" contains a package but "catkin_make" must be invoked in the root of workspace

The question about code and paper

  1. I have a question about the code in benchmarking_node.cpp. In the callback function "PointCloudCallback" 1000 points are sampled to query in sphere space around current pose. This is different from the paper, in which the query point is along the motion path. and now only the information of last query point is saved in "reply". Why the other query points are not saved as"reply".

  2. I want to implement nanomap in UAV project. I have read the paper "Integrated Perception and Control at High Speed: Evaluating Collision Avoidance Maneuvers Without Maps". now I use px4 as flight control. How can I use the "reply" from nanomap to realize obstacle avoidence. Could we publish and subscribe the same msg (parameter) with mavros like in repository "quadrotor-collision-avoidance"? could the value in thes msgs also be computed by reward function in paper?

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.