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

I've done exactly what you're asking for:

image description

So I'll briefly describe what you can do. Building on what spmaniato said, you can use three core components:

  1. The Navigation Stack (specifically the move_base node): The move_base node lets you specify a move goal in any reference frame that the robot will then attempt to reach. The move_base node uses a local and global costmap, and it will generally throw an error if you issue a move goal that is outside either of these maps or is otherwise impossible to reach (because it is inside an obstacle for example). You can also specify a desired heading. However, the move_base node won't give you any feedback on how close you are to a goal or when you've reached it which is why you can use...
  2. The actionlib package Which implements a action client-server system that allows you to issue commands and get feedback on their state such as "SUCCEEDED" or "ACTIVE". move_base actually provides a basic implementation for an action server, and simple move goal commands. So all you need to do is write an action client which can be...
  3. A custom ROS node written by you This node needs to read your .txt or .csv file, issue a command, check the status and issue a new one all within a 'for' or 'while' loop. This node will act as the client half of the actionlib package. When writing this node I suggest you start with this tutorial. If you're coding in C++ you can copy and paste code. If you're coding in Python there isn't an equivalent tutorial unfortunately, but I can help you out. I think there is also some questions on ros.answers somewhere that also show you how to do the same thing in python.

This should give you an idea of which ROS packages to start looking at. I'm a bit pressed for time, hence the short explanation. But if you have any issues just ask and I can go into more detail and provide some of the code I used.

I've done exactly what you're asking for:

image description

So I'll briefly describe what you can do. Building on what spmaniato said, you can use three core components:

  1. The Navigation Stack (specifically the move_base node): The move_base node lets you specify a move goal in any reference frame that the robot will then attempt to reach. The move_base node uses a local and global costmap, and it will generally throw an error if you issue a move goal that is outside either of these maps or is otherwise impossible to reach (because it is inside an obstacle for example). You can also specify a desired heading. However, the move_base node won't give you any feedback on how close you are to a goal or when you've reached it which is why you can use...
  2. The actionlib package Which implements a action client-server system that allows you to issue commands and get feedback on their state such as "SUCCEEDED" or "ACTIVE". move_base actually provides a basic implementation for an action server, and simple move goal commands. So all you need to do is write an action client which can be...
  3. A custom ROS node written by you This node needs to read your .txt or .csv file, issue a command, check the status and issue a new one all within a 'for' or 'while' loop. This node will act as the client half of the actionlib package. When writing this node I suggest you start with this tutorial. If you're coding in C++ you can copy and paste code. If you're coding in Python there isn't an equivalent tutorial unfortunately, but I can help you out. I think there is also some questions on ros.answers somewhere that also show you how to do the same thing in python.

This should give you an idea of which ROS packages to start looking at. I'm a bit pressed for time, hence the short explanation. But if you have any issues just ask and I can go into more detail and provide some of the code I used.used.

[EDIT:] If you want to skip the actionlib stuff and do all the checking/feedback stuff yourself you can issue a move_base_msg to the /move_base/goal topic directly.

I've done exactly what you're asking for:

image description

So I'll briefly describe what you can do. Building on what spmaniato said, you can use three core components:

  1. The Navigation Stack (specifically the move_base node): The move_base node lets you specify a move goal in any reference frame that the robot will then attempt to reach. The move_base node uses a local and global costmap, and it will generally throw an error if you issue a move goal that is outside either of these maps or is otherwise impossible to reach (because it is inside an obstacle for example). You can also specify a desired heading. However, the move_base node won't give you any feedback on how close you are to a goal or when you've reached it which is why you can use...
  2. The actionlib package Which implements a action client-server system that allows you to issue commands and get feedback on their state such as "SUCCEEDED" or "ACTIVE". move_base actually provides a basic implementation for an action server, and simple move goal commands. So all you need to do is write an action client which can be...
  3. A custom ROS node written by you This node needs to read your .txt or .csv file, issue a command, check the status and issue a new one all within a 'for' or 'while' loop. This node will act as the client half of the actionlib package. When writing this node I suggest you start with this tutorial. If you're coding in C++ you can copy and paste code. If you're coding in Python there isn't an equivalent tutorial unfortunately, but I can help you out. I think there is also some questions on ros.answers somewhere that also show you how to do the same thing in python.

This should give you an idea of which ROS packages to start looking at. I'm a bit pressed for time, hence the short explanation. But if you have any issues just ask and I can go into more detail and provide some of the code I used.

[EDIT:] If you want to skip the actionlib stuff and do all the checking/feedback stuff yourself you can issue a move_base_msg to the /move_base/goal topic directly.directly. Also, if your move goals are quite far away from the robot (more than 10 m) there are some specific changes you may want to make to the navigation stack to make it accurate over longer distances (again, I can go into greater detail if you ask me to)

I've done exactly what you're asking for:

image description

So I'll briefly describe what you can do. Building on what spmaniato said, you can use three core components:

  1. The Navigation Stack (specifically the move_base node): The move_base node lets you specify a move goal in any reference frame that the robot will then attempt to reach. The move_base node uses a local and global costmap, and it will generally throw an error if you issue a move goal that is outside either of these maps or is otherwise impossible to reach (because it is inside an obstacle for example). You can also specify a desired heading. However, the move_base node won't give you any feedback on how close you are to a goal or when you've reached it which is why you can use...
  2. The actionlib package Which implements a action client-server system that allows you to issue commands and get feedback on their state such as "SUCCEEDED" or "ACTIVE". move_base actually provides a basic implementation for an action server, and simple move goal commands. So all you need to do is write an action client which can be...
  3. A custom ROS node written by you This node needs to read your .txt or .csv file, issue a command, check the status and issue a new one all within a 'for' or 'while' loop. This node will act as the client half of the actionlib package. When writing this node I suggest you start with this tutorial. If you're coding in C++ you can copy and paste code. If you're coding in Python there isn't an equivalent tutorial unfortunately, but I can help you out. there is another ROS answers question that provides some python code do this here. I think there is also some questions on ros.answers somewhere that also show you how to do the same thing in python.

This should give you an idea of which ROS packages to start looking at. I'm a bit pressed for time, hence the short explanation. But if you have any issues just ask and I can go into more detail and provide some of the code I used.

[EDIT:] If you want to skip the actionlib stuff and do all the checking/feedback stuff yourself you can issue a move_base_msg to the /move_base/goal topic directly. Also, if your move goals are quite far away from the robot (more than 10 m) there are some specific changes you may want to make to the navigation stack to make it accurate over longer distances (again, I can go into greater detail if you ask me to)