Ask Your Question

topological navigation plan only in local map

asked 2012-03-26 00:26:48 -0500

prince gravatar image

updated 2012-04-03 04:11:35 -0500

Hi, I had established topological_navigation stack on ROS diamondback and Ubuntu 10.04.

I start the task using following commands

$roscd topological_roadmap

$roslaunch launch/move_base_topo_stage.launch

I can visualize the map building process in RViz.

But planning works only in current local grid. Planner is not able to generate a path to any location outside current grid. This shall not happen as mentioned in paper ICRA2011_Konolige_Marder-Eppstein_Marthi

Any ideas what could be cause of problem??

Update 1 I had written following code to send MoveBaseTopoAction but it just keep on waiting for server to finish!


#include <sstream>
using namespace std;
int convert_char_2_int(char* st)
stringstream ss (stringstream::in | stringstream::out);
 int i;
 ss >> i;
 return i;

int main(int argc, char**argv)
 ros::init(argc, argv, "topo_goal_client_node");
 actionlib::SimpleActionClient<topological_nav_msgs::MoveBaseTopoAction> ac("topo_goal_client", true);
 int goal_id =-1;
 goal_id = convert_char_2_int(argv[1]);
 ROS_INFO(" goal id to send is %i ", goal_id);
 ROS_INFO("waiting for action server to finish");

 ROS_INFO("Action Server Started, sending goal");
 topological_nav_msgs::MoveBaseTopoGoal goal;
 goal.goal_node = goal_id;

 bool finished_before_timeout = ac.waitForResult(ros::Duration(60.0));
 if ( finished_before_timeout)
    actionlib::SimpleClientGoalState state= ac.getState();
    ROS_INFO("Action Finished %s", state.toString().c_str());
    ROS_INFO("Action did not finish before the timeout"); 

 return 0;

Corresponding output on terminal. Process do not die but just keep on waiting.

desktop:~/desired-topo-nav-location/topo_action_client$ rosrun topo_action_client topo_goal_client 105
[ INFO] [1333481238.721762269]:  goal id to send is 105 
[ INFO] [1333481238.721859866]: waiting for action server to finish

Did I missed something in client ??

Also ICRA2011 paper mention that, node nearest goal is selected itself. Then why do i need to send node id as goal?? How one will handle moving to anylocation in the environment ? i.e. moving from goal node id to actual location in grid.

edit retag flag offensive close merge delete


any ideas?

prince gravatar image prince  ( 2012-04-08 18:59:43 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2012-03-26 07:25:22 -0500

bhaskara gravatar image

How are you sending goals? The topological nav stack does not accept pose goals. Instead, you must send the integer id of the topological roadmap node, using the move_base_topo action.

edit flag offensive delete link more


I was sending goals using Rviz i.e. pose on topic /move_base_simple/goal. I was not aware of it. Is there anyway to visualize integer ids of topological roadmap so that I can select appropriate integer id?

prince gravatar image prince  ( 2012-03-26 16:53:16 -0500 )edit

If you use the 'select' tool in rviz to click on the nodes of the roadmap, each node will have a marker id. The node id equals the marker id modulo 1000.

bhaskara gravatar image bhaskara  ( 2012-03-29 05:42:44 -0500 )edit

I can get that for most of nodes. Some of them do not report which i believe could be because of slow machine.

prince gravatar image prince  ( 2012-03-29 08:15:35 -0500 )edit

Hi bhaskara, I tried pushing the topological roadmap node using move_base_topo action but no success. I edited original question to include observations.

prince gravatar image prince  ( 2012-04-03 06:57:04 -0500 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools


Asked: 2012-03-26 00:26:48 -0500

Seen: 310 times

Last updated: Apr 03 '12