Vijay Yadav

Robotics & AI Engineer

Humanoid, quadruped & mobile robotics Β· ROS 2 Β· NVIDIA Isaac Sim


πŸ€– Robotics Architecture Series

Three robots. Three morphologies. One interface. A deliberate series of projects testing whether a clean ROS 2 + Isaac Sim control architecture transfers across robot types β€” wheeled (Jetbot), bipedal (Unitree H1), and quadrupedal (Boston Dynamics Spot). Same external /cmd_vel + /odom contract; different policies, different DOF counts, different motion capabilities.

πŸš€ Featured Project β€” Spot Quadruped

Spot Quadruped Control β€” ROS 2 + Isaac Sim 5.1

A ROS 2 control stack for the Boston Dynamics Spot quadruped in NVIDIA Isaac Sim 5.1, built around NVIDIA's pre-trained flat-terrain walking policy. Spot autonomously navigates a configurable sequence of (x, y) goals using body-frame velocity control with full holonomic motion β€” linear.x, linear.y, and angular.z commanded simultaneously.

Third project in the architecture series. Unlike the H1 humanoid (forward-only kinematic), Spot's policy supports lateral strafe and reverse β€” so the waypoint controller projects the world-frame goal direction into the robot's body frame and commands all three velocities at once. No rotate-first state machine needed.

πŸŽ₯ Demo

Validation

Intended vs actual path for Spot waypoint navigation

Representative navigation run. Path coloured by navigation state. Demonstrates closed-loop body-frame velocity control on /spot/odom feedback.

What's Different About Spot

Tech Stack

NVIDIA Isaac Sim 5.1 ROS 2 Jazzy OmniGraph Python 3.11 / 3.12 FastDDS colcon Ubuntu 24.04 LTS RTX 5090 Boston Dynamics Spot (12-DOF)

πŸ“‚ Repository & Docs

πŸ€– H1 Humanoid Control

H1 Humanoid Control β€” ROS 2 + Isaac Sim 5.1

A ROS 2 control stack for the Unitree H1 humanoid in NVIDIA Isaac Sim 5.1, built around NVIDIA's pre-trained flat-terrain walking policy. The robot autonomously navigates a sequence of waypoints using a heading-first state machine (ROTATE β†’ WALK β†’ REACHED) wrapped around the policy's velocity interface.

Second project in the series. Same two-process architecture as the Spot and Jetbot projects; external /cmd_vel + /odom contract identical. The interesting design moment for this project was the OmniGraph bridge β€” see below.

πŸŽ₯ Demo

Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Isaac Sim (Python 3.11) β”‚ β”‚ ROS 2 Jazzy (Py 3.12) β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ OmniGraph β”‚ β”‚ β”‚ β”‚ waypoint_controllerβ”‚ β”‚ β”‚ β”‚ SubscribeTwist ◄──────────┼─── β”‚ β”‚ teleop_node β”‚ β”‚ β”‚ β”‚ ComputeOdometry β”‚ β”‚ β”‚ β”‚ path_logger β”‚ β”‚ β”‚ β”‚ PublishOdometry ──────────┼─── β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β–² β”‚ β”‚ β–Ό β”‚ β”‚ β”‚ β”‚ β”‚ Physics callback β”‚ β”‚ β”‚ β”‚ β”‚ β†’ H1FlatTerrainPolicy β”‚ β”‚ /h1/cmd_vel β”‚ β”‚ β†’ 19 joint targets β”‚ β”‚ /h1/odom β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β–² β–² └───────── DDS (localhost) β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Why OmniGraph for the bridge: Isaac Sim 5.1 ships Python 3.11; system ROS 2 Jazzy is built for Python 3.12. The natural "import rclpy from a standalone script" approach crashes inside Node.__init__ due to a C-extension ABI mismatch. Solving this by moving all ROS pub/sub into OmniGraph keeps Python controllers in their native environment and avoids fragile workarounds. This pattern was reused unchanged for the Spot project.

Validation

Intended vs actual path for H1 waypoint navigation

Representative navigation run across a 2 m square. Path colour-coded by state (amber = rotating, blue = walking, green = reached).

Tech Stack

NVIDIA Isaac Sim 5.1 ROS 2 Jazzy OmniGraph Python 3.11 / 3.12 FastDDS colcon Ubuntu 24.04 LTS RTX 5090 Unitree H1 (19-DOF)

πŸ“‚ Repository & Docs


πŸ›ž Other Robotics Work

Isaac Sim Mobile Robot Control (Jetbot)

First project in the Isaac Sim + ROS 2 architecture series

Mobile robotics origin point for the series β€” same two-process architecture, applied to a wheeled Jetbot with differential drive. Demonstrates closed-loop waypoint navigation with proportional control on heading and distance errors. The architectural decisions made here scaled cleanly to the H1 humanoid and Spot quadruped that followed.

Phase 2 β€” closed-loop waypoint navigation (left) Β· Phase 1 β€” basic motion control (right)

NVIDIA Isaac Sim 5.0 ROS 2 Jazzy Python 3.11 / 3.12 FastDDS Jetbot

sEMG-Based Gesture Control for Shadow Robot Hand

University of Hertfordshire Β· Jun 2024 – Sep 2024

Developed a real-time ROS-based control pipeline for a 25-DOF Shadow Robot Hand, integrating sEMG-driven ML inference for gesture-based manipulation.

ROS Shadow Robot Hand (25-DOF) sEMG PyTorch Gazebo

🌱 Vision

My long-term goal is to develop affordable, real-world robotics systems that can learn from their environment through observation and interaction.

I'm particularly interested in learning-driven robots that improve their behaviour over time using perception and feedback β€” with a focus on practical, everyday applications.

The aim is to reduce complexity and cost while enabling intelligent robotic systems that can operate effectively in real-world environments.


πŸ”— Connect

LinkedIn Β· GitHub Β· Upwork