Skip to content
← All articles

· In-house simulation research

Cannot read it? Look again: Go2 factory inspection in Isaac Sim

The video uses English captions over the same recorded simulation as the Japanese edition. The robot motion and camera frames are unchanged.

Reaching a gauge is not the same as reading it. Distance and viewing angle can leave a robot with an image that is unsuitable for inspection.

We built a Go2 quadruped demonstration that checks an image and changes its viewpoint when reading conditions are not met. We created a fictional factory with tanks, pipes and pumps in Isaac Sim, a simulator for robot motion, contact and camera imagery.

Approximately 33 seconds: reject an oblique view → move to the front → inspect again → record. Stereo images, gauge crops and decisions are frame-synchronized. 25 fps at simulation speed, without cuts; not a wall-clock real-time claim.

The next action matters when an image is unreadable

At the oblique viewpoint, images either exceeded the configured 50° orientation limit or did not provide sufficient scale correspondences. None of five images was accepted for recording. This rejection triggered a move to a preconfigured viewpoint on the front side of the gauge.

After moving, 5 of five images passed, producing readings from 0.917 to 0.920 MPa. Their median was 0.919 MPa. MPa is a pressure unit. The simulated fixture was set to 0.920 MPa, a difference of 0.001 MPa in this trial.

Raw oblique and frontal gauge images with image-derived orientation, reading decisions and record status
Actual camera captures with equal-size crop regions. Camera-to-gauge distance was approximately 1.20m initially and 1.30m after repositioning. Notice the change in foreshortening, not just size. Distances are post-run audit measurements.

Visual SLAM is one type of SLAM

This demonstration uses Visual SLAM, which uses camera images. SLAM is the general term for estimating the robot's position and a map of its surroundings at the same time. Visual means image-based: it is not a separate alternative to SLAM. The useful comparison is with LiDAR SLAM, which uses laser distance measurements.

SLAM contains Visual SLAM using camera images and LiDAR SLAM using laser distance measurements
The goal is the same; the sensing cues differ. Cameras and LiDAR can also be combined.

In a factory aisle, Visual SLAM tracks how shelf corners and pipe markings move across images to estimate the robot's motion. LiDAR SLAM uses the measured distances and arrangement of walls and shelves.

ComparisonVisual SLAM: camerasLiDAR SLAM: lasers
AdvantagesCameras are generally small and inexpensive. Their images can also support tasks such as gauge reading.Measures distance directly. Can measure the shape of walls and shelves in darkness.
LimitationsDarkness, backlighting, blur and walls with few visual features can make tracking difficult.Materials that return little laser light and environments with few geometric cues can make measurement or localization difficult. Especially for 3D LiDAR, cost and mounting space can be greater.
DistanceComputed from images. Conventional image-only monocular systems need another cue for distances in meters. Our stereo pair estimates depth from differences between the two views.The sensor measures distances with lasers, but measurements still have errors.

An advantage of our configuration is that the same camera images support both localization and gauge inspection. Localization and gauge reading remain separate processes. This test used a simulated factory with fixed lighting; darkness, reflections and physical camera vibration are untested. It is not a comparative experiment demonstrating superiority over LiDAR.

SLAM estimates position and a map. Route planning and obstacle avoidance need additional components. This demonstration uses image-based position estimation with predefined aisle waypoints and viewpoint candidates, rather than autonomous patrol in an unfamiliar factory. See MathWorks' sensor-based SLAM guide and NVIDIA's discussion of sensor limitations.

Can Go2's LiDAR be used, and can the methods be combined?

The physical Go2 has a standard 4D LiDAR. As of October 2, 2026, Unitree's product page lists the L2. LiDAR SLAM is therefore another option. Connecting custom software requires checking the actual configuration and development access to sensor data.

This simulated Go2 does not use LiDAR data for localization. Our test uses the added stereo cameras and cuVSLAM. Hardware availability and use in this demonstration are separate facts.

Combining LiDAR SLAM and Visual SLAM can improve accuracy and resilience to losing position tracking. For example, laser distance measurements can help when darkness or blur disrupts camera tracking, while image markings can help distinguish places with few geometric cues. Combining sensor measurements is called sensor fusion.

LiDAR distance and shape, camera image features and IMU acceleration and angular velocity feed a fused position estimate as a future test option
Conceptual fusion diagram; not implemented in this demonstration. An IMU measures acceleration and angular velocity.

Simply averaging two position estimates is insufficient. Sensor timestamps, mounting positions and orientations must agree, and the system must account for measurement reliability. Incorrect timing or mounting calibration can increase error. Fusion also adds computation, implementation and tuning effort.

A future test could compare cameras alone, LiDAR alone and fusion in the same simulated factory, measuring position error, tracking failures and processing time. We have not measured a fusion improvement in this demonstration. See NVIDIA's discussion of complementary odometry methods and the Stereo Visual Inertial LiDAR SLAM study for an example combining cameras, LiDAR and an IMU.

Images support both motion and inspection

We added two ideal virtual cameras above Go2’s front, with their lens centers 6.5cm apart. They form one forward-looking stereo pair. This is an additional rig, not a reproduction of Go2’s standard camera specification.

Side-view mount location and enlarged top-view stereo pair with 6.5cm lens-center separation
Left and right refer to the robot’s perspective. Schematic, not an engineering drawing.

Differences between the two images and features tracked over time support position estimation.

Why use two cameras?

The purpose of the pair is to estimate distances to visual features and how many meters Go2 has moved. Hold up a finger and close each eye in turn: its apparent position shifts. A nearby point has a larger offset between the two images than a distant point.

This offset is called disparity. The known 6.5cm camera separation and calibrated lens parameters turn disparity into distance. Tracking the features across successive images then helps estimate the robot’s position and orientation.

