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

Hey murdock,

I think we should clarify a few things: the planner itself (and in general the complete navigation stack) cannot and is not intended to be integrated into Gazebo.

We need to separate between:

  • robot low-level interface (driver/controllers/hardware/...)
  • robot model (URDF)
  • local planner

The former usually takes velocity commands (and for car-like robots often a steering angel) as controllable input. The robot low-level driver (talking about a real robot) now controls your robot according to this input (open-loop/closed-loop control) by e.g. generating torques at each wheel. A URDF file describes the kinematic structure and metrics of your robot such that we can apply transformations between important parts (laser-scanner, wheels etc.). The local planer generates a trajectory (w.r.t. a global plan, robot constraints and the changing environment) and provides the velocity profile for the robot-low-level interface. The robot interface and the local planner should be created completely independent of each other.

Now, if I got it right, you want to create a simulation model for your car-like robot. But this part should be completely independent of the chosen planner! You just replace your real robot with a model and provide the same low-level interface that accepts velocity commands. Here comes the tricky part, you must not only define the visual (and maybe dynamic) model of the robot, you also have to implement/simulate the controllers (open-loop or closed-loop) which move the robot according to the incoming velocity commands. For your car-like robot you might even control the steering angle of the front wheels. There are some controller plugins that can be integrated into gazebo (I am not a gazebo expert!).

In summary, I think you should first create your gazebo model without trying any planner. For testing your Gazebo model I suggest to command some pre-defiend velocity sequences for which you already know the movement. If you have the real car-like robot, the best approach would obviously be to record some demonstrations in order to verify your model later. Then if you have a working model, you can start with the configuring the planner (e.g. by the Tutorials and the teb_local_planner_tutorials package. According to the quote you added: I provide only stage navigation configurations since they do not have a lot of heavy dependencies and they are easily customizable. And I think it's enough to just demonstrate how working planner configurations can look like. With

easily extendable and integrable

I do not mean the creation but the inclusion of working gazebo models resp. URDF files. E.g., you can replace the stage node from the launch file with a gazebo configuration accepting the same control inputs (subscribing to cmd_vel topic, or if you check the car-like tutorial by adding a ackermann_msgs converter). Also adding a working URDF model just for visualization purposes is simple by just filling the robot_description parameter with the model url (see navigation tutorials).

Hope that helps.

Hey murdock,

I think we should clarify a few things: the planner itself (and in general the complete navigation stack) cannot and is not intended to be integrated into Gazebo.

We need to separate between:

  • robot low-level interface (driver/controllers/hardware/...)
  • robot model (URDF)
  • local planner

The former usually takes velocity commands (and for car-like robots often a steering angel) angle) as controllable input. The robot low-level driver (talking about a real robot) now controls your robot according to this input (open-loop/closed-loop control) by e.g. generating torques at each wheel. A URDF file describes the kinematic structure and metrics of your robot such that we can apply transformations between important parts (laser-scanner, wheels etc.). The local planer generates a trajectory (w.r.t. a global plan, robot constraints and the changing environment) and provides the velocity profile for the robot-low-level interface. The robot interface and the local planner should be created completely independent of each other.

Now, if I got it right, you want to create a simulation model for your car-like robot. But this part should be completely independent of the chosen planner! You just replace your real robot with a model and provide the same low-level interface that accepts velocity commands. Here comes the tricky part, you must not only define the visual (and maybe dynamic) model of the robot, you also have to implement/simulate the controllers (open-loop or closed-loop) which move the robot according to the incoming velocity commands. For your car-like robot you might even control the steering angle of the front wheels. There are some controller plugins that can be integrated into gazebo (I am not a gazebo expert!).

