Giter Site home page Giter Site logo

nbvplanner's Introduction

Receding Horizon Next Best View Planning

The next best view planner is a real-time capable exploration path planner. From the current pose it expands a tree to find a next pose that gives a high exploration gain. This gain reflects the exploration of space that is not yet (sufficiently) known. As the vehicle proceeds on the path, the tree is recomputed, taking into account the new information from the sensor.

This README gives a short overview. For more information refer to the wiki.

Planner installation and execution

To run the current version, compile the package nbvplanner. To get it navigate to the source folder of your ros workspace:

git clone https://github.com/ethz-asl/nbvplanner.git
cd nbvplanner
git submodule init --
git submodule sync --recursive
git submodule update --recursive
cd ..

Moreover, make sure you have all the necessary libraries:

apt-get install ros-<distro>-octomap-*
apt-get install python-catkin-tools
catkin build

For a simulation demo launch

roslaunch interface_nbvp_rotors flat_exploration.launch

Tested under ROS Indigo and Jade.

Further instructions for the visualization of the exploration progress, as well as more demo scenarios and descriptions of the parameters can be found in the wiki.

If you use this software in a scientific publication, please cite the following paper:

@inproceedings{bircher2016receding,
  title={Receding horizon "next-best-view" planner for 3D exploration},
  author={Bircher, Andreas and Kamel, Mina and Alexis, Kostas and Oleynikova, Helen and Siegwart, Roland},
  booktitle={2016 IEEE International Conference on Robotics and Automation (ICRA)},
  pages={1462--1468},
  year={2016},
  organization={IEEE}
}

Credits

This algorithm was developed by Andreas Bircher with the help and support of the members of the Autonomous Systems Lab. The work was supported by the European Commission-funded project AEROWORKS.

Contact

You can contact us for any question or remark:

nbvplanner's People

Contributors

birchera avatar ffurrer avatar fmina avatar helenol 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

nbvplanner's Issues

nvbp_srv.h not found

nbvp_srv.h is included in the nbvp.h file, but I can't find it. how can I get the nbvp_srv.h file?

Using other quadrotor models

First of all, amazing work on your nbvplanner.
I am trying to use other quadrotor models in the planning simulation. I noticed there is an ardrone model in rotors_description folder. In the simulation launch files the name of quadrotor can be changed, however, they depend on other launch files and differerent models have different parameters.

Which launch files, parameters and controller have to be modified in order to use the ardrone model?

Thank you.

License of this package?

Hello guys.
Thank you for your great work.
Would you mind add a license file for this package?

fatal error: nbvplanner/nbvp_srv.h: No such file or directory

Dear all,

I tried to compile nbvplanner using catkin build. But, it failed to build nbvplanner and interface_nbvp_rotors.
In nbvp.h and exploration.cpp, they include <nbvplanner/nbvp_srv.h>.
However, there is no nbvp_srv.h file in the source code.
Do I miss something?

Thanks for any suggestions!

Exceeding maximum failed iterations, return to previous point!

When i run the demo (flat_exploration), the planner can initialize, but after initialization, it could not plan and reported "Exceeding maximum failed iterations, return to previous point!" as follows in each iteration.

[ INFO] [1638969669.122324849, 63.523000000]: Starting the planner: Performing initialization motion
[ INFO] [1638969686.898799717, 75.530000000]: Planning iteration 0
[ INFO] [1638969688.467290489, 76.607000000]: Exceeding maximum failed iterations, return to previous point!
[ INFO] [1638969689.964621217, 77.608000000]: Planning iteration 1
[ INFO] [1638969691.555007969, 78.660000000]: Exceeding maximum failed iterations, return to previous point!
[ INFO] [1638969693.092617836, 79.660000000]: Planning iteration 2
[ INFO] [1638969694.734058334, 80.765000000]: Exceeding maximum failed iterations, return to previous point!

Anyone met the same issue before? Thanks a lot.

interface_nbvp_rotors flat_exploration.launch failed due to .gazebo files

Hi

I'm using branch 'devel/voxblox' to do simulation. In launch flat_exploration.launch,

