One generic racing policy, trained on 46 km of procedurally generated trails, raced the Allmend trail with no target path and no human operator. The whole trail was labeled traversable, so the racing line emerges from the policy itself.
Autonomous
Trail Racing
International Journal of Robotics Research
Under review
- Papersoon
- arXivsoon
- Video
- SemMap code
- Trail Library
- Data
A bicycle robot races a kilometer-scale mountain-bike trail at 3.26 m/s on average, with peaks above 5 m/s, on onboard perception and compute alone.
Abstract
We paint the trail into the terrain the policy trains on, then make that same trail visible to the real robot. Navigation reduces to following what it perceives.
Navigating off-road trails on a mountain bike requires diverse locomotion skills, including aerial maneuvers, cornering, and slip recovery, paired with sophisticated perception for scene understanding. Translating these capabilities to autonomous, two-wheeled robots remains a formidable challenge. We show that autonomous, high-speed trail navigation can be achieved through a single idea: encoding the trail as a semantic layer of the terrain. In simulation, this layer embeds the navigation task into the training environment; during deployment, it is reconstructed onboard from camera and LiDAR data.
First, we introduce a unified learning framework that treats local navigation and locomotion as a joint optimization problem, bypassing the twist or pose command interface of classical control hierarchies. With fixed reward weights, the same framework produces both trail racing and agile parkour, shaped only through terrain semantics and episode length. Second, our perception pipeline combines a frozen vision foundation model with a lightweight dual-head decoder that predicts per-pixel terrain semantics and confidence scores, which are fused with LiDAR range measurements into an egocentric semantic elevation map at 30 Hz onboard an NVIDIA AGX Orin.
We validate our framework on the Ultra Mobility Vehicle (UMV), a bicycle robot that autonomously raced across all sections of a kilometer-long, unstructured mountain bike trail at speeds exceeding 5 m/s and averaging 3.26 m/s. In simulation, our policy fails up to an order of magnitude less often than hierarchical baselines while driving faster. We release our simulation and perception tools as open source.
Six runs. One kilometer of forest trail.
The Allmend trail in Zurich, raced in six segments by one generic policy. Scroll to follow the robot through its fourteen skill elements, or select a checkpoint on the map.
- Trail length
- 969m
- Elevation drop
- 59m
- Raced autonomously
- 946m
- Average speed
- 3.26m/s
- Peak speed
- 5.2m/s
- Versus teleoperation
- 2.3× faster
Start
Top of the Allmend trail
- Run
- -
- Avg speed
- -
- Distance
- -
- Time
- -
Runs colored by measured speed 0 to 5 m/s, placed on the trail from their logged shape and height. Grey: no autonomous run, mostly at the footpath crossing. Aerial imagery © swisstopo, trail © OpenStreetMap contributors.
Rock bed
Upper section, run 1
The upper section opens with wide areas of built skill elements and natural obstacles.
Seven pump-track waves
Upper section, run 2
Rebuilt from a slalom into waves between scanning the trail and deployment. The policy rode it as it found it.
Two skinnies
Upper section, run 2
The robot tended to ride alongside skinnies rather than on top: narrow features are largely invisible to the sparse height scan until the front wheel touches them.
Rocky tabletop drop
Upper section, run 3
No descent point is imposed. The robot commits to a descent line from its approach angle.
Wooden tabletop drop
Upper section, run 3
A second drop zone, built from timber, handled the same way.
Wall-ride
Upper section, run 3
Never forced onto the wall, since the gravel beside it was also traversable. Trained to corner on flat and banked ground, the policy picks one by its entry speed.
Tight turn
Upper section, run 3
A hairpin straight after the wall-ride.
Fallen log
Upper section, run 3
A natural log lying across the trail.
Locked seesaw ramp
Upper section, run 3
The robot rode over the seesaw instead of the bypass, likely because simulated slopes span the full track width in training.
Natural hill
Lower section, run 4
Past the pedestrian path the trail becomes a flow trail. The longest continuous run: 220 m at 3.8 m/s, peaking at 5.2 m/s.
Long, overgrown curve
Lower section, run 5
The trail narrows between dense vegetation.
Descending S-curve
Lower section, run 6
Back-to-back direction changes while losing height.
Steep descent
Lower section, run 6
The steepest part of the lower trail.
Cliff-side segment
Lower section, run 6
A narrow segment with a sharp drop-off on one side, and the end of the trail.
Six runs, 946 m of trail, no operator in the loop.
| Part | Checkpoints | Speed | Distance | Time |
|---|---|---|---|---|
| Upper | 1 | 3.52 m/s | 126 m | 35.8 s |
| 2, 3 | 3.01 m/s | 138 m | 45.8 s | |
| 4 to 9 | 3.04 m/s | 189 m | 62.2 s | |
| Lower | 10 | 3.80 m/s | 220 m | 57.9 s |
| 11 | 3.09 m/s | 134 m | 43.4 s | |
| 12 to 14 | 3.10 m/s | 139 m | 44.8 s | |
| Total | Entire trail | 3.26 m/s | 946 m |
Replay a run from the robot's own logs.
The terrain SemMap built, the 16 × 16 scan the policy observed, the onboard camera and the measured speed, all recorded on the robot.
The 3D replay loads when you reach it.
Terrain: SemMap's egocentric elevation maps from the run, stitched at 0.2 m; violet cells are the trail class. Scan: the 16 × 16 points the policy sampled, at 10 Hz. Speed: state-estimator base velocity. Run 4 did not log the scan; its scan is rebuilt from the logged elevation map and pose (checked on run 3: heights within 6 mm, 96% same trail labels).
The trail is the interface.
No planner hands commands to a controller. The trail is embedded in the terrain during training and reconstructed by perception at deployment.
TENa
The semantic path is encoded as a layer in the terrain mesh and treated as a soft boundary. Locomotion and local navigation collapse into a single optimization problem, with no twist or pose commands and no planning-and-tracking hierarchy.
- Observes
- Proprioception, a stand command, and a two-layer semantic height scan
- Controls
- Rear-wheel velocity, fork angle and two torso joints at 50 Hz
- Trains on
- The Trail Library of procedural trails, and high-fidelity digital twins
- Tunes
- Only the episode length and the mesh change between tasks
SemMap
A frozen DINOv3 backbone and feature upsampler feed a lightweight dual-head decoder. One head predicts terrain classes; the other reconstructs the backbone features, and their cosine similarity becomes a per-pixel confidence. Traversability and confidence are fused with LiDAR into an egocentric 2.5D map.
- Rates
- Semantics up to 90 Hz in isolation; 30 Hz on the robot with map fusion, on an AGX Orin
- Map
- 15 × 15 m, 0.1 m cells, confidence-weighted fusion
- Adapts
- Only the decoder is trained per environment, in minutes
- Labels
- A handful of cluster-selected images, labeled offline with SAM3
r = 1 rexplore + 0.2 rsurvive + 5 rstand
- ExploreForward progress, saturating at a minimum speed
- SurviveStay alive and inside the trail boundary
- StandSettle into a stable track-stand in the final zone
There is no lap-time term. The exploration reward pays for forward speed only up to a minimum speed (2 m/s; 10 m/s for the policy specialized to the digital twin). Faster driving emerges as time-optimal behavior from the fixed episode length and the terminal standing reward, with identical weights for every task.
From simulation to the forest, one gap at a time.
Each stage isolates one source of sim-to-real risk before the full stack meets the forest.
-
95-100%
Simulation
Success over 17 parkour tracks with one MDP; the same framework also trains ANYmal-D in simulation.
-
80%
Motion-capture parkour
Slalom, ramp jump over a 1.2 m gap, staircase landing.
-
6datasets
Perception alone
Robust to glare, shadow and blur; zero-shot on GrandTour.
-
130laps
Indoor closed loop
Continuous at 3.54 m/s; 6.85 s laps against 6.1 s in simulation.
-
946m
The Allmend trail
Full onboard autonomy in the forest, peaking above 5 m/s.
Faster than teleoperation.
On the same upper section, the autonomous policy is 2.3× faster than the teleoperated UMV of prior work.
Dashed markers are simulation. The specialized policy is a theoretical result and is not expected to transfer to hardware. Rider speeds come from Strava and cover the whole trail, upper and lower sections combined, while the digital twin is the upper section only, so the two are not directly comparable.
Key figures from the paper.

