Skip to content

Getting started

Emiliano Borghi edited this page Jun 20, 2020 · 14 revisions

create_autonomy

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

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 Available
Wheeldrop Available
Bumpers Available
Cliff sensor Available
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 N/A

Install

Prerequisites

  • ROS Melodic
  • Gazebo 9 or higher
  • Ubuntu packages: python-rosdep, python-catkin-tools, libqt4-dev
sudo apt-get install -y git python-rosdep python-catkin-tools libqt4-dev

Compiling

  1. Create a catkin workspace

    mkdir -p ~/create_ws/src
  2. Clone this repo

    cd ~/create_ws/src
    git clone https://github.com/RoboticaUtnFrba/create_autonomy.git
  3. Install dependencies

    I. Install RTIMULib

    cd ~/create_ws
    ./src/create_autonomy/sensors/ca_imu/scripts/install_rtimulib.sh

    II. Install other dependencies

    cd ~/create_ws
    sudo apt install -y python3-vcstool
    vcs import src < src/create_autonomy/<DEVICE>.repos
    rosdep update
    rosdep install --from-paths src -i
  4. Build workspace

    cd ~/create_ws
    catkin_make -DCMAKE_BUILD_TYPE=Release

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

  2. Launch one of the existing launch files or adapt them to create your own.

Launch files

For Create 2 (Roomba 600/700 series):

roslaunch ca_driver create_2.launch

Launch file arguments

  • config - Absolute path to a configuration file (YAML). Default: ca_driver/config/default.yaml
  • desc - Enable robot description (URDF/mesh). Default: true

For example, if you would like to disable the robot description and provide a custom configuration file:

roslaunch ca_driver create_2.launch config:=/abs/path/to/config.yaml desc:=false

Parameters

Name Description Default
dev Device path of robot /dev/ttyUSB0
base_frame The robot's base frame ID base_footprint
odom_frame The robot's odometry frame ID odom
latch_cmd_duration If this many seconds passes without receiving a velocity command the robot stops 0.2
loop_hz Frequency of internal update loop 10.0
publish_tf Publish the transform from odom_frame to base_frame true
robot_model The type of robot being controlled (supported values: ROOMBA_400, CREATE_1 and CREATE_2) CREATE_2
baud Serial baud rate Inferred based on robot model, but is overwritten upon providing a value

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
cliff 'cliff' sensors are pressed ca_msgs/Cliff
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
wall Wall is detected std_msgs/Bool
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
define_song Define a song with up to 16 notes. Each note is described by a MIDI note number and a float32 duration in seconds. The longest duration is 255/64 seconds. You can define up to 4 songs (See OI Spec) ca_msgs/DefineSong
play_song Play a predefined song ca_msgs/PlaySong

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

Clone this wiki locally