xacro:Traditional processing is deprecated. Switch to --inorder processing!
To check for compatibility of your document, use option --check-order.
For more infos, see http://wiki.ros.org/xacro#Processing_Order
No such file or directory: /home/lch/code_ws/nvbplanner_ws/src/nbvplanner/rotors/rotors_description/urdf/mav_generic_odometry_sensor.gazebo None None
when processing file: /home/lch/code_ws/nvbplanner_ws/src/nbvplanner/rotors/rotors_description/urdf/mav_with_vi_sensor.gazebo
while processing /home/lch/code_ws/nvbplanner_ws/src/nbvplanner/interface_nbvp_rotors/launch/mav_inspector.launch: while processing /home/lch/code_ws/nvbplanner_ws/src/nbvplanner/rotors/rotors_gazebo/launch/spawn_mav.launch:
Invalid tag: Cannot load command parameter [robot_description]: command [ /opt/ros/kinetic/share/xacro/xacro.py '/home/lch/code_ws/nvbplanner_ws/src/nbvplanner/rotors/rotors_description/urdf/mav_with_vi_sensor.gazebo' enable_logging:=false enable_ground_truth:=true enable_mavlink_interface:=false
log_file:=firefly mav_name:=firefly] returned with code [2].
Param xml is
The traceback for the exception was written to the log file

It seems that the program cannot find some .gazebo files. However, these files are included in 'master' branch of Rotor simulator here.
So I manually added mav_with_vi_sensor.gazebo and mav_generic_odometry_sensor.gazebo to current branch, which is submodule branch under devel/voxblox. Then I launched flat_exploration.launch and there is strange errors shows as below,
Screenshot from 2019-03-11 21-35-43

Maybe its caused by the confused branch?
Any advice appreciated.

Glen

nbvPlanner does not work properly in simulation demo

Hi,
I am using ubuntu14.04 and ros indigo now.
I followed the instruction from https://github.com/ethz-asl/nbvplanner/wiki/Installation-Instructions to configured the environment successfully. when i run following command
roslaunch interface_nbvp_rotors flat_exploration.launch
I get the following errors and the UAV are just drifting in gazebo.
[ERROR] [1542903232.547584120, 0.350000000]: "navigation" passed to lookupTransform argument target_frame does not exist.
[ERROR] [1542903232.605931369, 0.410000000]: Lookup would require extrapolation at time 0.410000000, but only time 0.510000000 is in the buffer, when looking up transform from frame [world] to frame [navigation]
[ERROR] [1542903249.365794165, 17.050000000]: "world" passed to lookupTransform argument target_frame does not exist.
Is there any methods I can solve this?

insertPointCloud takes forever after (most probably) ros octomap update

@birchera
nbvplanner worked great few months ago but after I update some ros package which I believe most likely due to octomap related packages, the planner gets stuck (it can still work) when running flat_exploration example with firefly. After some invertigation,

I think it is most likely due #to
void OctomapWorld::insertPointcloudIntoMapImpl()
...
octomap::KeySet free_cells, occupied_cells;
for (pcl::PointCloudpcl::PointXYZ::const_iterator it = cloud->begin();
it != cloud->end(); ++it) {
const octomap::point3d p_G_point(it->x, it->y, it->z);
// First, check if we've already checked this.
octomap::OcTreeKey key = octree_->coordToKey(p_G_point);

if (occupied_cells.find(key) == occupied_cells.end()) {
  // Check if this is within the allowed sensor range.
  castRay(p_G_sensor, p_G_point, &free_cells, &occupied_cells);
}

}
...

The above for loop takes unreasonably long time (more than a minute) to complete for each pointcloud message callback starting from the first pointcloud msg.
As you can see, it mostly calls octomap API.

Can you please take a look into this problem? Thank you very much.

It is tested with both kinetic and indigo setup with Ubuntu 16.xx and 14.xx respectively.

Error running demo launch file

hey Im glad to see your work , in my computer there is some trouble .

"navigation" passed to lookupTransform argument target_frame does not exist.

Lookup would require extrapolation at time 0.250000000, but only time 0.310000000 is in the buffer, when looking up transform from frame [world] to frame [navigation]

