Getting Started

What’s In Box

The Fetch and Freight Research Edition robots each ship in reusable ATA cases. Inside each case you will find the robot, toolkit, and power supply for charging the robot.

Fetch and Freight

Please watch the video below for unpacking Fetch or Freight. The video covers unpacking the robot, connecting the batteries, turning on the robot, and driving the robot via the provided joystick.

Toolkit

The toolkit contains the tools, accessories, and fasteners needed to use the Fetch and Freight. The picture below shows packaged toolkit.

_images/toolkit_in_box.png

Inside the toolkit box you will find:

_images/toolkit_numbering.png

Item #

Item Name

QTY

Purpose

1

Metric Hex Key Set

1

For removing screws and attaching accessories

2

Right Angle USB Connector

1

To prevent USB connector damage while driving

3

Wireless Joystick

1

For teleoperating the robot

4

USB Cable

1

For charging the wireless joystick

5

Finger Tip Covers

4

To replace damaged finger tips

6

M5x10mm SHCS

4

For attaching accessories to the base mount points

7

M4x10mm SHCS

4

For attaching accessories to the head mount points

8

M3x14mm Standoffs

4

For attaching accessories to the gripper

9

3ft Ethernet Cable

1

For connecting the robot to the network

10

Fetch Robotics Stickers

5

For your laptop :)

11

Mircofiber Lens Cloth

1

For cleaning optics of the robot

Robot Power Supply

The robot power supply is shown below in the packaging:

_images/charger.JPG

The robot plug end is shown below, when removing the charge plug from the robot always grab the plug by the housing and not the cable.

_images/charge_plug.png

Warning

Pulling on the charge plug cable instead of the handle can cause damage to the cable assembly over time and could potentially cause injury to the robot or user.

Running Fetch and Freight

Turning on Fetch and Freight

To turn on the robot, set the Power Disconnect Switch (the red one on the lower back of the robot) to the ON position and then press the power switch on the access panel until it lights up.

Logging In

Once the robot is turned on and the robot is on the network, ssh into the computer of the robot using the default fetch user account:

>$ ssh fetch@<robot_name_or_ip>

robot_name_or_ip will be either an IPv4 network address, or a network name, depending on the configuration of your local network. If your computer and network is setup for multicast DNS (mDNS) then you may be able to use fetchXYZ.local as the network name where XYZ will be the serial number of your robot (remove any leading zeros from the serial number).

Connecting a Monitor (Optional)

If you are unable to access the robot through ssh due to your network settings you will need to connect an HDMI monitor, USB keyboard and USB mouse to the side panel ports. Then use them to select your network from the networking menu, it looks like an empty quarter circle pointed downward when disconnected, in the upper right hand corner of the screen. Once it is set it should remain connected through all reboots.

Warning

Monitor cables that conform to HDMI specifications will fit the robot’s monitor port. But some cheaper cables have overmolding that is too large given the spec and may not seat properly. Please ensure the HDMI cable you are using is the correct size.

Note

If you are still having difficulty connecting to your robot you will need to contact your network administrator for specific instructions on how to connect the robot to your network.

Once connected then create your user account as shown below.

Default User Account

Each robot ships with a default user account, with username fetch and password robotics. It is recommended to change the password when setting up the robot.

Creating User Accounts

It is recommended that each user create their own account on the robot, especially when developing from source. To create an account on the robot, ssh into the robot as the fetch user, and run the following commands:

> sudo adduser USERNAME
> sudo usermod -G adm,cdrom,sudo,dip,plugdev,lpadmin,sambashare USERNAME

Tucking Fetch’s Arm

Note

The tuck arm server is a new feature released in fetch_teleop and fetch_bringup 0.6.0. The deadman became required in fetch_teleop 0.7.0.

To tuck the arm, press and hold button 6, as shown in the image of the controller below, for one second. This will trigger the tuck_arm server to tuck the arm. While tucking the arm, Fetch will avoid collisions with itself, however it will not be using any active perception, so be sure to keep the space in front of the robot clear when running the tuck arm. While the arm is tucking, you will have to hold the deadman. Releasing the deadman will stop the tucking action.

Driving Fetch and Freight with a Joystick

Each Fetch and Freight ship with a robot joystick. Whenever the robot drivers are running, so is joystick teleop. The joystick is capable of controlling the movement of the robot base, torso, head and gripper.

Warning

Fetch robots use wireless controllers. As with any wireless technology, maximum range between controller and robot can vary depending on environment. You should experiment with your robot to understand the distance limit at which you can safely control your robot.

