Skip to main content

Turns your phone into a robot arm teleoperation device by leveraging the WebXR API

Project description

Teleop

Turns your phone into a robot arm teleoperation device in 3 simple steps:

  1. Install and start the server on your computer.
  2. Open the URL on your phone.
  3. Click Start and hold the Move button to move the robot arm.

The web application utilizes the WebXR API that fuses the phone's sensors to get the orientation and position of the phone in 3D space. The server receives the phone's pose and sends it to the robot arm controller.

Lite6 Physical Teleoperation UR5e Webots Teleoperation
Teleoperation of a physical Lite6 robot Teleoperation of a Webots simulated UR5e robot

Installation

The package is available on PyPI, you can install it using pip.

pip3 install teleop

Usage

Out of the box, we provide some robot arm interfaces that you can just run, but you can create you own interface by including the teleop.Teleop class in your project.

Basic Interface

A simple interface that simply prints the teleop response. You can use it as a reference for creating your own interface.

python3 -m teleop.basic

ROS 2 Interface

A ROS 2 interface is primarily designed to be compatible with the cartesian_controllers package, but it could also be adapted for MoveIt Servo or other packages.

python3 -m teleop.ros2

Published topics:

  • target_frame (geometry_msgs/PoseStamped) : The target pose of the robot arm end effector in the robot base frame.
  • tf (tf2_msgs/TFMessage): The transform between the robot base frame and the target frame for visualization.

Subscribed topics:

  • current_pose (geometry_msgs/PoseStamped): The current pose of the robot arm end effector in the robot base frame. Used for updating the reference pose.

You can use the standard ROS 2 arguments to override the default values, for example:

python3 -m teleop.ros2 --ros-args -r target_frame:=/some_other_topic_name

Custom Interface

For most applications you will need to create a custom interface to interact with your robot arm.

import numpy as np
from teleop import Teleop


def callback(pose: np.ndarray, message: dict) -> None:
    """
    A callback function that will be called when pose updates are received.
    The callback function should take two arguments:
        - np.ndarray: A 4x4 transformation matrix representing the end-effector target pose.
        - dict: A dictionary containing additional information.
    """

    print(f'Pose: {pose}')
    print(f'Message: {message}')


teleop = Teleop()
teleop.subscribe(callback)
teleop.run()

Examples

Check out the examples to see how to use the package in different scenarios:

Development

To contribute to the project, you can install the package in editable mode.

# Install the package in editable mode
git clone https://github.com/SpesRobotics/teleop.git
cd teleop
pip3 install -e .

# Run the tests
python3 -m pytest

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

teleop-0.0.5.tar.gz (19.1 kB view details)

Uploaded Source

Built Distribution

teleop-0.0.5-py3-none-any.whl (17.7 kB view details)

Uploaded Python 3

File details

Details for the file teleop-0.0.5.tar.gz.

File metadata

  • Download URL: teleop-0.0.5.tar.gz
  • Upload date:
  • Size: 19.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for teleop-0.0.5.tar.gz
Algorithm Hash digest
SHA256 3e2771a4123164186ade2a25f6cd393d1bebdf16ab01e71033915efb70ed19f8
MD5 4b85aa6d44c470dc84afb3f2794efdc8
BLAKE2b-256 27383fe48c1ef1fd3bfe0d7030d20bb48b90245135a5c94d5844d75149fb61eb

See more details on using hashes here.

File details

Details for the file teleop-0.0.5-py3-none-any.whl.

File metadata

  • Download URL: teleop-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 17.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for teleop-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 0ae39e7509a680edd577b4268912666ce18335175e0cbc2840eca74a805f19af
MD5 5ff5e7369d98fb02e66ee30879d28ba7
BLAKE2b-256 6151f3c4e36ef1d4fd6dcc0f50770ccf6747ab603af2621a285e908d869caeef

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page