Parkour and racing from one MDP
Every track shares one idea: a semantic trail joining a start and a final zone, embedded in the mesh. Wall-rides, gaps, drop-ins, hip-jumps and stair landings emerge from geometry and semantics alone.
- Parkour tracks
- 17
- Success rate, 1000 runs
- 95-100%
- Active jump height
- 1.75 m
- Allmend twin, average
- 9.81 m/s

Closing the loop indoors
Motion-capture parkour isolates the control gap. Indoor racing then swaps motion capture and the ground-truth map for onboard LiDAR odometry and SemMap. Confidence-weighted fusion keeps the map intact through fast turns; without it, the map degrades lap by lap.
- Parkour success
- 80%
- Continuous laps
- 130
- Duration
- 891 s
- Average and peak speed
- 3.54, 5 m/s
- Lap time, real and sim
- 6.85, 6.1 s

One decoder, many places
Segmentation holds under glare, cast shadow and motion blur, and the map captures seesaws, waves and tabletops. The frozen backbone and upsampler are shared across six datasets; only the decoder is trained per dataset, and GrandTour is evaluated zero-shot.
- Backbone
- DINOv3-s, frozen
- Input
- 320 × 512
- Semantic throughput
- up to 90 Hz (30 Hz deployed)
- Map fusion
- 30 Hz

