Moveit Wbc logo

Moveit Wbc

OrganizationPopular
AgibotTech
moveit-wbc

Bring up MoveIt 2 + whole-body-control RViz for the Genie G2 family, using `ros2 launch genie_sim_moveit wbc.launch.py`. Covers arm × gripper selection, the three packaged IK plugins (KDL-coupled, bio_ik-coupled, relaxed-IK), the GenieBioIK human-prior A/B switch, and the `use_ros2_control:=false` mode for direct `/joint_command` driving. Trigger: When the user asks to "start moveit", "wbc rviz", "plan with moveit", "switch IK plugin", "drive joint_command directly", "compare human priors", or pairs MoveIt with a `scene_*_g2_*` launched by the `launch-scene` skill.

Overview

PublisherAgibotTech
Repositorygenie_sim
Skill namemoveit-wbc
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 Moveit Wbc 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/moveit-wbc .claude/skills/moveit-wbc
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Moveit Wbc 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 Moveit Wbc 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 Moveit Wbc 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

  • A scene_*_g2_{op,sp} is running (via the launch-scene skill) and the user wants planning + RViz on top.
  • User wants to switch the active IK plugin or A/B the GenieBioIK "human priors" (torso-straight, chassis-pin, head LookAt).
  • User wants to drive the arm directly via /joint_command (e.g. wok_flip_cmds.py) without ros2_control fighting the publisher.

Do not use for:

  • Robots other than Genie G2 — the SRDF, coupled-joint constraints, and ros2_controllers manifest are G2-only. Other robots run on the engine but don't have a packaged MoveIt config.
  • Launching the simulator itself → launch-scene skill.
  • Building the workspace → build-workspace skill.

Critical Patterns

  1. arm and gripper are independent. Defaults are arm:=crsB gripper:=swiftpicker. The launch wires both into the URDF filename and the SRDF xacro mappings, so any (arm, gripper) combo that has a corresponding URDF under genie_sim_robot_model/urdf/ works.
  2. Match MoveIt's (arm, gripper) to the scene's robot variant. scene_pnp_g2_opgripper:=omnipicker, scene_wbc_g2_spgripper:=swiftpicker. Mismatched values produce a URDF MoveIt can plan against but a robot the engine refuses to drive.
  3. Pick the IK plugin via use_human_priors, not by editing yaml. use_human_priors:=true (default) loads config/kinematics.yaml (GenieBioIK with priors); use_human_priors:=false loads config/kinematics_vanilla.yaml (upstream BioIK, every prior weight zeroed). Both files share the plugin selection / IK links / timeouts so the only A/B variable is the goal stack.
  4. use_ros2_control:=false for /joint_command driving. When an external publisher (teleop, wok-flip script) writes /joint_command, the ros2_control node would republish at the CM update rate and fight it — set this flag to leave move_group alone (the /compute_ik, /compute_fk services) so there's a single source on the topic.

The matrix

Scene (from launch-scene)Recommended wbc.launch.py args
scene_pnp_g2_oparm:=crsB gripper:=omnipicker
scene_wbc_g2_sparm:=crsB gripper:=swiftpicker (defaults)
scene_flat_g2_sp / _chef / _shirtdefaults (crsB + swiftpicker)
IK plugin / modeArgs
GenieBioIK with human priors (default)use_human_priors:=true
Upstream BioIK (priors zeroed, for A/B)use_human_priors:=false
move_group only — /compute_ik services, no controllersuse_ros2_control:=false

Workflow

Step 1 — Confirm the scene is up

launch-scene skill should already be running in another shell. Verify:

bash
ros2 topic list | grep -E "joint_states|tf|clock"
ros2 topic hz /clock                    # sim-time pacing should be live

Step 2 — Pick arm + gripper

Ask via AskUserQuestion if not given. Default to the scene's gripper (see matrix above).

Step 3 — Launch MoveIt

bash
source devel/setup.bash

# Default (Genie G2 + crsB + swiftpicker + human priors + ros2_control):
ros2 launch genie_sim_moveit wbc.launch.py

# crs arm + omnipicker:
ros2 launch genie_sim_moveit wbc.launch.py arm:=crs gripper:=omnipicker

# A/B vanilla BioIK (priors disabled):
ros2 launch genie_sim_moveit wbc.launch.py use_human_priors:=false

# Direct /joint_command (e.g. external teleop / wok_flip_cmds.py):
ros2 launch genie_sim_moveit wbc.launch.py use_ros2_control:=false

Step 4 — Plan in RViz

The launch starts move_group, robot_state_publisher, and rviz2 with the MoveIt-Plan-Execute panel. Drag the interactive marker on the IK link, hit Plan, then Execute.

Step 5 — (optional) Drive the chassis as a single chain

simple_body_controller claims the same body-joint position interfaces as simple_waist_controller + simple_torso_controller, so it's configured but not auto-spawned. To drive the body as one chain:

bash
ros2 control switch_controllers \
  --activate simple_body_controller \
  --deactivate simple_waist_controller simple_torso_controller

Commands (copy-paste summary for the user)

bash
# Inside the container, after sourcing the overlay:
source devel/setup.bash

# Most common: match a pnp scene
ros2 launch genie_sim_moveit wbc.launch.py arm:=crsB gripper:=omnipicker

# A/B the human priors
ros2 launch genie_sim_moveit wbc.launch.py use_human_priors:=false

# move_group only (for external /joint_command publishers)
ros2 launch genie_sim_moveit wbc.launch.py use_ros2_control:=false

Notes

  • The MoveIt URDF joint limits are widened by ±0.01 rad / ±0.001 m at launch time to absorb MuJoCo soft-limit drift — CheckStartStateBounds reads URDF limits directly, so the per-pipeline start_state_max_bounds_error doesn't help. Helper lives in genie_sim_robot_model.urdf_utils.pad_urdf_joint_limits.
  • Default workspace half-extent for OMPL planar-joint bounds is set to 200 m via ompl.default_workspace_bounds — without this, FixWorkspaceBounds clamps planar_joint/trans_{x,y} to a narrow box that excludes the actual map → base_link pose.
  • fix_start_state:=true lets jazzy's CheckStartStateBounds adapter actively renormalise joint values that drift past <limit> by sub-mrad under contact load (default upstream is false).
  • The MoveIt config is distro-agnostic (Humble + Jazzy). Distro drift is absorbed by moveit_compat.hpp in genie_sim_moveit_plugins/, never by #ifdef in the config package.

Resources

Frequently asked questions

What does the Moveit Wbc AI skill do?

Bring up MoveIt 2 + whole-body-control RViz for the Genie G2 family, using `ros2 launch genie_sim_moveit wbc.launch.py`. Covers arm × gripper selection, the three packaged IK plugins (KDL-coupled, bio_ik-coupled, relaxed-IK), the GenieBioIK human-prior A/B switch, and the `use_ros2_control:=false` mode for direct `/joint_command` driving. Trigger: When the user asks to "start moveit", "wbc rviz", "plan with moveit", "switch IK plugin", "drive joint_command directly", "compare human priors", or pairs MoveIt with a `scene_*_g2_*` launched by the `launch-scene` skill.

Why use Moveit Wbc on TypingMind?

Because you install it once and use it with any model. Moveit Wbc 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 Moveit Wbc in TypingMind?

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

Which AI models can use Moveit Wbc?

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 Moveit Wbc?

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

Is the Moveit Wbc 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 👇