QQ截图20201010175653
QQ截图20201010175359

I wounder is there any package I missed?
so I come to ask if there are same issue.
thanks

Issues with map building

I'm bringing up the package on a stereo camera setup, and the mapping seems to be OK, with the Octomap updating just fine.

The terminal though, is filled with these 2 messages. Can someone tell me what is causing this, and how I can fix it? I'm running ROS Jade.

[ WARN] [1455351424.149550020]: Using latest TF transform instead of timestamp match.

and this one here is almost continuous :

WARNING: coordinates ( (0.398782 0.310725 -0.175888) -> (inf -nan -nan)) out of bounds in computeRayKeys

Thanks!

Rechek the source code in rrt.cpp

Would you check the source code line #547 in rrt.cpp?

I think that the code should be changed like this:
#547 if (inFoV) { ---------> if (!inFoV) {

Thank you.

[problem] roslaunch interface_nbvp_rotors flat_exploration.launch

when I run following commands

roslaunch interface_nbvp_rotors flat_exploration.launch

it results in following errors

IOError: [Errno 2] No such file or directory: '/home/wkyoun/catkin_build/src/rotors/rotors_description/urdf/firefly_vi_sensor.gazebo'

So, I tried to find firefly_vi_sensor.gazebo file, but I cannot find.

The full error scripts is as followings:

wkyoun@wkyoun-15Z960-GA70K:~/catkin_build/src/nbvplanner/interface_nbvp_rotors$ roslaunch interface_nbvp_rotors flat_exploration.launch


... logging to /home/wkyoun/.ros/log/c88b0a6a-424e-11e6-a811-1002b5120fb1/roslaunch-wkyoun-15Z960-GA70K-21991.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.

Traceback (most recent call last):
  File "/opt/ros/indigo/share/xacro/xacro.py", line 62, in <module>
    xacro.main()
  File "/opt/ros/indigo/lib/python2.7/dist-packages/xacro/__init__.py", line 673, in main
    f = open(args[0])
IOError: [Errno 2] No such file or directory: '/home/wkyoun/catkin_build/src/rotors/rotors_description/urdf/firefly_vi_sensor.gazebo'
while processing /home/wkyoun/catkin_build/src/nbvplanner/interface_nbvp_rotors/launch/mav_inspector.launch:
while processing /home/wkyoun/catkin_build/src/rotors/rotors_gazebo/launch/spawn_mav.launch:
Invalid <param> tag: Cannot load command parameter [robot_description]: command [     /opt/ros    /indigo/share/xacro/xacro.py '/home/wkyoun/catkin_build/src/rotors/rotors_description    /urdf/firefly_vi_sensor.gazebo'     enable_logging:=false     enable_ground_truth:=true     enable_mavlink_interface:=false     log_file:=firefly     mav_name:=firefly] returned with code [1]. 

Param xml is <param command="     $(find xacro)/xacro.py '$(arg model)'         enable_logging:=$(arg enable_logging)     enable_ground_truth:=$(arg enable_ground_truth)         enable_mavlink_interface:=$(arg enable_mavlink_interface)     log_file:=$(arg log_file)         mav_name:=$(arg mav_name)" name="robot_description"/>
The traceback for the exception was written to the log file

Built failed

Hello,
Thanks for sharing this project !

