GithubHelp home page GithubHelp logo

naturerobots / mesh_navigation Goto Github PK

View Code? Open in Web Editor NEW
497.0 19.0 64.0 13.64 MB

Mesh Navigation Stack

License: BSD 3-Clause "New" or "Revised" License

CMake 2.50% C++ 97.14% Python 0.36%
ros mesh navigation pathplanning control locomotion 3d-path-planning

mesh_navigation's Introduction

This is the active ROS2 branch of this repository. If your are looking for the old ROS1 version, checkout the noetic branch.

Mesh Navigation

The Mesh Navigation bundle provides software for efficient robot navigation on 2D manifolds, which are represented in 3D as triangle meshes. It enables safe navigation in various complex outdoor environments by using a modularly extensible layered mesh map. Layers can be loaded as plugins representing specific geometric or semantic metrics of the terrain. This allows the incorporation of obstacles in these complex outdoor environments into path and motion motion planning. The layered Mesh Map is integrated with Move Base Flex (MBF), which provides a universal ROS action interface for path planning, motion control, and for recovery behaviors. We also provide additional planner and controller plugins that run on the layered mesh map.

Maintainers:

Author: Sebastian Pütz

Contents:

Demo Gif

Publications

Please reference the following papers when using the navigation stack in your scientific work.

Continuous Shortest Path Vector Field Navigation on 3D Triangular Meshes for Mobile Robots

