Skip to content

ME495-EmbeddedSystems/final-project-teleop

Repository files navigation

Teleoperation Final Project

Group Members:

  • Rohan Kota
  • Luke Batteas
  • Zach Alves
  • Aditya Nair
  • Leo Chen

Overview:

The goal of this project was to design a teleoperation system which leverages object models in order to make the user's experience more intuitive. The idea is that a human operator can stack virtual rings in a simulated environment, all while getting instantaneous haptic feedback thanks to the local object models and low-latency simulation environment. The user's impact on the world is then replicated by an avatar robot, i.e. the robot does the same thing with the rings that the human user did. While we did not end up bridging the operator station and avatar station, we developed several key packages which will contribute to this end goal. These packages are outlined below, and more detailed information about how to run each package, etc. can be found in the READMEs of each individual package.


Packages:

This projects consists of the following packages:

Instructions on how to run/launch nodes in each package can be found within the READMEs of the individual packages.


teleop_tasks Package

The teleop_tasks package defines and launches virtual tasks, which can be completed by the user. We took two approaches to this:

  • Using the physics engine that comes with Gazebo
  • Programming some crude physics into RViz

Gazebo:

The video below shows a hand moving around in Gazebo. This hand can interact with the objects in the Gazebo world, and the hand's state is dictated by the hand of the human operator.

2023-12-03.16-44-58.mp4

RViz:

The video below shows an example of a user completing a ring stacking task. The user can feel the mass of the rings due to the Franka robots attached to their hands. The HaptX gloves allow the user to feel the rings in their hands by activating the finger brakes and inflating the tactors when the user picks up a ring.

Ring.Stacking.2.mp4

teleop_haptics Package

The teleop_haptics package can be used to provide haptic feedback to the user. There are 2 main forms of haptic feedback:

  • Kinesthetic Feedback: Provided by a Franka robot attached to the user's wrist, the kinesthetic feedback allows a user to experience virtual masses when picking up objects.
  • Cutaneous Feedback: Provided by the HaptX gloves, the cutaneous feedback allows a user to feel objects on their fingertips.

teleop_sensing Package

The teleop_sensing package uses computer vision to calculate the locations of objects present in the avatar robot's workspace.

A demo of the package's ability to detect the positions of the rings is shown below:

CV-demo.mp4

teleop_visualization Package

The teleop_visualization package allows you to visualize the avatar's workspace in RViz.

Real Life: Avatar Station with Rings

RViz Visualization: Screenshot from 2023-11-30 15-52-21


teleop_avatar Package

The teleop_avatar package controls the avatar robot to pick up objects and move them. In order to pick up an object, you can simply call a service specifying the object's id. There is also a service which allows you to pick up rings and place them on the peg by simply specifying the object's id.

Here is an example of the teleop_avatar package picking up rings and stacking them on a peg:

Real.Ring.Stacking.2.Compressed.mp4

teleop_interfaces Package

The teleop_interfaces package contains all the custom messages and services used by the teleoperation system.

Custom Messages:

  • FingerWrenches
  • ObjectState

Custom Services:

  • Grasp
  • ExecuteTrajectory
  • SetWrench

teleop Package

The teleop package is a work in progress, but it is meant to bridge the operator and avatar stations and orchestrate the entire teleoperation experience. It will launch all the nodes necessary for the user to complete the task in a simulated environments, as well as all the nodes needed to run the avatar station. When a user begins moving objects in the simulated world, it will sense this and begin publishing the transforms of the object to the avatar station. Once the user is done moving the object, the nodes within this package will prompt the avatar station to begin executing the same trajectories with the real-life objects.

About

final-project-rohankotanu created by GitHub Classroom

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published