ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
1

How to use irobot create in gazebo with ROS hydro?

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

INait gravatar image

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

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
4

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

Saurav Agarwal gravatar image

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

130s gravatar image

You can download the modified sdf file for the iRobot create from my website http://sauravag.com/2015/02/how-to-us...

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 ros.org ]
  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 http://gazebosim.org/wiki/1.9/install
  4. Start here for tutorials on working with ROS and Gazebo. Complete all the tutorials http://gazebosim.org/wiki/Tutorials/1...
  5. Download the IRobot Create SDF from the online repo. It is possible to download the entire library of models from https://bitbucket.org/osrf/gazebo_models
  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 http://gazebosim.org/tutorials?tut=ro... . I am unable to paste the modified xml markup or attach it. So email me at sauravag@tamu.edu 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: http://wiki.ros.org/ROS/Tutorials/Wri...

#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);


    vel_pub.publish(cmd_vel);

    ros::spinOnce();

    loop_rate.sleep();

    ++count;
  }

  return 0;
}
edit flag offensive delete link more

Comments

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

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

glad to be of help!

Saurav Agarwal gravatar image Saurav Agarwal  ( 2014-04-01 08:32:16 -0600 )edit

Question Tools

3 followers

Stats

Asked: 2014-02-08 10:02:30 -0600

Seen: 2,377 times

Last updated: Jul 08 '16