Compilation with catkin_make on ROS Indigo end up with an error.
[...]
[100%] Built target gflags_nothreads-shared
Install the project...
-- Install configuration: "Release"
-- Installing: /opt/nrx/ros/ethz-asl/devel/lib/libgflags.so.2.2.0
-- Installing: /opt/nrx/ros/ethz-asl/devel/lib/libgflags.so.2
-- Installing: /opt/nrx/ros/ethz-asl/devel/lib/libgflags.so
-- Installing: /opt/nrx/ros/ethz-asl/devel/lib/libgflags_nothreads.so.2.2.0
-- Installing: /opt/nrx/ros/ethz-asl/devel/lib/libgflags_nothreads.so.2
-- Installing: /opt/nrx/ros/ethz-asl/devel/lib/libgflags_nothreads.so
-- Installing: /opt/nrx/ros/ethz-asl/devel/include/gflags/gflags.h
-- Installing: /opt/nrx/ros/ethz-asl/devel/include/gflags/gflags_declare.h
-- Installing: /opt/nrx/ros/ethz-asl/devel/include/gflags/gflags_completions.h
-- Installing: /opt/nrx/ros/ethz-asl/devel/lib/cmake/gflags/gflags-config.cmake
-- Installing: /opt/nrx/ros/ethz-asl/devel/lib/cmake/gflags/gflags-config-version.cmake
-- Installing: /opt/nrx/ros/ethz-asl/devel/lib/cmake/gflags/gflags-export.cmake
-- Installing: /opt/nrx/ros/ethz-asl/devel/lib/cmake/gflags/gflags-export-release.cmake
-- Installing: /opt/nrx/ros/ethz-asl/devel/bin/gflags_completions.sh
[ 23%] Completed 'gflags_src'
[ 23%] Built target gflags_src
make: *** [all] Error 2
Invoking "make -j8 -l8" failed

Full log in attachement.
build-log.txt

Own map exploration

I'm trying to explore a map that I built in gazebo, but the NBV planner does not explore the full map, it often visits places that it has already been before. The dimensions of the map are 38m x 26m.
After 560 iterations, the map is still not fully explored (see screenshot). I use the launch file from flat_exploration.launch, but adapted some parameters. Do these parameters look ok?

Parameter file:

system/v_max: 0.35
system/dyaw_max: 0.25
system/camera/pitch: [15.0]
system/camera/horizontal: [90.0]
system/camera/vertical: [60.0]
system/bbx/x: 0.5
system/bbx/y: 0.5
system/bbx/z: 0.3
system/bbx/overshoot: 0.5

nbvp/gain/free: 0.0
nbvp/gain/occupied: 0.0
nbvp/gain/unmapped: 1.0
nbvp/gain/area: 0.0
nbvp/gain/probabilistic: 0.0
nbvp/gain/range: 1.5
nbvp/gain/zero: 0.0
nbvp/gain/degressive_coeff: 0.5
nbvp/tree/extension_range: 1.0
nbvp/tree/exact_root: true
nbvp/tree/initial_iterations: 15
nbvp/tree/cuttoff_iterations: 200
nbvp/dt: 0.1

nbvp/log/throttle: 0.25
nbvp/log/on: true
bbx/minX: -28.0
bbx/minY: -19.0
bbx/minZ: 0.2
bbx/maxX: 7.2
bbx/maxY: 5.0
bbx/maxZ: 2.8
bbx/softBounds: false

pcl_throttle: 0.36
inspection_throttle: 0.5
screenshot from 2017-02-08 16 00 10

nbvPlanner crashes in simulation demo

I managed to build the package by following the instructions in the README file, but when I run

roslaunch interface_nbvp_rotors flat_exploration.launch

I get the following error message in the console after Gazebo launches:

Msg Waiting for master.[firefly/nbvPlanner-10] process has died [pid 14015, exit code -11, cmd /home/mattgiamou/ethz_ws/devel/lib/nbvplanner/nbvPlanner cam0/camera_info:=/firefly/vi_sensor/left/camera_info cam1/camera_info:=/firefly/vi_sensor/right/camera_info pointcloud_throttled:=/firefly/vi_sensor/camera_depth/depth/points pose:=/firefly/ground_truth/pose_with_covariance nbvplanner:=/firefly/nbvplanner peer_pose_1:=peer_pose_1 peer_pose_2:=peer_pose_2 peer_pose_3:=peer_pose_3 __name:=nbvPlanner __log:=/home/mattgiamou/.ros/log/97ac42e8-ef73-11e5-9f74-b0c554bd9d41/firefly-nbvPlanner-10.log].
log file: /home/mattgiamou/.ros/log/97ac42e8-ef73-11e5-9f74-b0c554bd9d41/firefly-nbvPlanner-10*.log

The simulated firefly performs its initialization movement but then is unable to reach the nbvPlanner:

[ WARN] [1458572145.152252785, 22.020000000]: Planner not reachable

Always Planner not reachable!

