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

πŸ›ž Jetbot β€” Mobile Robotics Foundation

Isaac Sim Mobile Robot Control (Jetbot)

First project in the series Β· differential drive Β· 3 completed phases

The wheeled robot project where the architecture started. Same two-process design, same external /cmd_vel + /odom contract, applied to a Jetbot with differential-drive kinematics. Built progressively across three phases β€” basic motion, closed-loop waypoint navigation, and reactive obstacle avoidance with LiDAR β€” with a deliberate modular refactor in between to support the perception layer cleanly.

The architectural decisions made here scaled directly to the H1 humanoid and Spot quadruped that followed. The Jetbot project remains the most thoroughly engineered of the three β€” clean module hierarchy, unit-testable pure functions, dedicated architecture document.

πŸŽ₯ Latest Demo β€” Phase 3 (LiDAR Obstacle Avoidance)

Phase 3 β€” 360Β° LiDAR + reactive obstacle avoidance combined with closed-loop waypoint navigation

Earlier Phases

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

Engineering Highlights

πŸ“ Project Roadmap

Tech Stack

NVIDIA Isaac Sim 5.1 ROS 2 Jazzy Python 3.11 / 3.12 FastDDS PhysX LiDAR OmniGraph colcon Jetbot (differential drive)

πŸ“‚ Repository & Docs


πŸ€– Other Work

sEMG-Based Gesture Control for Shadow Robot Hand

University of Hertfordshire Β· Jun 2024 – Sep 2024 Β· Real hardware

Developed a real-time ROS-based control pipeline for a physical 25-DOF Shadow Robot Hand, integrating sEMG-driven ML inference for gesture-based manipulation. Hand pose commands derived from forearm muscle electrical activity via a Myo armband, classified by trained ML models, and dispatched as joint targets to the real robot.

πŸŽ₯ Hardware Demos

sEMG-driven gesture control of a physical Shadow Robot Hand (part 1 and part 2)

ROS Shadow Robot Hand (25-DOF) sEMG Myo armband 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