0
$\begingroup$

Rosanswers logo

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.


Originally posted by prince on ROS Answers with karma: 660 on 2012-03-26

Post score: 0


Original comments

Comment by prince on 2012-04-08:
any ideas?

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

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.


Originally posted by bhaskara with karma: 1479 on 2012-03-26

This answer was ACCEPTED on the original site

Post score: 0


Original comments

Comment by prince on 2012-03-26:
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?

Comment by bhaskara on 2012-03-29:
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.

Comment by prince on 2012-03-29:
I can get that for most of nodes. Some of them do not report which i believe could be because of slow machine.

Comment by prince on 2012-04-03:
Hi bhaskara, I tried pushing the topological roadmap node using move_base_topo action but no success. I edited original question to include observations.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.