Visual SLAM can also work with one camera. However, conventional image-only monocular SLAM needs another cue to recover metric scale. This demonstration uses stereo cameras with a known baseline for that purpose.

Near points have larger stereo disparity; both images support motion while only the left image feeds gauge reading
Conceptual illustration, not measured feature positions from this run.

The roles are separate: localization uses both images; gauge reading uses only the left image. The reader does not combine two camera images to reread the dial. See the OpenCV stereo-depth tutorial for the disparity–distance relationship.

cuVSLAM performs Visual SLAM: simultaneously estimating camera position and surrounding visual features. We use its pose estimate to adjust velocity toward predefined waypoints in a known clear aisle. The green points in the two lower camera views are actual cuVSLAM feature observations for that frame. The line on the right is the estimated trajectory, not a factory navigation map.

Stereo images feed camera localization and waypoint motion; gauge-image quality either permits recording or triggers the next configured viewpoint
The inspection decision feeds back into motion. The walking component uses a public pretrained Go2 policy.

For walking, we use Isaac Lab's published Go2 policy—a learned model that turns velocity commands and robot state into joint actions. We did not train or fine-tune it. The robot moves through physics rather than by teleporting its base along an animated path.

Simulator ground-truth pose is used for audit records and the filming camera, not for aisle position control. The locomotion policy still uses joint and orientation information. This is not a claim that the entire robot is controlled using cameras alone.

Watch the raw image, rectification and OK/NG decision together

The upper-right panels show a live crop of the current gauge image and its frontal rectification. A tilted view makes the round dial appear narrow. We match its markings to a needle-free reference and rectify only valid correspondences. No successful rectification is shown when matching fails.

FRAME OK/NG is a single-image decision. It shows the current failure reason, such as an overly oblique view or unmatched scale. RECORD OK/NG is the five-image decision. A transient reading during movement does not complete the inspection.
The observed pressure gauge rectified to a frontal view
Rectification of the second inspection capture. The registered scale spans 0–1.6 MPa.

SIFT finds image features; RANSAC estimates a perspective transformation while rejecting inconsistent matches. Compressed reference views help match foreshortened markings. The configured quality checks require sufficient correspondences, an image-derived orientation of at most 50°, and an unambiguous needle. At least three of five images must pass, with a range no greater than 0.015 MPa, before the median is recorded.

The 50° limit is an explicit configured quality rule, not learned confidence. It measures the angle between the camera optical axis and dial-plane normal, inferred from matched image points and camera intrinsics. The reader does not receive simulator ground-truth orientation.

This is image processing calibrated for a specific gauge, without a vision-language-action model or a large vision-language model. The pressure fixture value is used for evaluation only; it is not supplied to the reader.

Earlier prototype comparisons

The following records predate this oblique-view retake. They compare fixed and changing viewpoints and different needle settings. The new recording changes the path, display, matching and angle gate, so these rows are not its results or a success-rate estimate.

TrialFirst viewNext viewRecorded / fixture
No repositioning0/5 acceptedNo movementUnresolved / 0.920
Repositioning comparison0/5 accepted3/5 accepted0.916 / 0.920 MPa
Lower needle setting0/5 accepted5/5 accepted0.421 / 0.420 MPa
Higher needle setting0/5 accepted5/5 accepted1.319 / 1.320 MPa
Initial published recording0/5 accepted5/5 accepted0.916 / 0.920 MPa

Each row is one run. For the final recording, we corrected the method for logging ground-truth camera pose for auditing; image-based control and reading criteria were unchanged. Failed frames remain in the records. These small tests are not a success-rate estimate or a physical-hardware accuracy benchmark.

What works, and what remains

We connected visual localization in a known aisle, learned walking, rejection of an insufficient image, movement to another viewpoint, and multi-frame reading. The video and the decisions come from the same simulation run.

Not yet demonstratedWhy, and the next verification needed
Autonomous patrol in an unfamiliar factoryAisle waypoints and viewpoint candidates are configured in advance. Persistent mapping, path planning and obstacle handling remain to be verified.
Automatic optimal-viewpoint searchA rejected reading triggers the next configured candidate. Generating and ranking viewpoints by visibility and movement cost is not implemented.
Glare, dirt, darkness or other gaugesOnly one gauge face and fixed lighting were tested. This retake tests an oblique view and an explicit acceptance rule, not detected glare avoidance.
Inspection on a physical Go2The rig uses ideal simulated cameras. Real optics, exposure, vibration, communication latency and locomotion error need hardware tests.

What can be tested before going on site?

A simulated environment lets us compare gauge heights, camera mounts, viewpoint candidates and unresolved-reading behavior before a hardware trial. Next we will vary lighting, occlusion and gauge placement to find the conditions where reading breaks down.

We build simulation environments, connect robot control with image processing, and check the results of each trial. Contact us to discuss what to verify first for factory patrol or equipment inspection.

Inspiration and implementation sources

The idea of revisiting the observation viewpoint was informed by Tuomisto et al., Automating on-site object inspection with a quadruped robot and BIM. That study uses Spot, BIM and 3D LiDAR, among other components. Our Go2, Visual SLAM and gauge-reading prototype is a separate implementation, not a reproduction of that paper.

The runtime used Isaac Sim 5.1, Isaac Lab (software for robot learning and motion testing), RSL-RL 3.0.1 and the cuVSLAM Python API. To keep test conditions consistent, we used Isaac Lab's code from one specific update and did not update it during testing. The fictional factory is our own work. We publish our recorded footage and results, not third-party robot assets or pretrained weights.

Read the Japanese edition →

LET’S BUILD TOGETHER

Turn your robotics ideas into questions we can test.

Tell us about your task, equipment and current challenges. Through simulation and tests on real robots, we explore feasibility and technical challenges together.

Discuss joint development