The Trail Library
Procedural, one-directional mountain-bike trails. A cross-section is swept along a 4D path, welded to start and end platforms, filled with skill elements and annotated with semantics in its vertex colors. A curriculum scales the difficulty.
- Synthetic trail
- 46 km
- Skill element types
- 9
- Code
- Isaac Lab PR

Where it still falls
Each snapshot is the moment before a loss of balance. The longest outdoor run lasted 62 s, about 14× shorter than indoors, a fair measure of how much harder a wild forest is.
- A
- Leaving the trail, often after a slip
- B
- Obstacles below map resolution
- C
- Rear-wheel slip
- D
- Trees as walls, grass narrowing the path

Beyond the bicycle
With identical semantic meshes and MDP components, ANYmal-D learns jumps, climbs and wall-runs; only the episode length and the mesh change. SemMap also runs on a Unitree G1 humanoid in RGB-only mode, sharing the frozen backbone and upsampler.
- ANYmal, Allmend twin
- 4.68 m/s, 81%
- Humanoid
- Unitree G1
Multimedia extensions.

Overview of the control and perception framework and its deployment on the UMV, from motion-capture-assisted indoor parkour to high-speed outdoor trail racing.
Full caption
Method. A comprehensive overview of the proposed control and perception framework, alongside its physical deployment on the UMV bicycle robot. The video highlights the system's real-world capabilities, featuring motion-capture-assisted indoor parkour and high-speed outdoor trail racing.

Six autonomous runs completing the kilometer-long Allmend trail, with base velocity and the segmented elevation map overlaid.
Full caption
Autonomous Trail Racing. Six autonomous runs of the UMV completing a kilometer-long mountain-bike trail in Zurich. Video overlays alternate between displaying the robot's base velocity (m/s) and the segmented elevation map (with the traversable trail highlighted in purple). Because the entire trail corridor was annotated as traversable, local path selection emerges naturally from the trained policy rather than following a strictly dictated trajectory. This emergent behavior is demonstrated through several distinct decisions: the robot spontaneously elects to navigate over a seesaw rather than taking an available bypass, and tends to drive alongside narrow technical features (“skinnies”) instead of balancing on top of them. Additionally, during tabletop drops, the system dynamically commits to a descent trajectory based on its approach angle without requiring predefined target points.

130 continuous laps at 3.54 m/s with a generic racing policy; white fleece gives SemMap a visible trail indoors.
Full caption
Perceptive Indoor Trail Racing. The UMV is initialized within the track boundaries and engages the racing controller from a track-stand position. The robot successfully navigates the closed-loop track, ultimately completing 130 continuous laps at an average speed of 3.54 m/s. The deployed racing policy was not specialized for this specific layout, but rather generalized across a diverse set of randomized mountain-bike trails during training. To facilitate indoor testing, a white fleece is utilized to provide high visual contrast, enabling the SemMap pipeline to detect the trail boundaries just as it would in an outdoor environment.

The UMV on 17 simulated parkour tracks, each with a specialized policy, ending every run in a stable track-stand.
Full caption
Simulated Parkour. A demonstration of the TENa framework generalizing across a diverse set of digital twins, highlighting distinct emergent behaviors during parkour tasks. The UMV successfully navigates 17 parkour environments, each traversed using a specialized policy. In every scenario, the robot is initialized in a designated starting zone, follows a virtual but observable track toward the target zone, and concludes the run by decelerating into a stable track-stand.

