create_autonomy repository

Repository Summary

Checkout URI https://github.com/AutonomyLab/create_autonomy.git
VCS Type git
VCS Version indigo-devel
Last Updated 2016-06-29
Dev Status DEVELOPED
Released UNRELEASED

Packages

Name Version
ca_description 1.0.1
ca_driver 1.0.1
ca_msgs 1.0.1
ca_tools 1.0.1
create_autonomy 1.0.1

README

create_autonomy

ROS driver for iRobot Create 1 and 2. This package wraps the C++ library libcreate, which uses iRobot's Open Interface Specification.

* ROS wiki page: http://wiki.ros.org/create_autonomy * Support: ROS Answers (tag: create_autonomy) * Author: Jacob Perron (Autonomy Lab, Simon Fraser University)

Build Status

TravisCI (Ubuntu Trusty, ROS Indigo and Jade)
Build Status

Supported Robots

Model Support
Create 1 Yes
Create 2 (firmware >= 3.2.6) Yes
Roomba Original Series No
Roomba 400 Series No
Roomba 500 Series Yes *
Roomba 600 Series Yes *
Roomba 700 Series Yes +
Roomba 800 Series Yes +
Roomba 900 Series No *

+ Verified by third-party.
* Not verified. Anyone who is able to verify that this driver works or not is encouraged to contact Jacob with their findings or open an issue.

Features

Feature Status
Odometry Available
Safe mode Planned #13
Clean demo Planned #14
Dock demo Available
Drive wheels N/A
Drive (v,w) Available
Brush motors Planned #15
LEDs Available
Digit LEDs Available
Sound Planned #5
Wheeldrop Available
Bumpers Available
Cliff sensor Planned #22
Dirt detect N/A
Omni IR sensor Available
Left IR sensor N/A
Right IR sensor N/A
Battery info Available
Light sensors Available
Diagnostics
Corrupt packets Planned
Physical tests Planned
Overcurrent info Planned

Install

Prerequisites

  • Internet connection
  • ROS Indigo or Jade
  • Ubuntu packages: python-rosdep, python-catkin-tools
$ sudo apt-get install python-rosdep python-catkin-tools

Compiling

  1. Create a catkin workspace
    $ mkdir -p create_ws/src  
    $ cd create_ws  
    $ catkin init  

  1. Clone this repo
    $ git clone https://github.com/AutonomyLab/create_autonomy.git  

  1. Install dependencies
    $ rosdep update  
    $ rosdep install --from-paths src -i  

  1. Build
    $ catkin build

USB Permissions

  1. In order to connect to Create over USB, ensure your user is in the dialout group
    $ sudo usermod -a -G dialout $USER

  1. Logout and login for permission to take effect

Running the driver

Setup

  1. After compiling from source, don't forget to source your workspace:
    $ source ~/create_ws/devel/setup.bash

  1. Connect computer to Create's 7-pin serial port

    • If using Create 1, ensure that nothing is connected to Create's DB-25 port
  2. Launch one of the existing launch files or adapt them to create your own.

Launch files

For Create 2 (Roomba 600 series):

$ roslaunch ca_driver create_2.launch [desc:=true] [publish_tf:=true]

For Create 1 (Roomba 400 series):

$ roslaunch ca_driver create_1.launch [publish_tf:=true]

desc determines if the robot description (URDF model and TF tree) is launched.
publish_tf detemines if the transform between the odometry frame (odom) and base frame (base_footprint) is published.

Parameters

Name Description Default
loop_hz Frequency of internal update loop 10.0
dev Serial port /dev/ttyUSB0
publish_tf Publish the transform between odom and base_footprint frames true
create_1 Is robot model Create 1 (Roomba 400 series)? false
latch_cmd_duration If this many seconds passes without receiving a velocity command the robot stops 0.2

Publishers

Topic Description Type
battery/capacity The estimated charge capacity of the robot's battery (Ah) std_msgs/Float32
battery/charge The current charge of the robot's battery (Ah) std_msgs/Float32
battery/charge_ratio Charge / capacity std_msgs/Float32
battery/charging_state The chargins state of the battery ca_msgs/ChargingState
battery/current Current flowing through the robot's battery (A). Positive current implies charging std_msgs/Float32
battery/temperature The temperature of the robot's battery (degrees Celsius) std_msgs/Int16
battery/voltage Voltage of the robot's battery (V) std_msgs/Float32
bumper Bumper state message (including light sensors on bumpers) ca_msgs/Bumper
clean_button 'clean' button is pressed ('play' button for Create 1) std_msgs/Empty
day_button 'day' button is pressed std_msgs/Empty
hour_button 'hour' button is pressed std_msgs/Empty
minute_button 'minute' button is pressed std_msgs/Empty
dock_button 'dock' button is pressed ('advance' button for Create 1) std_msgs/Empty
spot_button 'spot' button is pressed std_msgs/Empty
ir_omni The IR character currently being read by the omnidirectional receiver. Value 0 means no character is being received std_msgs/UInt16
joint_states The states (position, velocity) of the drive wheel joints sensor_msgs/JointState
mode The current mode of the robot (See OI Spec for details) ca_msgs/Mode
odom Robot odometry according to wheel encoders nav_msgs/Odometry
wheeldrop At least one of the drive wheels has dropped std_msgs/Empty
/tf The transform from the odom frame to base_footprint. Only if the parameter publish_tf is true tf2_msgs/TFMessage

