topological navigation plan only in local map
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<ros/ros.h>
#include<actionlib/client/simple_action_client.h>
#include<actionlib/client/terminal_state.h>
#include<topological_nav_msgs/MoveBaseTopoAction.h>
#include <sstream>
using namespace std;
int convert_char_2_int(char* st)
{
stringstream ss (stringstream::in | stringstream::out);
ss<<st;
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");
ac.waitForServer();
ROS_INFO("Action Server Started, sending goal");
topological_nav_msgs::MoveBaseTopoGoal goal;
goal.goal_node = goal_id;
ac.sendGoal(goal);
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());
}
else
{
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.
any ideas?