@inproceedings{puetz21cvp,
    author = {Pütz, Sebastian and Wiemann, Thomas and Kleine Piening, Malte and Hertzberg, Joachim},
    title = {Continuous Shortest Path Vector Field Navigation on 3D Triangular Meshes for Mobile Robots},
    booktitle = {2021 IEEE International Conference on Robotics and Automation (ICRA)},
    year = 2021,
    url = {https://github.com/uos/mesh_navigation},
    note = {Software available at \url{https://github.com/uos/mesh_navigation}}
}

Move Base Flex: A Highly Flexible Navigation Framework for Mobile Robots

@inproceedings{puetz18mbf,
    author = {Sebastian Pütz and Jorge Santos Simón and Joachim Hertzberg},
    title = {{Move Base Flex}: A Highly Flexible Navigation Framework for Mobile Robots},
    booktitle = {2018 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
    year = 2018,
    month = {October},
    url = {https://github.com/magazino/move_base_flex},
    note = {Software available at \url{https://github.com/magazino/move_base_flex}}
}

Installation

Please use the official released ros package or install more recent versions from source.

sudo apt install ros-melodic-mesh-navigation

Installation from source
All dependencies can be installed using rosdep
rosdep install mesh_navigation

As explicit dependencies we refer to the following ROS packages, which are also developed by us:

Use the pluto_robot package for example HDF5 map datasets, Gazebo simulations, and example configurations.

Software Stack

This mesh_navigation stack provides a navigation server for Move Base Flex (MBF). It provides a couple of configuration files and launch files to start the navigation server with the configured layer plugins for the layered mesh map, and the configured planners and controller to perform path planning and motion control in 3D (or more specifically on 2D-manifold).

The package structure is as follows:

  • mesh_navigation The corresponding ROS meta package.

  • mbf_mesh_core contains the plugin interfaces derived from the abstract MBF plugin interfaces to initialize planner and controller plugins with one mesh_map instance. It provides the following three interfaces:

    • MeshPlanner - mbf_mesh_core/mesh_planner.h
    • MeshController - mbf_mesh_core/mesh_controller.h
    • MeshRecovery - mbf_mesh_core/mesh_recovery.h
  • mbf_mesh_nav contains the mesh navigation server which is built on top of the abstract MBF navigation server. It uses the plugin interfaces in mbf_mesh_core to load and initialize plugins of the types described above.

  • mesh_map contains an implementation of a mesh map representation building on top of the mesh data structures in lvr2. This package provides a layered mesh map implementation. Layers can be loaded as plugins to allow a highly configurable 3D navigation stack for robots traversing on the ground in outdoor and rough terrain.

  • mesh_layers The package provides a couple of mesh layers to compute the trafficability of the terrain. Furthermore, these plugins have access to the HDF5 map file and can load and store layer information. The mesh layers can be configured for the robots abilities and needs. Currently we provide the following layer plugins:

    • HeightDiffLayer - mesh_layers/HeightDiffLayer
    • RoughnessLayer - mesh_layers/RoughnessLayer
    • SteepnessLayer - mesh_layers/SteepnessLayer
    • RidgeLayer - mesh_layer/RidgeLayer
    • InflationLayer - mesh_layers/InflationLayer
  • dijkstra_mesh_planner contains a mesh planner plugin providing a path planning method based on Dijkstra's algorithm. It plans by using the edges of the mesh map. The propagation start a the goal pose, thus a path from every accessed vertex to the goal pose can be computed. This leads to a sub-optimal potential field, which highly depends on the mesh structure.

  • cvp_mesh_planner contains a Fast Marching Method (FMM) wave front path planner to take the 2D-manifold into account. This planner is able to plan over the surface, due to that it results in shorter paths than the dijkstra_mesh_planner, since it is not restricted to the edges or topology of the mesh. A comparison is shown below. Please refer to the paper Continuous Shortest Path Vector Field Navigation on 3D Triangular Meshes for Mobile Robots which is stated above.

  • mesh_client Is an experimental package to additionally load navigation meshes from a server.

Usage

See the pluto_robot bundle for example configurations of the mesh navigatoin stack and usage.

Mesh map configuratoin

TODO

Planner and Controller configurations

TODO

Path Planning and Motion Control

Use the MeshGoal tool from the MeshTools bundle to select a goal pose on the shown mesh in RViz. This can be added to the top panel RViz.

Mesh Map

Mesh Layers

The following table gives an overview of all currently implemented layer plugins available in the stack and the corresponding types to specify for usage in the mesh map configuration. An example mesh map configuration is shown below.

Overview of all layers

Layer Plugin Type Specifier Description of Cost Computation Example Image
HeightDiffLayer mesh_layers/HeightDiffLayer local radius based height differences HeightDiffLayer
RoughnessLayer mesh_layers/RoughnessLayer local radius based normal fluctuation RoughnessLayer
SteepnessLayer mesh_layers/SteepnessLayer arccos of the normal's z coordinate SteepnessLayer
RidgeLayer mesh_layer/RidgeLayer local radius based distance along normal RidgeLayer
InflationLayer mesh_layers/InflationLayer by distance to a lethal vertex InflationLayer

Planners

Usage with Move Base Flex

Currently the following planners are available:

Dijkstra Mesh Planner

  - name: 'dijkstra_mesh_planner'
    type: 'dijkstra_mesh_planner/DijkstraMeshPlanner'

Continuous Vector Field Planner

  - name: 'cvp_mesh_planner'
    type: 'cvp_mesh_planner/CVPMeshPlanner'

MMP Planner

  - name: 'mmp_planner'
    type: 'mmp_planner/MMPPlanner'

The planners are compared to each other.

Vector Field Planner Dijkstra Mesh Planner ROS Global Planner on 2.5D DEM
VectorFieldPlanner DijkstraMeshPlanner 2D-DEM-Planner

Controllers

Simulation

If you want to test the mesh navigation stack with Pluto please use the simulation setup and the corresponding launch files below for the respective outdoor or rough terrain environment. The mesh tools have to be installed. We developed the Mesh Tools as a package consisting of message definitions, RViz plugins and tools, as well as a persistence layer to store such maps. These tools make the benefits of annotated triangle maps available in ROS and allow to publish, edit and inspect such maps within the existing ROS software stack.

Demos

In the following demo videos we used the developed VFP, i.e., the wavefront_propagatn_planner. It will be renamed soon to vector_field_planner.

Dataset and Description Demo Video
Botanical Garden of Osnabrück University Mesh Navigation with Pluto
Stone Quarry in the Forest Brockum Mesh Navigation with acron19

Stone Quarry in the Forest in Brockum

Colored Point Cloud Height Diff Layer RGB Vertex Colors
StoneQuarryPointCLoud StoneQuarryHeightDiff StoneQuarryVertexColors

Mesh Localization

For the necessary localization of the robot relative to the mesh, we recommend using RMCL: https://github.com/uos/rmcl. We presented the combination of both software packages at ROSCon 2023:

MeshNav ROSCon 2023 Video

Build Status

ROS Distro GitHub CI Develop Documentation Source Deb Binary Deb
Noetic Noetic CI Build Dev Status Build Doc Status Build Src Status Build Bin Status

mesh_navigation's People

Contributors

amock avatar cakem1x avatar mklpiening avatar mrvsht avatar spuetz 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

mesh_navigation's Issues

Readme for Ros2 Humble

From the commits it appears that the ros2 version works but I'm still struggling to build it. It would be nice if someone updates the readme for the humble branch.

Online mesh mapping?

Hi

Is it possible to use this package online e.x. in conjunction with SLAM or dynamically construct local costmap straight from the lidar pointlcouds?

Bad tf tree

@spuetz
I wanted to run mesh navigation in simulation.
So, According to the tutorial, I used following command.

roslaunch pluto_gazebo pluto_botanical_garden.launch
roslaunch pluto_navigation botanical_garden_osnabrueck.launch

But, I can't run mesh navigation.
I checked my tf tree. Then I noticed that tf between map and odom doesn't exist and Strange tf tree exists.
In general, tf tree of ros navigation is " map ==> odom ==> base_footprint "
Please tell me the solution to this problem

frames.pdf

MBF API Change

Comiplation error: argument mismatch "AbstractPlannerExecution class" when building from source.
This log should help point you to the issue:
/mesh_navigation/mbf_mesh_nav/src/mesh_planner_execution.cpp:43:88: error: no matching function for call to ‘mbf_abstract_nav::AbstractPlannerExecution::AbstractPlannerExecution(const string&, const Ptr&, mbf_abstract_nav::MoveBaseFlexConfig)’
43 | : AbstractPlannerExecution(name, planner_ptr, toAbstract(config)), mesh_ptr_(mesh_ptr)
|

TEMPORAL solution simply by adding "const TFPtr tf_listener_ptr_;" to "mesh_navigation/mbf_mesh_nav/src/mesh_planner_execution.h" and changing the abstract class initializaiton to look like this: "AbstractPlannerExecution(name, planner_ptr, tf_listener_ptr_, toAbstract(config))"

opencv2 features 2d not found

When i'm trying to build this repo with catkin make command. i'm getting below error message:

/usr/local/include/lvr2/algorithm/Texturizer.hpp:53:10: fatal error: opencv2/features2d.hpp: No such file or directory
   53 | #include <opencv2/features2d.hpp>

I have installed the opencv library with command:
sudo apt-get install libopencv-dev
My plat form is ubuntu 20.04, ros noetic.
I've successfully installed the lvr2 library as described in this page.
and the mesh_tools ros package successfully from source.

Question about the RidgeLayer

Hi authors, thanks for your great work!
I wonder the specific meaning of the RidgeLayer''. The description local radius based distance along normal'' is still hard to understand.
Thanks!

Any plans to port this to ROS2 ?

Hello ,
I am interested in mesh navigation but I have migrated to ROS2 already, I wonder whether there a plan to start a ROS2 branch ?

Running Pluto Simulation with mesh_navigation

Hi,
I have installed both mesh_navigation and the Pluto simulation package. However, I am having issue replicating the activities from the demo videos.

What I did was:

  1. Starting Gazebo via roslaunch pluto_gazebo pluto_botanical_garden.launch
  2. Starting mesh_navigation via roslaunch pluto_navigation botanical_garden_osnabrueck.launch
  3. Sending the goal via roslaunch pluto_navigation experiment.launch experiment:=botanical_garden_3_dijkstra

I seems to be able to get the planner working, with the planned path visualized, but the src pose does not correspond to the position of the robot, and no cmd vel was issued from the mbf. In addition, the position of the robot in RVIZ also don't seem to align with Gazebo.

Am I missing out some modules?

Lastly, would I be wrong to understand that this package only deals with path planning, and does not have any mesh based localization functionality

Path Planner doesn't execute.

Hi, Thank you for this amazing package. I have been trying to use this for a project and would greatly appreciate if I could receive some help in achieving the path planning. Using the pluto_robot package as a reference, I created my own mesh map with its mesh layers and all of it is rendering successfully but for some reason, I am unable to do actual path planning on it. After setting the 2d Pose Estimate and giving it a mesh goal, it always throws an error of 'Predecessor of goal not set with only 1 vector face found.
I am not sure what I am doing wrong and would be immensely helpful if anyone could guide me towards a possible solution. I am attaching the terminal log for reference.

Thank You

Screenshot from 2021-11-21 11-32-24

mesh_navigation repository ROS2 port meta issue

Central issue for porting mesh_navigation to ROS2 humble.

Work will be done on different branches (humble-prefixed), which all get merged into a new humblebranch. When migration is finished, thehumblebranch should contain a working version ofmesh_navigation` for ROS2 humble.

This issue keeps track of other issues and ToDos related to the migration effort:

  • Port LVR2 to ROS2
  • Port mesh_client pkg
  • Port mesh_map pkg
  • Port mbf_mesh_core pkg
  • #39
  • #40
  • #41
  • #42
  • #43
  • #35

Potential in mesh_navigation for staircase climbing

Hi @mklpiening,
Just wanted to firstly express my gratitude for this new package. It really makes 3D navigation much more accessible to ROS users like me.

I would like to enquire on the potential for using mesh_navigation on multi-level navigation, for instance, in a building where humans would normally ascend or descend via staircases? Correct me if I am wrong, but it seems to me that there cannot be multiple map layers on the same map (when it comes to mapping an entire multi-level building). In addition, I am not sure if we could send a command pose that has a Z (height) component?

Looking forward to hearing from you, thanks!

MeshTools RViz plugin changed

Hi, thank you for building this amazing package for mesh navigation. I am working on a project with point cloud data and was trying to use this package for building path planning algorithms. While running the pluto-robot examples, the textured mesh fails to load and throws an error. I installed the mesh_navigation package through the official ros package list and built the pluto_robot from source as provided in the repository. Also, I installed the uos_common_urdf and the robot_pose_ekf package from the ros package list as they were the dependency error thrown by gazebo while first launching the launch files.

Steps Followed:

roslaunch pluto_gazebo pluto_botanical_garden.launch
roslaunch pluto_navigation botanical_garden_osnabruck.launch

While running this, the robot model is represented but the textured mesh is not being loaded.

The error in RViz is:

TexturedMesh
The class required for this display, 'rviz_map_plugin/Mesh', could not be loaded.
Error:
Failed to load library /opt/ros/melodic/lib//librviz_map_plugin.so. Make sure that you are calling the PLUGINLIB_EXPORT_CLASS macro in the library code, and that names are consistent between this macro and your XML. Error string: Could not load library (Poco exception = /opt/ros/melodic/lib/libhdf5_map_io.so: undefined symbol: _ZN3MPI8Datatype4FreeEv)

Really hoping to receive some help regarding this.

Thank you

HDF5 file creation / error when created using lvr2_hdf5_mesh_tool

Hi,

I tried to use this package, but have problems creating an own usable HDF5 file. With the example file "botanical_garden_osnabrueck.h5" from the pluto_robot package it worked as expected.

So I tried to recreate the h5 file for the botanical_garden_osnabrueck map by using:

lvr2_hdf5_mesh_tool -i botanical_garden_osnabrueck_mesh.ply -o botanical_garden_osnabrueck_tool_converted.h5

When I created a launch file following the pluto example using the botanical_garden_osnabrueck_tool_converted.h5 file as input, executing it results in the following error:

terminate called after throwing an instance of 'lvr2::PanicException'
    what():  Program panicked: lookup with an out of bounds handle (4294967295) in StableVector

right after the message:

Start reading the mesh part 'mesh' from the map file '<my package path>/maps/botanical_garden_osnabrueck/botanical_garden_osnabrueck_tool_converted.h5'.

Comparing the original and the lvr2_hdf5_mesh_tool created h5 file, it can be seen that both files have almost the same datasets in the group "mesh/channels", but the dimension sizes of the "faces_indices/_normals" datasets are different (original: 1430188 x 3, tool converted: 1431293 x 3). Also, the original file has two additional datasets, "edge_distances" and "edge_distances_idx".

After having a closer look to the code it seems that the error occurs when reading the map (MeshMap::readMap), more specifically in the getMesh call, that leads to an addFace call. The error occurs here.


Is there another way to create the HDF5 files so that they can be used for the mesh navigation? I have the mesh as an obj or ply file. I also have it as a point cloud (pcd) file, if this would lead to a better solution.

I really hope to get help on this issue as the functionality of the package looks quite interesting.

Thank you!

dynamic local costmap

Hello while i was studying and experimenting with the mesh_navigatino and move_base_mbf i found that it has no support for real time dynamic obstacles. eg. in ros navigation stack the local costmaps were their which represented the real time obstacles.
Is their any way in which local costmaps or obstacles can be pepresented in mesh_navigation?

CVP Large Face Edge Case

Fix CVP issues that occur due to planning on large faces.

  • Before checking the path, ensure that the resulting vector field is valid (for this, normals need to be correct).
  • Fix path sampling (tends to overshoot); Maybe change from a fixed sampling distance to sampling until the end of a triangle.

can not build mbf_mesh_nav with catkin_make

[ 93%] Building CXX object mesh_navigation/mbf_mesh_nav/CMakeFiles/mbf_mesh_server.dir/src/mesh_planner_execution.cpp.o
[ 96%] Built target rviz_map_plugin
[ 96%] Building CXX object mesh_navigation/mbf_mesh_nav/CMakeFiles/mbf_mesh_server.dir/src/mesh_recovery_execution.cpp.o
[ 96%] Built target mbf_simple_nav
[ 98%] Built target mbf_costmap_server
[ 98%] Built target mbf_costmap_nav
/media/kint/E06A82386A820B8A/mesh_nav_ws/src/mesh_navigation/mbf_mesh_nav/src/mesh_recovery_execution.cpp: In constructor ‘mbf_mesh_nav::MeshRecoveryExecution::MeshRecoveryExecution(std::_cxx11::string, const Ptr&, const TFPtr&, const MeshPtr&, const mbf_mesh_nav::MoveBaseFlexConfig&)’:
/media/kint/E06A82386A820B8A/mesh_nav_ws/src/mesh_navigation/mbf_mesh_nav/src/mesh_recovery_execution.cpp:45:107: error: no matching function for call to ‘mbf_abstract_nav::AbstractRecoveryExecution::AbstractRecoveryExecution(const string&, const Ptr&, const TFPtr&, mbf_abstract_nav::MoveBaseFlexConfig)’
: AbstractRecoveryExecution(name, recovery_ptr, tf_listener_ptr, toAbstract(config)), mesh_ptr
(mesh_ptr)
^
/media/kint/E06A82386A820B8A/mesh_nav_ws/src/mesh_navigation/mbf_mesh_nav/src/mesh_controller_execution.cpp: In constructor ‘mbf_mesh_nav::MeshControllerExecution::MeshControllerExecution(std::_cxx11::string, const Ptr&, const ros::Publisher&, const ros::Publisher&, const TFPtr&, const MeshPtr&, const mbf_mesh_nav::MoveBaseFlexConfig&)’:
/media/kint/E06A82386A820B8A/mesh_nav_ws/src/mesh_navigation/mbf_mesh_nav/src/mesh_controller_execution.cpp:47:23: error: no matching function for call to ‘mbf_abstract_nav::AbstractControllerExecution::AbstractControllerExecution(const string&, const Ptr&, const ros::Publisher&, const ros::Publisher&, const TFPtr&, mbf_abstract_nav::MoveBaseFlexConfig)’
, mesh_ptr
(mesh_ptr)
^
In file included from /media/kint/E06A82386A820B8A/mesh_nav_ws/src/mesh_navigation/mbf_mesh_nav/include/mbf_mesh_nav/mesh_recovery_execution.h:41:0,
from /media/kint/E06A82386A820B8A/mesh_nav_ws/src/mesh_navigation/mbf_mesh_nav/src/mesh_recovery_execution.cpp:37:
/media/kint/E06A82386A820B8A/mesh_nav_ws/src/move_base_flex/mbf_abstract_nav/include/mbf_abstract_nav/abstract_recovery_execution.h:87:5: note: candidate: mbf_abstract_nav::AbstractRecoveryExecution::AbstractRecoveryExecution(const string&, const Ptr&, const mbf_utility::RobotInformation&, const mbf_abstract_nav::MoveBaseFlexConfig&)
AbstractRecoveryExecution(const std::string &name,
^~~~~~~~~~~~~~~~~~~~~~~~~
/media/kint/E06A82386A820B8A/mesh_nav_ws/src/move_base_flex/mbf_abstract_nav/include/mbf_abstract_nav/abstract_recovery_execution.h:87:5: note: no known conversion for argument 3 from ‘const TFPtr {aka const boost::shared_ptr<tf2_ros::Buffer>}’ to ‘const mbf_utility::RobotInformation&’
In file included from /media/kint/E06A82386A820B8A/mesh_nav_ws/src/mesh_navigation/mbf_mesh_nav/include/mbf_mesh_nav/mesh_controller_execution.h:41:0,
from /media/kint/E06A82386A820B8A/mesh_nav_ws/src/mesh_navigation/mbf_mesh_nav/src/mesh_controller_execution.cpp:37:
/media/kint/E06A82386A820B8A/mesh_nav_ws/src/move_base_flex/mbf_abstract_nav/include/mbf_abstract_nav/abstract_controller_execution.h:91:5: note: candidate: mbf_abstract_nav::AbstractControllerExecution::AbstractControllerExecution(const string&, const Ptr&, const mbf_utility::RobotInformation&, const ros::Publisher&, const ros::Publisher&, const mbf_abstract_nav::MoveBaseFlexConfig&)
AbstractControllerExecution(
^~~~~~~~~~~~~~~~~~~~~~~~~~~
/media/kint/E06A82386A820B8A/mesh_nav_ws/src/move_base_flex/mbf_abstract_nav/include/mbf_abstract_nav/abstract_controller_execution.h:91:5: note: no known conversion for argument 3 from ‘const ros::Publisher’ to ‘const mbf_utility::RobotInformation&’
/media/kint/E06A82386A820B8A/mesh_nav_ws/src/mesh_navigation/mbf_mesh_nav/src/mesh_planner_execution.cpp: In constructor ‘mbf_mesh_nav::MeshPlannerExecution::MeshPlannerExecution(std::_cxx11::string, const Ptr&, const MeshPtr&, const mbf_mesh_nav::MoveBaseFlexConfig&)’:
/media/kint/E06A82386A820B8A/mesh_nav_ws/src/mesh_navigation/mbf_mesh_nav/src/mesh_planner_execution.cpp:43:88: error: no matching function for call to ‘mbf_abstract_nav::AbstractPlannerExecution::AbstractPlannerExecution(const string&, const Ptr&, mbf_abstract_nav::MoveBaseFlexConfig)’
: AbstractPlannerExecution(name, planner_ptr, toAbstract(config)), mesh_ptr
(mesh_ptr)
^
In file included from /media/kint/E06A82386A820B8A/mesh_nav_ws/src/mesh_navigation/mbf_mesh_nav/include/mbf_mesh_nav/mesh_planner_execution.h:41:0,
from /media/kint/E06A82386A820B8A/mesh_nav_ws/src/mesh_navigation/mbf_mesh_nav/src/mesh_planner_execution.cpp:37:
/media/kint/E06A82386A820B8A/mesh_nav_ws/src/move_base_flex/mbf_abstract_nav/include/mbf_abstract_nav/abstract_planner_execution.h:88:5: note: candidate: mbf_abstract_nav::AbstractPlannerExecution::AbstractPlannerExecution(const string&, const Ptr&, const mbf_utility::RobotInformation&, const mbf_abstract_nav::MoveBaseFlexConfig&)
AbstractPlannerExecution(const std::string& name,
^~~~~~~~~~~~~~~~~~~~~~~~
/media/kint/E06A82386A820B8A/mesh_nav_ws/src/move_base_flex/mbf_abstract_nav/include/mbf_abstract_nav/abstract_planner_execution.h:88:5: note: candidate expects 4 arguments, 3 provided
mesh_navigation/mbf_mesh_nav/CMakeFiles/mbf_mesh_server.dir/build.make:134: recipe for target 'mesh_navigation/mbf_mesh_nav/CMakeFiles/mbf_mesh_server.dir/src/mesh_recovery_execution.cpp.o' failed
make[2]: *** [mesh_navigation/mbf_mesh_nav/CMakeFiles/mbf_mesh_server.dir/src/mesh_recovery_execution.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
mesh_navigation/mbf_mesh_nav/CMakeFiles/mbf_mesh_server.dir/build.make:62: recipe for target 'mesh_navigation/mbf_mesh_nav/CMakeFiles/mbf_mesh_server.dir/src/mesh_controller_execution.cpp.o' failed
make[2]: *** [mesh_navigation/mbf_mesh_nav/CMakeFiles/mbf_mesh_server.dir/src/mesh_controller_execution.cpp.o] Error 1
mesh_navigation/mbf_mesh_nav/CMakeFiles/mbf_mesh_server.dir/build.make:110: recipe for target 'mesh_navigation/mbf_mesh_nav/CMakeFiles/mbf_mesh_server.dir/src/mesh_planner_execution.cpp.o' failed
make[2]: *** [mesh_navigation/mbf_mesh_nav/CMakeFiles/mbf_mesh_server.dir/src/mesh_planner_execution.cpp.o] Error 1
CMakeFiles/Makefile2:8638: recipe for target 'mesh_navigation/mbf_mesh_nav/CMakeFiles/mbf_mesh_server.dir/all' failed
make[1]: *** [mesh_navigation/mbf_mesh_nav/CMakeFiles/mbf_mesh_server.dir/all] Error 2
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2
Invoking "make -j4" failed

How to run mesh navigation?

Thank you for your awesome work.

Could you please provide a tutorial on how to set up this whole system, I cannot get the simulation running like demos.

demo

Conflict with libpcl-dev and ros-noetic-desktop-full

The ros-noetic-mesh-navigation package seems to be conflicting with libpcl-dev and therefore ros-noetic-desktop-full. It needs libvtk6-dev and libvtk6-qt-dev, which are in conflict with libvtk7-dev and libvtk7-qt-dev needed by libpcl-dev.

Can ros-noetic-mesh-navigation be migrated to libvtk7-dev to resolve the conflict?

I encountered some tough problems when compiling this program , and I don't know how to deal with them.

here are the errors:
/home/ly/pluto_ws/src/mesh_navigation-master/mbf_mesh_nav/src/mesh_navigation_server.cpp:56:54: error: no matching function for call to ‘mesh_map::MeshMap::MeshMap(tf::TransformListener&)’
, mesh_ptr_(new mesh_map::MeshMap(*tf_listener_ptr_))
/home/ly/pluto_ws/src/mesh_navigation-master/mbf_mesh_nav/src/mesh_navigation_server.cpp:175:68: error: no matching function for call to ‘mbf_mesh_core::MeshController::initialize(const string&, const TFPtr&, mbf_mesh_nav::MeshNavigationServer::MeshPtr&)’
/home/ly/pluto_ws/src/mesh_navigation-master/mbf_mesh_nav/src/mesh_navigation_server.cpp:219:57: error: no matching function for call to ‘mbf_mesh_core::MeshRecovery::initialize(const string&, const TFPtr&, mbf_mesh_nav::MeshNavigationServer::MeshPtr&)’
behavior->initialize(name, tf_listener_ptr_, mesh_ptr_);

Cannot locate node after launching mbf_mesh_nav

Hi!

I'm trying to launch the mesh navigation based on the pluto_robot examples, but I get the following error after launching the mbf_mesh_nav node from the mbf_mesh_nav package:

ERROR: cannot launch node of type [mbf_mesh_nav/mbf_mesh_nav]: Cannot locate node of type [mbf_mesh_nav] in package [mbf_mesh_nav]. Make sure file exists in package path and permission is set to executable (chmod +x)

I built the packages from source on ubuntu 20.04 with ROS noetic and I'am using the master branch of move_base_flex and the develop branch of mesh navigation, since that appeared to be the only combination that compiled without error.

Planner Error: No containing face found

I am attempting to run the Gazebo examples from pluto_robot. Often the planner fails with the error No containing face found!. Reading the code, it appears that the planner failed to find mesh faces corresponding to the start and/or end poses. I've tested this on several of the provided maps and with different goal points. Please advise.

[INFO] [1702072602.467662, 691.029000]: Received goal pose: (0.9734933376312256, -4.317339897155762, -0.5385943651199341)
[INFO] [1702072602.473417, 691.037000]: State machine transitioning 'WAIT_FOR_GOAL':'received_goal'-->'PLANNING'
[INFO] [1702072602.483601, 691.044000]: State machine starting in initial state 'GET_PATH' with userdata: 
	['recovery_behavior', 'target_pose', 'message', 'outcome', 'path', 'cost']
[INFO] [1702072602.487732, 691.050000]: planner goal cb
[ INFO] [1702072602.500331118, 691.062000000]: start wave front propagation.
[ERROR] [1702072602.500858221, 691.062000000]: No containing face found!
[ INFO] [1702072602.506741922, 691.066000000]: Path length: 0m
[ WARN] [1702072602.856921376, 691.328000000]: Found 411 non manifold vertices!
[ INFO] [1702072602.857078815, 691.328000000]: Found 0 complete vector faces!
[ INFO] [1702072602.857346762, 691.328000000]: Published vector field "vector_field" with 0 elements.
[ INFO] [1702072602.857604379, 691.328000000]: start wave front propagation.
[ERROR] [1702072602.858191347, 691.328000000]: No containing face found!
[ INFO] [1702072602.866853047, 691.334000000]: Path length: 0m
[ WARN] [1702072603.248864786, 691.599000000]: Found 411 non manifold vertices!
[ INFO] [1702072603.249047241, 691.599000000]: Found 0 complete vector faces!
[ INFO] [1702072603.249243663, 691.600000000]: Published vector field "vector_field" with 0 elements.
[ INFO] [1702072603.249465616, 691.600000000]: start wave front propagation.
[ERROR] [1702072603.250126136, 691.600000000]: No containing face found!
[ INFO] [1702072603.258246424, 691.605000000]: Path length: 0m
[ WARN] [1702072603.761843955, 691.949000000]: Found 411 non manifold vertices!
[ INFO] [1702072603.761945695, 691.949000000]: Found 0 complete vector faces!
[ INFO] [1702072603.762078182, 691.949000000]: Published vector field "vector_field" with 0 elements.
[ INFO] [1702072603.762200958, 691.949000000]: Planning reached max retries! (2)
[INFO] [1702072603.765055, 691.950000]: Set recovery behavior to clear_costmap
[INFO] [1702072603.771639, 691.953000]: State machine terminating 'GET_PATH':'aborted':'aborted'
[INFO] [1702072603.784362, 691.962000]: State machine transitioning 'PLANNING':'aborted'-->'WAIT_FOR_GOAL'
[INFO] [1702072603.798477, 691.969000]: Waiting for a goal...

Dynamic Obstacle Avoidance

Can mesh navigation plan around dynamic obstacles? Is there some sort of local planner? Or should one from move_base_flex be used?

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.