hello-robot / stretch_web_teleop

Remote web teleoperation for the Stretch mobile manipulators from Hello Robot Inc.
Other
13 stars 0 forks source link

Other forms of teleop #54

Open hello-binit opened 2 months ago

hello-binit commented 2 months ago

Currently, the web interface presents buttons on the website and allows users to "click" to teleoperate the robot. Besides using a typical mouse, operators are able to use eye-tracking software, sip and puff devices, voice recognition + grid overlays, and other accessibility tools to move the cursor and "click" these buttons.

We can offer other forms of joint-level teleop that are faster than clicking with the cursor. I'd like to propose adding:

  1. Keyboard Teleop: A mapping between buttons on the keyboard to buttons on the website. This mapping can be customizable (e.g. to support single hand teleop by mapping to keys on one side of the keyboard). We can support the 3 action modes of Step-Actions, Press-And-Hold, and Click-Click, by listening to the callbacks for key presses and releases. Because multiple keys can be pressed at once, we're enabling multi-joint teleop. Because keys are spaced closer together, we enable faster teleop by cutting out the time required to move the cursor. Keyboard Teleop and regular Mouse Teleop can happen together; they are not mutually exclusive.
  2. Gamepad Teleop: A mapping between the joysticks, triggers, and buttons on a Xbox controller to the joints on the robot. This mapping does not have to be customizable, and likely shouldn't. The behavior of the buttons would likely be independent of the action mode selected by the user. Once again, this type of teleop enables multi-joint teleop and can be faster than Mouse Teleop alone. Based on how I suspect we'd implement this, Gamepad Teleop and other forms of teleop would likely be mutually exclusive.
    • One benefit of supporting the Xbox layout (instead of the PlayStation layout) is that we would also be supporting the Xbox Adaptive Controller, which is a customizable inputs hub that emulates a standard Xbox controller, but enables its users to bring the input modalities that they can work with.

We can also support greater integration with existing kinds of teleop:

I'd be curious to hear your thoughts on feasibility, implementation, and priority for this project.