In summary, I think you should first create your gazebo model without trying any planner. For testing your Gazebo model I suggest to command some pre-defiend velocity sequences for which you already know the movement. If you have the real car-like robot, the best approach would obviously be to record some demonstrations in order to verify your model later. Then if you have a working model, you can start with the configuring the planner (e.g. by the Tutorials and the teb_local_planner_tutorials package. According to the quote you added: I provide only stage navigation configurations since they do not have a lot of heavy dependencies and they are easily customizable. And I think it's enough to just demonstrate how working planner configurations can look like. With

easily extendable and integrable

I do not mean the creation but the inclusion of working gazebo models resp. URDF files. E.g., you can replace the stage node from the launch file with a gazebo configuration accepting the same control inputs (subscribing to cmd_vel topic, or if you check the car-like tutorial by adding a ackermann_msgs converter). Also adding a working URDF model just for visualization purposes is simple by just filling the robot_description parameter with the model url (see navigation tutorials).

Hope that helps.

Hey murdock,

I think we should clarify a few things: the planner itself (and in general the complete navigation stack) cannot and is not intended to be integrated into Gazebo.

We need to separate between:

  • robot low-level interface (driver/controllers/hardware/...)
  • robot model (URDF)
  • local planner

The former usually takes velocity commands (and for car-like robots often a steering angle) as controllable input. The robot low-level driver (talking about a real robot) now controls your robot according to this input (open-loop/closed-loop control) by e.g. generating torques at each wheel. A URDF file describes the kinematic structure and metrics of your robot such that we can apply transformations between important parts (laser-scanner, wheels etc.). The local planer generates a trajectory (w.r.t. a global plan, robot constraints and the changing environment) and provides the velocity profile for the robot-low-level interface. The robot interface and the local planner should be created completely independent of each other.

Now, if I got it right, you want to create a simulation model for your car-like robot. But this part should be completely independent of the chosen planner! You just replace your real robot with a model and provide the same low-level interface that accepts velocity commands. Here comes the tricky part, you must not only define the visual (and maybe dynamic) model of the robot, you also have to implement/simulate the controllers (open-loop or closed-loop) closed-loop, numerical integration) which move the robot according to the incoming velocity commands. For your car-like robot you might even control the steering angle of the front wheels. There are some controller plugins that can be integrated into gazebo (I am not a gazebo expert!).

In summary, I think you should first create your gazebo model without trying any planner. For testing your Gazebo model I suggest to command some pre-defiend velocity sequences for which you already know the movement. If you have the real car-like robot, the best approach would obviously be to record some demonstrations in order to verify your model later. Then if you have a working model, you can start with the configuring the planner (e.g. by the Tutorials and the teb_local_planner_tutorials package. According to the quote you added: I provide only stage navigation configurations since they do not have a lot of heavy dependencies and they are easily customizable. And I think it's enough to just demonstrate how working planner configurations can look like. With

easily extendable and integrable

I do not mean the creation but the inclusion of working gazebo models resp. URDF files. E.g., you can replace the stage node from the launch file with a gazebo configuration accepting the same control inputs (subscribing to cmd_vel topic, or if you check the car-like tutorial by adding a ackermann_msgs converter). Also adding a working URDF model just for visualization purposes is simple by just filling the robot_description parameter with the model url (see navigation tutorials).

Hope that helps.

Hey murdock,

I think we should clarify a few things: the planner itself (and in general the complete navigation stack) cannot and is not intended to be integrated into Gazebo.

We need to separate between:

  • robot low-level interface (driver/controllers/hardware/...)
  • robot model (URDF)
  • local planner

The former usually takes velocity commands (and for car-like robots often a steering angle) as controllable input. The robot low-level driver (talking about a real robot) now controls your robot according to this input (open-loop/closed-loop control) by e.g. generating torques at each wheel. A URDF file describes the kinematic structure and metrics of your robot such that we can apply transformations between important parts (laser-scanner, wheels etc.). The local planer generates a trajectory (w.r.t. a global plan, robot constraints and the changing environment) and provides the velocity profile for the robot-low-level interface. The robot interface and the local planner should be created completely independent of each other.

Now, if I got it right, you want to create a simulation model for your car-like robot. But this part should be completely independent of the chosen planner! You just replace your real robot with a model and provide the same low-level interface that accepts velocity commands. Here comes the tricky part, you must not only define the visual (and maybe dynamic) model of the robot, you also have to implement/simulate the controllers (open-loop or closed-loop, numerical integration) which move the robot according to the incoming velocity commands. For your car-like robot you might even control the steering angle of the front wheels. There are some controller plugins that can be integrated into gazebo (I am not a gazebo expert!).

In summary, I think you should first create your gazebo model without trying any planner. For testing your Gazebo model I suggest to command some pre-defiend velocity sequences for which you already know the movement. If you have the real car-like robot, the best approach would obviously be to record some demonstrations in order to verify your model later. Then if you have a working model, you can start with the configuring the planner (e.g. by refer to the Tutorials and the teb_local_planner_tutorials package. package).

According to the quote you added: I provide only stage navigation configurations since they do not have a lot of heavy dependencies and they are easily customizable. And I think it's enough to just demonstrate how working planner configurations can look like. With

easily extendable and integrable

I do not mean the creation but the inclusion of working gazebo models resp. URDF files. E.g., you can replace the stage node from the launch file with a gazebo configuration accepting the same control inputs (subscribing to cmd_vel topic, or if you check the car-like tutorial by adding a ackermann_msgs converter). Also adding a working URDF model just for visualization purposes is simple by just filling the robot_description parameter with the model url (see navigation tutorials).

Hope that helps.