Skill Acquisition

Before programming a sequence of actions that lead to a complete assembly the user should acquire individual skills for the robot. These skills could be part picking, part placing, screw driving, etc. Skill acquisition can be performed kinesthetically by guiding the robot to the desired configurations or with a joystick interface. The ReconCell provides a Graphical User Interface (GUI) that facilitates these skill acquisitions. Acquiring a skill means making a new entry into the MongoDB database running in the ROS system.

Button Interface

To accelerate the process of robot skill acquisition we designed and built a custom made plastic cover for one of the robot’s joints (see image bellow). The cover houses two buttons and two switchers. The latter have an LED showing their status (in the picture below the switch with the label 1 is turned on). These buttons and switches are programmable and their functions differ depending on the skill acquisition process.

In the manual that follows we will refer to this picture and the labels for the buttons.

Buttons interface on the UR10Buttons interface on the UR10

Graphical User Interfaces for Skill Acquisition

In ReconCell there are two types of skill acquisitions: Single Point Acquisition and Whole Trajectory Acquisition. The first one consists of storing a single point (either joint or Cartesian space) to later on use for trajectory generation. The second one consists of acquiring a whole robot trajectory and playing it back later on in production.

Single Point Acquisition

This process and the accompanying GUI is used when acquiring single points in either joint or Cartesian space. These points are usually used to generate motions relative to them, which consequently make up for a skill.

Installation and Running Guide

This tool is part of the ReconCell ROS stack so no additional installations are required. To launch this tool simply execute the following command:

$ rosrun rqt_gui rqt_gui --standalone fc_gui

Once the GUI is launched the buttons and the switches from the Button Interface get assigned the following functionalities:

Button Function
Switch 1 Gravity compensation mode toggle
Switch 2 Lock or unlock the tool exchange system
Button A (blue) Mark the current robot configuration for saving
Button B (green) Toggle the air to the tool exchange system

GUI Overview

The GUI for Single Point Acquisition is shown in the figure below.

When the GUI is launched, it, as written above, assignes some functionalities to the custom made button interface. At this point, the user should position the robot into the desired configuration and press the Button A (blue). A signal will be sent to the GUI indicating it has saved the current robot configuration (both joint and Cartesian space) into a temporary buffer. The user should now decide if they want to save either the joint or Cartesian space configuration with the Joint or Cartesian space radio button. The final step is writing the name for the database entry in the Entry name field and pressing Save.

Overview of the Single Point Acquisition GUIOverview of the Single Point Acquisition GUI

Whole Trajectory Acquisition

This process and the accompanying GUI is used when acquiring full length trajectories in either joint or Cartesian space. The tool encodes the said trajectories into Dynamic Movement Primitives and saves them into the database.

Installation and Running Guide

This tool is part of the ReconCell ROS stack so no additional installations are required. To launch this tool simply execute the following command:

$ roslaunch dmp_record_tool dmp_record_gui.launch

Once the GUI is launched the buttons and the switches from the Button Interface get assigned the following functionalities:

Button Function
Switch 1 Gravity compensation mode toggle
Switch 2 Marks the start and end of the recorded trajecotry
Button A (blue) N/A
Button B (green) N/A

GUI Overview

The GUI for Whole Trajectory Acquisition is shown in the figure below.

When the GUI is launched it assignes some functionalities to the custom made button interface. This tool is meant to be used for recording whole trajectories during a kinesthetic demonstration. Before starting to move the robot, the user has to fill in the Topic selection field. This field should contain a string to a ROS topic of type sensor_msgs/JointState or geometry_msgs/PoseStamped.msg. If the type of the entered topic is adequate, the text will turn green, otherwise it will be red.

Once the text is green it means that the GUI has successfully subscribed to the topic. To record a trajectory, the user should first flip the switch 1 and activate the Gravity compensation mode. The user can now guide the robot kinesthetically. When the user is ready to record a trajectory, they should simply flip the switch 2. The light on the switch will turn on which means that the robot trajectory is being recorded. The user should then move the robot along the trajectory they want to record. When finished, flip the switch 2 back so the light is no longer on.

The trajectory is now saved in a buffer. The user should now type the name under which they want the trajectory to be saved in the databse in the DMP name field. The trajectory is saved in the database after pressing the Save to database button on the GUI.

Overview of the Whole Trajectory Acquisition GUIOverview of the Whole Trajectory Acquisition GUI

Robot Positioning

Kinesthetic Teaching

Traditional robot programming approaches require the user to guide and program the robot with its controlling interface. By handling either a touchscreen or a joystick, the user moves the robot to a desired position and defines the type of motion to that configuration. This method turns out to be relatively slow and requires a certain proficiency in robot handling. For these exact reasons modern robots allow for kinesthetic guidance out of the box. Kinesthetic guidance proves to be a considerably more intuitive approach to move the robot during the programming phase.

Our setup consisted of two Universal Robot UR10 arms where kinesthetic guidance is by default implemented with the so called “Gravity Compensation” mode. This mode essentially compensates the effects of gravity by estimating the necessary torques in the robot joints with the dynamic model. By applying an external force the user can guide the robot kinesthetically without any additional sensing equipment.

Joystick Interface

Moving the robot kinesthetically has its advantages (intuitive, no extra equipment, etc.). However, it has a significant disadvantage, which is the lack of precise positioning. With the Universal Robot’s implementation of kinesthetic guidance it is relatively hard to position robot to a desired configuration with a millimeter precision. We therefore developed a program that lets the user guide the robot with a joystick interface.

Repository and installation guide available here: https://repo.ijs.si/reconcell/robot_joystick_control.