Subscribers

Topic Description Type
cmd_vel Drives the robot's wheels according to a forward and angular velocity geometry_msgs/Twist
debris_led Enable / disable the blue 'debris' LED std_msgs/Bool
spot_led Enable / disable the 'spot' LED std_msgs/Bool
dock_led Enable / disable the 'dock' LED std_msgs/Bool
check_led Enable / disable the 'check robot` LED std_msgs/Bool
power_led Set the 'power' LED color and intensity. Accepts 1 or 2 bytes, the first represents the color between green (0) and red (255) and the second (optional) represents the intensity with brightest setting as default (255) std_msgs/UInt8MultiArray
set_ascii Sets the 4 digit LEDs. Accepts 1 to 4 bytes, each representing an ASCII character to be displayed from left to right std_msgs/UInt8MultiArray
dock Activates the demo docking behaviour. Robot enters Passive mode meaning the user loses control (See OI Spec) std_msgs/Empty
undock Switches robot to Full mode giving control back to the user std_msgs/Empty

Commanding your Create

You can move the robot around by sending geometry_msgs/Twist messages to the topic cmd_vel:

linear.x  (+)     Move forward (m/s)
          (-)     Move backward (m/s)
angular.z (+)     Rotate counter-clockwise (rad/s)
          (-)     Rotate clockwise (rad/s)

Velocity limits

-0.5 <= linear.x <= 0.5 and -4.25 <= angular.z <= 4.25

Teleoperation

ca_tools comes with a launch file for teleoperating Create with a joystick.

$ roslaunch ca_tools joy_teleop.launch [joy_config:=xbox360]

There exists configuration files for the Xbox 360 wired controller and the Logitech F710 controller. You can adapt these files for your preferred joystick configuration.

Contributions

Contributing to the development and maintenance of create_autonomy is encouraged. Feel free to open issues or create pull requests on GitHub.

Contributors

Repository Summary

Checkout URI https://github.com/AutonomyLab/create_autonomy.git
VCS Type git
VCS Version indigo-devel
Last Updated 2016-06-29
Dev Status DEVELOPED
Released UNRELEASED

Packages

Name Version
ca_description 1.0.1
ca_driver 1.0.1
ca_msgs 1.0.1
ca_tools 1.0.1
create_autonomy 1.0.1

README

create_autonomy

ROS driver for iRobot Create 1 and 2. This package wraps the C++ library libcreate, which uses iRobot's Open Interface Specification.

* ROS wiki page: http://wiki.ros.org/create_autonomy * Support: ROS Answers (tag: create_autonomy) * Author: Jacob Perron (Autonomy Lab, Simon Fraser University)

Build Status

TravisCI (Ubuntu Trusty, ROS Indigo and Jade)
Build Status

Supported Robots

Model Support
Create 1 Yes
Create 2 (firmware >= 3.2.6) Yes
Roomba Original Series No
Roomba 400 Series No
Roomba 500 Series Yes *
Roomba 600 Series Yes *
Roomba 700 Series Yes +
Roomba 800 Series Yes +
Roomba 900 Series No *

+ Verified by third-party.
* Not verified. Anyone who is able to verify that this driver works or not is encouraged to contact Jacob with their findings or open an issue.

Features

Feature Status
Odometry Available
Safe mode Planned #13
Clean demo Planned #14
Dock demo Available
Drive wheels N/A
Drive (v,w) Available
Brush motors Planned #15
LEDs Available
Digit LEDs Available
Sound Planned #5
Wheeldrop Available
Bumpers Available
Cliff sensor Planned #22
Dirt detect N/A
Omni IR sensor Available
Left IR sensor N/A
Right IR sensor N/A
Battery info Available
Light sensors Available
Diagnostics
Corrupt packets Planned
Physical tests Planned
Overcurrent info Planned

Install

Prerequisites

  • Internet connection
  • ROS Indigo or Jade
  • Ubuntu packages: python-rosdep, python-catkin-tools
$ sudo apt-get install python-rosdep python-catkin-tools

Compiling

  1. Create a catkin workspace
    $ mkdir -p create_ws/src  
    $ cd create_ws  
    $ catkin init  

  1. Clone this repo
    $ git clone https://github.com/AutonomyLab/create_autonomy.git  

  1. Install dependencies
    $ rosdep update  
    $ rosdep install --from-paths src -i  

  1. Build
    $ catkin build

