Teleop Bridge logo

Teleop Bridge

OrganizationPopular
AgibotTech
teleop-bridge

Wire a `geniesim_teleop` VR/Pico session into a running Genie Sim RT Engine scene — pick the right scene yaml, launch `wbc.launch.py` with `use_ros2_control:=false` so move_group serves `/compute_ik` while the teleop publisher owns `/joint_command`, and confirm no topic fighting. Trigger: When the user asks to "connect teleop to the sim", "桥接 teleop", "drive the engine with VR", "use teleop instead of ros2_control", "stop the controllers from fighting teleop", or has a teleop loop ready and a scene up but the robot jitters / flicks.

Overview

PublisherAgibotTech
Repositorygenie_sim
Skill nameteleop-bridge
Stars
1.4K
Forks
119
Bundled files
Instructions only
LicenseMPL-2.0
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by AgibotTech on GitHub. Read the source before you install it.

Installation

Install the Teleop Bridge AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/AgibotTech/genie_sim.git /tmp/genie_sim
mkdir -p .claude/skills
cp -r /tmp/genie_sim/source/geniesim_ros/skills/teleop-bridge .claude/skills/teleop-bridge
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Teleop Bridge in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Teleop Bridge on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Teleop Bridge is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

When to Use

  • VR teleop loop (geniesim_teleop skill run-teleop) and an RT Engine scene (launch-scene skill) need to share /joint_command without the ros2_control hardware interface rebroadcasting it at the controller-manager update rate.
  • User sees "the arm jitters / payloads get flung" — that's the classic two-publisher symptom.
  • External motion script (e.g. wok_flip_cmds.py) and MoveIt are both interested in the same topic.

Do not use for:

  • Starting the teleop loop itself → run-teleop skill in geniesim_teleop.
  • MoveIt planning with the simulator's controllers driving → moveit-wbc skill (default mode).
  • Recording the teleop session → record-episode skill.

Critical Patterns

  1. use_ros2_control:=false is the bridge switch. With it, wbc.launch.py starts move_group only (/compute_ik, /compute_fk) and skips the ros2_control node + controller spawners. /joint_command then has exactly one source: teleop.
  2. Match scene gripper to teleop config. run-teleop defaults to G2_omnipicker.json. Use scene_pnp_g2_op (or any scene_*_g2_op) so the engine is built with the same gripper the teleop loop expects. Mismatched grippers produce a robot MoveIt can plan against but the engine refuses to drive.
  3. Three processes, three shells. Scene + MoveIt + teleop each run as a long-lived ROS node. Don't try to background them in one shell — the engine and teleop both want stdin / SIGINT semantics.
  4. use_sim_time:=true is engine-side, but the teleop loop publishes wall-clock by default. The bridge uses sim time inside the scene; the publisher rate adapts. Don't override unless you know what you're doing.

Workflow

Step 1 — Confirm the prerequisites

  • Scene is up via launch-scene skill (e.g. scene_pnp_g2_op × launcher_ovrtx_isaac_physx).
  • Teleop config matches the scene's gripper.
  • VR device reachable, default port 8080.

Step 2 — Launch MoveIt without controllers

In a fresh shell:

bash
source devel/setup.bash

ros2 launch genie_sim_moveit wbc.launch.py \
  arm:=crsB \
  gripper:=omnipicker \
  use_ros2_control:=false

Console banner should print:

[wbc.launch.py] use_ros2_control=false → move_group only (no ros2_control
node / controllers); drive the arm via /joint_command.

Step 3 — Start teleop

In another shell (geniesim docker into):

bash
geniesim teleop run \
  --device_type=pico \
  --port=8080 \
  --robot_config=G2_omnipicker.json

Step 4 — Verify single-publisher on /joint_command

bash
ros2 topic info /joint_command -v
# Publishers should list exactly one: the teleop node.

If you see two publishers, you forgot use_ros2_control:=false — stop MoveIt and relaunch with the flag.

Step 5 — Plan-then-execute combo (optional)

Even without ros2_control, /compute_ik is still available. So you can:

  • Use MoveIt's RViz markers to plan and call /compute_ik for manual goals.
  • Hand the resulting joint target to your teleop publisher (or skip MoveIt entirely for direct VR drive).

Commands (copy-paste summary for the user)

bash
# Shell 1 — scene
source devel/setup.bash
ros2 launch genie_sim_bringup app.launch.py \
  scene:=scene_pnp_g2_op \
  launcher_config:=launcher_ovrtx_isaac_physx \
  headless:=false   # local workstation with a screen; flip to true on a remote/headless host

# Shell 2 — MoveIt, no controllers
source devel/setup.bash
ros2 launch genie_sim_moveit wbc.launch.py \
  arm:=crsB gripper:=omnipicker use_ros2_control:=false

# Shell 3 — teleop loop
geniesim teleop run --device_type=pico --port=8080 \
  --robot_config=G2_omnipicker.json

# Verify single publisher
ros2 topic info /joint_command -v

Notes

  • simple_body_controller is configured but not auto-spawned even in the controller mode — it conflicts with simple_waist_controller + simple_torso_controller on the same body-joint resources. The teleop bridge avoids that ambiguity by not spawning any of them.
  • For wok-flip / scripted motion (wok_flip_cmds.py, benchmark replay scripts), the same use_ros2_control:=false flag applies — anything that owns /joint_command directly needs the controllers out of the way.
  • The teleop loop has its own per-episode recording hooks (--record-dir). For raw-topic recording on top, see the record-episode skill.

Resources

Frequently asked questions

What does the Teleop Bridge AI skill do?

Wire a `geniesim_teleop` VR/Pico session into a running Genie Sim RT Engine scene — pick the right scene yaml, launch `wbc.launch.py` with `use_ros2_control:=false` so move_group serves `/compute_ik` while the teleop publisher owns `/joint_command`, and confirm no topic fighting. Trigger: When the user asks to "connect teleop to the sim", "桥接 teleop", "drive the engine with VR", "use teleop instead of ros2_control", "stop the controllers from fighting teleop", or has a teleop loop ready and a scene up but the robot jitters / flicks.

Why use Teleop Bridge on TypingMind?

Because you install it once and use it with any model. Teleop Bridge is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Teleop Bridge in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/AgibotTech/genie_sim/tree/main/source/geniesim_ros/skills/teleop-bridge. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Teleop Bridge?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Teleop Bridge?

As many as you like. As long as a model supports skills, you can use Teleop Bridge with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Teleop Bridge AI skill free?

Yes. It is published on GitHub by AgibotTech under the MPL-2.0 license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