Lab 1 · Hello Racer

Welcome to the GOAT Racer Labs

The GR3: depth camera on its mast, lidar, Jetson, chassis
// The GR3. Depth camera on the mast, lidar antennas behind it, Jetson with the fan.

A real robot car, and everything it takes to make it drive itself. Under the shell: an NVIDIA Jetson for the brain, a RealSense depth camera and lidar for the eyes, a VESC for the muscle - all speaking ROS2, and trained in NVIDIA Isaac Sim through a true sim2real pipeline (train in the simulator, drive the real car).

These labs are the whole climb: drive it, teach it to see, put your own code on the wheel, then train a policy (a neural network that drives the car) without you at the wheel. Every lab is three tabs - top right of this page ↗ Read is the manual (you are here), Play is the interactive part (here: drive the simulated car), and Code is real Python, edited and run in your browser. No order is enforced - pick any lab from Labs.

The same lab code runs everywhere: on the car, in the cloud, and - for most of the intro labs - right in your browser. Nothing you write is sent anywhere.

GOAT Racer system overview: Jetson Orin over USB to the RealSense camera and the planar lidar, and to the VESC motor controller that drives the Traxxas chassis; a LiPo battery, DC-DC bus, RF kill switch and low-voltage cutoff on the power side
// How it is wired. The Jetson talks USB to the camera, the lidar and the VESC. The VESC drives the motor and steers the servo. The power side is the battery, the DC-DC bus, the RF kill switch and the low-voltage cutoff.

Safety First

Three rules cover almost everything:

  • Read the Traxxas safety sheet in the box. It covers the chassis, the motor, the charger and the battery pack. Everything below adds to it, nothing replaces it.
  • Do not over-charge or over-discharge the pack. Charge with the balance charger on its LiPo setting and stop at the cell limit. Stop driving when the low-battery warning sounds - the cutoff below is the last line, not the plan.
  • Unplug the battery when you plan on storing the car for longer than 24 hours. The low-voltage cutoff saves the pack during a run, not on the shelf.

The RF kill switch is your hand brake: a radio remote, independent of wifi and of all the software - it works when everything else is stuck. A arms the car (rising beep pair), B brakes it (falling pair). The robot software only reports ready with the switch armed. Keep the remote in your hand whenever the car can move; B is the answer to everything unexpected.

The RF kill switch remote on its red lanyard: two buttons, A above B
// The RF kill switch on its lanyard. A arms, B brakes. It talks straight to the car's power bus, no wifi, no software.

Teleop

The car boots in teleop mode, and the F710 has a deadman: nothing moves unless you hold it.

You need: battery plugged in, kill-switch remote in hand, F710 with its front switch on X.

LB RB LT behind RT behind Y X B A X•D DEADMAN - hold to drive (sticks preset) left stick Y = throttle right stick X = steering D-pad ◀▶ = preset: sticks / triggers A = deadman (triggers preset) X / Y / B = motor mode (current / eRPM / duty) front switch: X = XInput (required)
// The car listens to the F710 only in teleop mode, and only while a deadman is held.
  1. Power on. Wait for the boot beeps.
  2. Test the kill switch: B brakes (falling pair), A arms (rising pair).
  3. Pick a preset with the D-pad: left = sticks, right = triggers.
  4. Hold the deadman - LB (sticks) or A (triggers) - and drive.
  5. Release the deadman, or lose the link, and the car coasts with centered steering.

Stay within 10 feet of the car - past that the F710 link drops and the car coasts.

Try it on the simulated car: arrow keys / WASD, or an F710 on this computer - same map.

Battery Care

  • Warning - the battery is getting low: three mid beeps when stopped, three long high chirps while driving, repeating. Finish the run and charge.
  • Cutoff (LVC) - the battery is empty: drive cuts on the spot and the car beeps low-high-low every 5 seconds until power-off. Steering still works; drive does not.
  • Both are automatic and battery-driven; the kill switch above is separate and manual.

On the bench, for long stints, power the Jetson from its own adapter (unplug the barrel jack from the battery harness, plug the adapter in). The VESC has its own switch; leave it off unless you need the motor.

The car talks in beep patterns - learn these six:

Boot OK (armed, battery good)rising triple, pause, low-high
Kill switch armedrising pair
Kill switch disarmedfalling pair
Robot software readylow-low-high
Battery warningthree mid beeps stopped; three long high chirps driving
Battery cutofflow-high-low, every 5 s until power-off
PHOTO: battery bay + connector; barrel jack swap (wishlist P2)

Connect and Configure

  1. Out of the box the car broadcasts its own access point: goat-racer, password goatwifi123. Join it and open http://192.168.50.1 - the dashboard. (No internet while joined - fine for driving.)
  2. To keep internet while you work, join the car to your network instead (settings, Wi-Fi Network). Then find it at goat-<name>.local. If nobody reaches the dashboard over wifi within 15 minutes of boot - venue networks often isolate clients - the car falls back to its own AP, so you can always get to it.
The racer dashboard: identity, health chips, vitals, strategy cards
// The dashboard: your racer's name, health chips, vitals, and the strategy cards. Teleop is the first card.

The gear icon opens settings. Set these first:

  • Robot name - names everything: the Wi-Fi it broadcasts (goat-<name>) and the address you visit. Do this first if two cars are in the room.
  • Company / school and team - lap results and everything you build get credited to the team.
  • Wi-Fi password - for the car's own access point. Applies on the next restart; everyone rejoins with the new one.
  • Racer color - the whole dashboard wears it, so you always know which car you are on.
  • ROS_DOMAIN_ID (under Advanced) - keeps cars from hearing each other. Give every car in the room a different one.
Settings: name, team, Wi-Fi password, color, and network join
// Settings: name it, claim it for your team, pick its color, and put it on your network.

The Whole Loop

Sim to real flow: a digital twin of the car trains in simulation on a workstation or cloud GPU running Isaac Sim and Isaac Lab; the ONNX policy network goes to the Jetson Orin on the real car, which runs observation, inference and action
// Sim to real. The digital twin trains on a GPU in Isaac Lab. The trained policy is exported as an ONNX network and sent to the Jetson, where it turns lidar observations into steer and drive. That loop is the whole course.

Follow the White Rabbit

The first rabbit hole: where robots like this one come from.

  • Shakey the Robot - the first robot that looked at the world and planned what to do (1966). It needed a room of computers and shook so badly it earned the name. Your car runs the same idea, and it fits in your hands.
  • What is an AMR? - the family your racer belongs to: robots that sense, decide, and move on their own.

// Next: the Vision labs. They build toward teleop obstacle avoidance - your code pulling the steering while you drive.

Hints
Hint 1: the car does not move

Click the sim once so the page has keyboard focus. Then hold the arrow keys or WASD. On a gamepad, the car only listens while you hold LB (the deadman).

Hint 2: the Code tab prints red text

That is a traceback: Python telling you where it stopped. Read the last line first (the error name), then the line number above it. Here it is a SyntaxError on the throttle = ? line: the ? has to be a number. Put 0.3 there and hit Run.

Hint 3: make it your own

Every steer value in the tuple is already legal, so play with the plan: negate the numbers to swing the other way, repeat the tuple to drive the S twice, or add 0.75 and 1.0 at the end to steer harder. Keep every value inside [-1, 1] - the real API refuses anything outside it.