A policy specialized to a digital twin of the upper Allmend trail averages 9.8 m/s in simulation; a theoretical result, not expected to transfer to hardware.
Full caption
Simulated Allmend trail. The UMV is navigating a digital twin of the upper Allmend mountain-bike trail in Zurich. Telemetry overlays indicate a continuous base velocity, with the robot sustaining an average speed of 9.8 m/s. This is a theoretical result from a policy specialized to the digital twin and is not expected to transfer to hardware.

Four consecutive motion-capture parkour runs: 5.0 m/s into the ramp, 0.4 s airborne, a track-stand within 0.5 s.
Full caption
MoCap-assisted Indoor Parkour. Four consecutive successful deployments of the UMV traversing the indoor parkour course. Entering the ramp at a peak base velocity of 5.0 m/s, the robot achieves liftoff at 3.3 m/s, remaining airborne for 0.4 s. It subsequently re-accelerates to 5.0 m/s over the stairs and decelerates to a stable track-stand within 0.5 s, completing the entire sequence in 8.0 s. Across 10 experimental trials, the system demonstrated an 80% overall success rate.

ANYmal-D on 8 of the parkour tracks at maximum difficulty with the same MDP; not expected to transfer zero-shot.
Full caption
Simulated Parkour with ANYmal. The quadruped robot ANYmal successfully navigates 8 parkour environments at their maximum difficulty level. These environments represent a subset of the tracks previously traversed by the UMV. While the UMV serves as our primary evaluation platform, TENa is platform-agnostic. To demonstrate robust learning generalization across different kinematic morphologies, we applied our MDP formulation to an ANYmal-D quadruped robot. We note that we have not put any effort into style reward tuning and do not expect this policy to transfer zero-shot to the real hardware (e.g., the video reveals harsh knee joint collisions with the environment).

ANYmal-D on the Allmend digital twin with the same MDP; without style tuning its gait is asymmetric.
Full caption
Simulated Allmend Trail with ANYmal. The quadruped robot ANYmal successfully navigates the digital twin of the Allmend mountain-bike trail. While the UMV serves as our primary evaluation platform, TENa is platform-agnostic. To demonstrate robust learning generalization across different kinematic morphologies, we applied our MDP formulation to an ANYmal-D quadruped robot. We note that we have not put any effort into style reward tuning and do not expect this policy to transfer zero-shot to the real hardware (e.g., the video reveals an asymmetric running gait with the right-front leg being locked in).

SemMap from onboard RGB to the semantic elevation map, across environments, with confidence-weighted fusion; up to 90 Hz in isolation, 30 Hz on the robot.
Full caption
SemMap perception system overview. Overview of the SemMap perception system: the semantic pipeline from onboard RGB, running at up to 90 Hz in isolation and at 30 Hz on the robot to match the camera, its fusion with LiDAR geometry into the semantic elevation map, transfer across diverse environments including the zero-shot Grand Tour TRIM-1 sequence, joint semantic and geometric inpainting, confidence-weighted fusion, and rapid adaptation to a new environment. Semantic elevation maps are shown in the rainbow and turbo colormaps, with the trail in pink and red, respectively.
Code, data and citation.
- PerceptionSemMap Real-time semantic elevation mapping with confidence-aware fusion, onboard an AGX Orin. github.com/rai-opensource/sem_map
- SimulationTrail Library Procedural one-directional mountain-bike trails with embedded semantics, for Isaac Lab. github.com/isaac-sim/IsaacLab/pull/6539
- DataDeployment data ROS bags from the Allmend runs, a Foxglove layout, and data with scripts to reproduce the figures. doi.org/10.5281/zenodo.23063816
BibTeX
@misc{jenelten2026trailracing,
title = {Autonomous Trail Racing with a Bicycle Robot},
author = {Jenelten, Fabian and Ishtaweera, Deepana and Garcia, Pablo and
Margolese, Liana and Bogoslavskyi, Igor and Buonocore, Luca and
Migliazza, Jan and Ecins, Aleksandrs and Wollschlaeger, Annika and
Bellicoso, Dario and Nelson, Gabriel and Gawel, Abel and Hutter, Marco},
note = {Under review at The International Journal of Robotics Research},
year = {2026}
}