USB Permissions

  1. In order to connect to Create over USB, ensure your user is in the dialout group
    $ sudo usermod -a -G dialout $USER

  1. Logout and login for permission to take effect

Running the driver

Setup

  1. After compiling from source, don't forget to source your workspace:
    $ source ~/create_ws/devel/setup.bash

  1. Connect computer to Create's 7-pin serial port

    • If using Create 1, ensure that nothing is connected to Create's DB-25 port
  2. Launch one of the existing launch files or adapt them to create your own.

Launch files

For Create 2 (Roomba 600 series):

$ roslaunch ca_driver create_2.launch [desc:=true] [publish_tf:=true]

For Create 1 (Roomba 400 series):

$ roslaunch ca_driver create_1.launch [publish_tf:=true]

desc determines if the robot description (URDF model and TF tree) is launched.
publish_tf detemines if the transform between the odometry frame (odom) and base frame (base_footprint) is published.

Parameters

Name Description Default
loop_hz Frequency of internal update loop 10.0
dev Serial port /dev/ttyUSB0
publish_tf Publish the transform between odom and base_footprint frames true
create_1 Is robot model Create 1 (Roomba 400 series)? false
latch_cmd_duration If this many seconds passes without receiving a velocity command the robot stops 0.2

Publishers

Topic Description Type
battery/capacity The estimated charge capacity of the robot's battery (Ah) std_msgs/Float32
battery/charge The current charge of the robot's battery (Ah) std_msgs/Float32
battery/charge_ratio Charge / capacity std_msgs/Float32
battery/charging_state The chargins state of the battery ca_msgs/ChargingState
battery/current Current flowing through the robot's battery (A). Positive current implies charging std_msgs/Float32
battery/temperature The temperature of the robot's battery (degrees Celsius) std_msgs/Int16
battery/voltage Voltage of the robot's battery (V) std_msgs/Float32
bumper Bumper state message (including light sensors on bumpers) ca_msgs/Bumper
clean_button 'clean' button is pressed ('play' button for Create 1) std_msgs/Empty
day_button 'day' button is pressed std_msgs/Empty
hour_button 'hour' button is pressed std_msgs/Empty
minute_button 'minute' button is pressed std_msgs/Empty
dock_button 'dock' button is pressed ('advance' button for Create 1) std_msgs/Empty
spot_button 'spot' button is pressed std_msgs/Empty
ir_omni The IR character currently being read by the omnidirectional receiver. Value 0 means no character is being received std_msgs/UInt16
joint_states The states (position, velocity) of the drive wheel joints sensor_msgs/JointState
mode The current mode of the robot (See OI Spec for details) ca_msgs/Mode
odom Robot odometry according to wheel encoders nav_msgs/Odometry
wheeldrop At least one of the drive wheels has dropped std_msgs/Empty
/tf The transform from the odom frame to base_footprint. Only if the parameter publish_tf is true tf2_msgs/TFMessage

Subscribers

Topic Description Type
cmd_vel Drives the robot's wheels according to a forward and angular velocity geometry_msgs/Twist
debris_led Enable / disable the blue 'debris' LED std_msgs/Bool
spot_led Enable / disable the 'spot' LED std_msgs/Bool
dock_led Enable / disable the 'dock' LED std_msgs/Bool
check_led Enable / disable the 'check robot` LED std_msgs/Bool
power_led Set the 'power' LED color and intensity. Accepts 1 or 2 bytes, the first represents the color between green (0) and red (255) and the second (optional) represents the intensity with brightest setting as default (255) std_msgs/UInt8MultiArray
set_ascii Sets the 4 digit LEDs. Accepts 1 to 4 bytes, each representing an ASCII character to be displayed from left to right std_msgs/UInt8MultiArray
dock Activates the demo docking behaviour. Robot enters Passive mode meaning the user loses control (See OI Spec) std_msgs/Empty
undock Switches robot to Full mode giving control back to the user std_msgs/Empty

Commanding your Create

You can move the robot around by sending geometry_msgs/Twist messages to the topic cmd_vel:

linear.x  (+)     Move forward (m/s)
          (-)     Move backward (m/s)
angular.z (+)     Rotate counter-clockwise (rad/s)
          (-)     Rotate clockwise (rad/s)

Velocity limits

-0.5 <= linear.x <= 0.5 and -4.25 <= angular.z <= 4.25

Teleoperation

ca_tools comes with a launch file for teleoperating Create with a joystick.

$ roslaunch ca_tools joy_teleop.launch [joy_config:=xbox360]

There exists configuration files for the Xbox 360 wired controller and the Logitech F710 controller. You can adapt these files for your preferred joystick configuration.

Contributions

Contributing to the development and maintenance of create_autonomy is encouraged. Feel free to open issues or create pull requests on GitHub.

Contributors