Hello, after successfully compiling in ubuntu14 and ros Indigo, I ran a simulation demo launch and the terminal kept displaying Planner not reachable. How can I solve this problem and start planning?

Exceeding maximum failed iterations, return to previous point!

Hello,I met the same issue when i set resolution from 0.4 to 0.1 :
[ INFO] [1647413810.627467253, 185.880000000]: Starting the planner: Performing initialization motion
[ INFO] [1647413822.629511693, 197.880000000]: Planning iteration 0
[ INFO] [1647413823.307989306, 198.550000000]: Exceeding maximum failed iterations, return to previous point!
[ INFO] [1647413824.299696295, 199.550000000]: Planning iteration 1
[ INFO] [1647413825.004284673, 200.250000000]: Exceeding maximum failed iterations, return to previous point!

I want to set resolution smaller such as 0.1 ,but the error exceeding maximum failed at the Planning iteration 0. How did you tackle this issue, thanks for help.

ParseCommandLineFlags

I'm trying to install the package in the Ubuntu 16.04 - ROS kinetic. But when I tried the catkin build didn't works, then I done catkin-make as I used for others packages (like StructuralInspectionPlanner) it starts to compile but in the end have an error

'/catkin_ws/src/nbvplanner/volumetric_mapping/octomap_world/src/octomap_manager_node.cc:35:3: error: ‘ParseCommandLineFlags’ is not a member of ‘google’ '

How can I fixed this error ? Has anyone have this problem ?

Thanks.

Planner not set up: Planner not ready!

Screenshot from 2019-10-03 02-28-24

[ INFO] [1570051382.453454267, 0.050000000]: Physics dynamic reconfigure ready.
[ INFO] [1570051387.420208966, 5.010000000]: Starting the planner: Performing initialization motion
[ INFO] [1570051399.430892708, 17.010000000]: Planning iteration 0
[ERROR] [1570051399.432372840, 17.010000000]: Planner not set up: Planner not ready!

I am using, Ubuntu 18.04, Ros-melodic, Gazebo9.

The package was having a few issue to build in ros-melodic,
The issue related to rotors_simulator was solved by deleting
/src/nbvplanner/rotors and cloning in from original repo. rotors_simulation and renaming to rotos, and added the missing files that I found additional in /src/nbvplanner/rotors

I tracked the issue to rotors/rotors_gazebo/launch/spawn_mav.launch
but I am not able to solve it.

Also, some error came related to the \clock, so I used rosparam set /use_sim_time true ,
I also tried rosparam set use_sim_time false,
but the issue remains unresolved, when I tried to echo the rostopic/firefly/command/..
image

Related to this error : "Gazebo is Paused" I read somewhere on internet.
How to unpause it ?

if anyone has faced this issue earlier, kindly help me

rtt.cpp: Possible errors in computation of visibility inside gain

Hi, I used the visibility computation from the gain() function in rrt.cpp and found two issues:

  1. in rrt.cpp, line 529
    if(dir.norm()>rangeSq)
    The function norm() computes the actual norm, not the square of it. Hence shouldn't this be changed to:
    if(dir.transpose().dot(dir)>rangeSq)

  2. in rrt.cpp, line 547:
    if(!inFoV)
    Don't we want to break this loop, when a point is INSIDE the field of view. Hence this should be:
    if(inFOV)
    Otherwise only points OUTSIDE the FoV will be used for the computation of the gain, which does not make sense.

I used this code to compute the visibility within my own work, and it did only give the proper results after I made those two changes.

I just noticed that the 2nd point was changed due to the closed issue #6 . However, after this change the computation is wrong, the way it was done before was correct.

eigen_checks submodule

#5 broke build dependencies.

When changing the architecture of the repo, eigen_checks was not included as submodule.

nbvplanner ported to ROS noetic

Hi,
we ported the nbvplanner stack to ROS noetic and included it in the framework 3DMR. We started from the nbvplanner approach and created a distributed multi-robot exploration for UGVs (further details in the 3DMR repo). I am sharing this information here in the hope that it will be helpful to others.
Thank you very much for your great framework!
Luigi

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.