Back to the lab

The lab · Personal project

UGV Nav.

An autonomous ground robot, and a personal engineering and applied-ML project: I’m building a Waveshare UGV01 rover around an NVIDIA Jetson Orin Nano and an Intel RealSense D435i to drive itself to a goal in a defined test area.

Period
– Present
Hardware
Waveshare UGV01, NVIDIA Jetson Orin Nano, Intel RealSense D435i
Software
Python 3.12, librealsense 2.58.1
Repository
Ivan-Ilyich/ugv-nav (opens in a new tab)

The goal

The robot should drive itself to a goal in a defined test area: a room, then outdoors. A classical obstacle-avoidance baseline comes first, then one ML contribution, measured against it; the candidate is visual traversability estimation.

The control stack

I wrote the Python 3.12 control stack. A typed controller adapter has a speed cap, a 0.5 s command lease, stop priority and explicit re-arm, so no stale command can resume motion. Around it are serial and Wi-Fi/HTTP transports, a simulator and a read-only commissioning probe. 134 tests pass, and the code is clean under mypy --strict and ruff.

Sensing on the Jetson

I brought up the sensing stack on the Jetson. I built librealsense 2.58.1 from source (RSUSB backend) to stream RGB, depth and IMU, and verified it in a 20-minute soak at 30 fps with no lost frames, at about 50 °C and 5 W. The Jetson has key-based SSH over Wi-Fi, the camera’s firmware is updated to 5.17.3.10, and I measured round-trip latencies.

The mount and first contact

I designed the two-part Jetson and power-bank mount for the rover’s rails as a parametric model in a small box-CAD library I wrote (exact, watertight STL), then printed it in PETG and assembled it. First contact with the robot controller over Wi-Fi passed, with battery voltage and IMU readings. The first guarded drive is next.

How I work on it

Every step has a pass/fail limit, set before each test, and a recorded result; the plan, a dated log and hardware notes are in the repo. I reimplemented the vendor’s JSON-line protocol from its GPL-3.0 firmware source, read only as documentation, with no firmware code copied. A structured learning track (SLAM, odometry, costmaps, path planning, ROS 2/Nav2, camera calibration) runs ahead of the robot’s navigation work.

Software engineering

Explore my professional work.

Selected work