Ask Your Question

How to use irobot create in gazebo with ROS hydro?

asked 2014-02-08 10:02:30 -0500

INait gravatar image

updated 2014-02-08 10:09:13 -0500

As I could see the ROS hydro version has the packages for irobot create: ros-hydro-create-dashboard ros-hydro-create-description ros-hydro-create-driver ros-hydro-create-gazebo-plugins ros-hydro-create-node

But I couldn't manage to find a tutorial of how to run Create in gazebo simulator.

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2014-03-18 11:56:46 -0500

Saurav Agarwal gravatar image

updated 2016-07-08 18:13:45 -0500

130s gravatar image

You can download the modified sdf file for the iRobot create from my website

I've not been able to find any clear examples on how to achieve this. I'm detailing here as far I got. As I make more progress, I will update my answer and hopefully be helpful to other users.

I'm starting with the very basics, so please bear with me.

Steps :

  1. Follow the ROS instruction guidelines for Hydro [follow ]
  2. Setup your catkin workspace (again instructions in ROS wiki)
  3. Download and install standalone gazebo. Instructions here for the ROS compatible version 1.9
  4. Start here for tutorials on working with ROS and Gazebo. Complete all the tutorials
  5. Download the IRobot Create SDF from the online repo. It is possible to download the entire library of models from
  6. Put the "create" folder from the downloaded models into your ~/catkin_ws/src/ directory
  7. Insert the differential drive plugin into the model-1_4.sdf file. Some changes had to be made to suit the create sdf. The plugin info can be found in the gazeo ros integration tutorials at . I am unable to paste the modified xml markup or attach it. So email me at for the file.

Assuming you completed all the steps above, here are the instructions to control the icreate with velocity commands from terminal:

  1. From the terminal launch roscore. $roscore
  2. Launch gazebo with an empty world. $roslaunch gazebo_ros empty_world.launch
  3. In another terminal, spawn the create into the gazebo instance. Change directory to your create model. Then: $rosrun gazebo_ros spawn_model -file ~/catkin_ws/src/create/model-1_4.sdf -sdf -model create
  4. Then send commands to make the robot move. $rostopic pub /cmd_vel geometry_msgs/Twist -- '[1.0, 0.0, 0.0]' '[0.0, 0.0, 1]'

To send motion commands to the Create from code, write a publisher that advertises a geometry_msgs::Twist message with the velocity commands to "/cmd_vel" topic. Instructions on writing a publisher are here:

#include "ros/ros.h"
#include <math.h>
#include "geometry_msgs/Twist.h"
#include "std_msgs/String.h"

 * This tutorial demonstrates simple sending of velocity commands to the IRobot Create in Gazebo.
int main(int argc, char **argv)

  ros::init(argc, argv, "CreateController");

  ros::NodeHandle n;

  ros::Publisher vel_pub = n.advertise<geometry_msgs::Twist>("/cmd_vel", 1);

  ros::Rate loop_rate(5);

  int count = 0;

  while (ros::ok())
    geometry_msgs::Twist cmd_vel;

    cmd_vel.linear.x = 0.5;
    cmd_vel.linear.y = 0;
    cmd_vel.linear.z = 0;
    cmd_vel.angular.x = 0;
    cmd_vel.angular.y = 0;
    cmd_vel.angular.z = 0.4*sin(count);





  return 0;
edit flag offensive delete link more


Huge thanks! That's what I've been searching for!

INait gravatar image INait  ( 2014-04-01 07:28:57 -0500 )edit

glad to be of help!

Saurav Agarwal gravatar image Saurav Agarwal  ( 2014-04-01 08:32:16 -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: 2014-02-08 10:02:30 -0500

Seen: 2,097 times

Last updated: Jul 08 '16