ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

You are actually right. The MakePlan() inside the nav_core::BaseGlobalPLanner is a virtual function which means that it expects the global planner plug in to override this function with its own MakePlan() function.

This is apparent if you look at the MakePlan() function in GlobalPlanner which is the default planner for ROS1: https://github.com/ros-planning/navigation/blob/2b807bd312fac1b476851800c84cb962559cbc53/global_planner/src/planner_core.cpp#L218

If you examine the plan you will notice that it returns std::vector<geometry_msgs::PoseStamped>& plan which is effectively a container of geometry_msgs::PoseStamped messages. PoseStamped messages contain headers, position and orientation information, http://docs.ros.org/en/noetic/api/geometry_msgs/html/msg/PoseStamped.html. The usual move_base/global_plan that is published is of type nav_msgs::Plan, http://docs.ros.org/en/melodic/api/nav_msgs/html/msg/Path.html, which are effectively these PoseStamped data arrows with a header. In layman terms, they are a bunch of arrows on the map which then constitute a global plan.

Therefore, to answer your question, as long as you are able to obtain a set of poses from the Isaac SDK you can package each pose into geometry_msgs::PoseStamped and and then further package all the poses of type geometry_msgs::PoseStamped into nav_msgs::Path. All other aspects of Move_base or even external packages will be able to work with the nav_msgs::Path data that you have published as the global plan. Cheers!