Note

If you are using the older PS3 controller a different version of this tutorial can be found here.

Note

To switch your robot to use a PS4 controller instead of a PS3 controller, see the instructions here.

_images/ps4_numbered.png
_images/ps4_numbered2.png

Button #

Function (details below)

0

Open gripper

1

Control robot turning

2

Control forward/backward driving

3

Close gripper

4

Disable motor position holding

5

Not used

6

Arm tuck

7

Not used

8

Head control deadman

9

Linear arm (“tooltip”) control

10

Primary deadman

11

Angular arm (“tooltip”) control

12

Torso up

13

Not used

14

Torso down

15

Not used

16

Pair/unpair with robot

To pair the controller with the robot, press the middle button (16) once the robot has powered on. The controller will vibrate once successful. To unpair, hold the button for 10 s. The LED indicator on top will turn off.

To drive the robot base, hold the primary deadman button (button 10 above) and use the two joysticks. The left joystick controls turning velocity while the right joystick controls forward velocity.

Warning

Whenever driving the robot, always lower the torso and tuck the arm to avoid potentially unstable operation.

To control the head, release the primary deadman and hold the head deadman (button 8). The left joystick now controls head pan while the right joystick controls head tilt.

To move the torso up, hold the primary deadman and press the triangle button (12). To move the torso down, hold the primary deadman and press the X (14).

To close the gripper, hold the primary deadman and press the close button (3). To open, hold the primary deadman and press the open button (0).

The Fetch arm/gripper can be teleoped by combining several inputs:

  • Linear motion of the end effector: Primary deadman + Button 9 + joystick input

  • Angular motion of the end effector: Primary deadman + Button 11 + joystick input

Some controllers, such as the arm and head controllers, will attempt to hold position indefinitely. Sometimes this is not desired. Holding button (4) for 1 second will stop all controllers except the base controller and the arm gravity compensation.

Moving the Base with your Keyboard

Note

You will need a computer with ROS installed to properly communicate with the robot. Please consult the ROS Wiki for more information. We strongly suggest an Ubuntu machine with ROS Melodic installed.

To teleoperate the robot base in simulation, we recommend using the teleop_twist_keyboard.py script from teleop_twist_keyboard package.

>$ export ROS_MASTER_URI=http://<robot_name_or_ip>:11311
>$ rosrun teleop_twist_keyboard teleop_twist_keyboard.py

Visualizing Data

>$ export ROS_MASTER_URI=http://<robot_name_or_ip>:11311
>$ rosrun rviz rviz
_images/rviz.png

Note

You will need a computer with ROS installed to properly communicate with the robot. Please consult the ROS Wiki for more information. We strongly suggest an Ubuntu machine with ROS Melodic installed.

You can now manually set up your RVIZ visualization or re-run RVIZ with a configuration file using the command line. The default .rviz configuration file for Fetch can be loaded using:

>$ roscd fetch_navigation/config
>$ export ROS_MASTER_URI=http://<robot_name_or_ip>:11311
>$ rviz -d navigation.rviz
_images/rviz_navigation.png

Using the Runtime Monitor

Fetch and Freight publish ROS diagnostics messages. These are human-readable messages that inform users of the robot system state. The runtime_monitor, part of rqt_robot_plugins can be used to view diagnostics from your desktop computer:

>$ export ROS_MASTER_URI=http://<robot_name_or_ip>:11311
>$ rosrun rqt_runtime_monitor rqt_runtime_monitor
_images/rqt_runtime_monitor.png

The runtime monitor will have one entry per motor controller board (MCB), as well as one entry per breaker. Each of these entries will be classified as either stale, an error, a warning, or OK. In the above image, the supply_breaker is disabled because the robot is not plugged in – this is only a warning, and not actually an issue.

Common errors that can be detected are overly hot motors or breakers, breakers that have tripped. When the runstop on Fetch is pressed, a number of breakers become disabled and the motor controller boards are turned off, causing them to go stale. The below image shows what a runstopped Fetch might look like:

_images/rqt_runtime_monitor_runstopped.png

Putting Fetch and Freight Away

Before turning the robot off, it is recommended that you tuck the arm. When power is shut off, the arm will want to slowly fall and will be more difficult to backdrive when in the off configuration.

To turn the robot off, press and hold the illuminated power button on the access panel until it starts blinking. The power button will continue blinking until the computer has successfully shut down, and then power will be disconnected.