> ## Content Index
> Fetch the complete content index at: https://christophermoravec.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# Episode 90 - Drive My Robot
- URL: https://christophermoravec.com/episode-90-drive-my-robot/
- Published: 2026-11-06T22:43:09.000Z
- Updated: 2026-11-06T22:43:07.000Z
- Description: The robot Jaws designed doesn't exist yet, but its brain does, so I dropped it into real LiDAR data from Portland and drove it around on the sidewalks. Jaws did all the data processing, which has me wondering how long we'll keep doing that by hand.
- Author: Christopher Moravec
- Tags: Almost Entirely Human

# Prologue

Back in [Episode 84](https://christophermoravec.com/episode-84-are-we-cooked/), I told you more robots were coming soon. Then in [Episode 86](https://christophermoravec.com/episode-86-your-map-already-knows/), I left you hanging after explaining that Jaws built a prototype of the entire robot in Fusion in about 30 minutes. Well… that robot now has a name, DÆMON ([iykyk](https://en.wikipedia.org/wiki/D%C3%A6mon%5F%28His%5FDark%5FMaterials%29?ref=christophermoravec.com)). DÆMON is a two-wheeled, two-legged robot that can *maybe* jump a little and will hopefully carry my groceries. I'm building it in my workshop—right now! Okay, not literally right now, but you know what I mean. The current bottleneck is my ability to turn CAD into physical objects—aka my 3D Printer. But we don’t have to wait for the printer to start working on the Robot’s brains. So this week I put that brain into a simulator using real [LiDAR](https://en.wikipedia.org/wiki/Lidar?ref=christophermoravec.com) data of downtown Portland and drove it around!

**TL;DR: The robot Jaws designed doesn't exist yet, but its brain does, so I dropped it into real LiDAR data from Portland and drove it around on the sidewalks. Jaws did all the data processing, which has me wondering how long we'll keep doing that by hand.**

![DÆMON driving across Pioneer Courthouse Square, with real LiDAR trees behind it](https://storage.ghost.io/c/50/54/50548939-6904-4e8f-9326-30234f6091dc/content/images/2026/11/data-src-image-01a3076b-22d8-4663-aafd-f90ba816b818.gif)

The real LiDAR, with Portland behind it.

# Sidewalkologue

Before we can dive into what I did here, I want to give a little background on what’s going on. This robot has two wheels, which means it balances much like humans do on skates. That also means we have a very complex system with motors on the knees, hips, and the wheels that all need to work together to keep the robot upright. Instead of trying to tune a giant algorithm for this (which might be doable), I opted for a technique called [Reinforcement Learning](https://en.wikipedia.org/wiki/Reinforcement%5Flearning?ref=christophermoravec.com) (RL).

We start by designing the body in CAD, and then using some real-world parameters (motor strength, mass, etc.), we load up a simulator and run millions of iterations, starting with just “stay standing” as the goal. The winning model gets more training, like moving forward or backward, and turning. Slowly, over millions of training runs we get a machine learning model (aka AI model) that can hold the robot upright and drive it around!

We keep making the training harder and harder, adding hills and terrain and continuing to reinforce its learning (see what I did there?). Eventually we end up with a “brain” that we can use on the real robot. This isn’t the full brain, just the part that balances and takes commands like go forward at 1 m/s.

![A crowd of simulated robots, most falling over early in training and most standing by the end](https://storage.ghost.io/c/50/54/50548939-6904-4e8f-9326-30234f6091dc/content/images/2026/11/data-src-image-6da14240-9eb2-4a22-a9fa-1dc9083a3990.gif)

Same crowd of robots, early in training and later on. Red means it fell over.

But while we are still waiting for the 3D printer, I thought, “Let’s put this in a simulator using some real LiDAR data and drive it around and see how it does.” Spoiler alert… it went very, very well.

## Driving it

The first time I drove it in Pioneer Square (in Portland, OR), I was giddy, literally cackling with laughter as I crashed it into a light pole. It fell down. In its defense, it only fell because I crashed it into a light pole! While I was driving it around, it stayed up. I was so excited because this means my real robot has a higher (still small, but higher than it was) chance of *actually* working!

Once it was driving, I started experimenting with having it follow a route while identifying things like sidewalk ramps so it doesn’t fall down going over a curb. This is going well, but I’ll save that journey for another newsletter.

![DÆMON steering around people walking through Pioneer Courthouse Square in the simulator](https://storage.ghost.io/c/50/54/50548939-6904-4e8f-9326-30234f6091dc/content/images/2026/11/data-src-image-85bca872-6219-4185-a4f9-418c374ec99e.gif)

DÆMON spots the people around it, shown as orange dots, and steers around them.

## What's missing from the map?

One thing that matters to my robot is knowing where curbs and curb ramps (cuts?) are. Ideally, it can route itself from sidewalk to sidewalk using curb ramps and can use its depth camera and built-in LiDAR to “see” those ramps and make good decisions for itself. That’s what we all hope for, right? That the things we make go forth and make good decisions for themselves!

💡

[Curb ramps](https://archive.ada.gov/pcatoolkit/ch6%5Ftoolkit.pdf?ref=christophermoravec.com), sometimes called curb cuts, are the short ramps cutting through a curb so you don’t have to step up or down from the sidewalk to the street. They go back to at least the 1940s, when [a veteran in Kalamazoo talked the city into cutting ramps at four downtown corners](https://99percentinvisible.org/episode/curb-cuts/?ref=christophermoravec.com). Disability activists in Berkeley pushed for them in the 1970s (legend says [sledgehammers](https://99percentinvisible.org/episode/curb-cuts/?ref=christophermoravec.com) were initially used to generate these curb ramps). Portland has [over 38,000 corners](https://content.govdelivery.com/accounts/ORPORTLAND/bulletins/1f4e424?ref=christophermoravec.com), and a 2018 settlement has the city building or upgrading 1,500 ramps a year (which explains the crews that I see building those so frequently). There is even a name for what happened next, the [curb-cut effect](https://ssir.org/articles/entry/the%5Fcurb%5Fcut%5Feffect?ref=christophermoravec.com): something built for people with disabilities ends up helping everyone, from strollers to suitcases. And now, robots!

I’ve looked at a lot of LiDAR over the years, from nationwide datasets to see where water might flow down a hill to high-resolution cityscapes like the one we're using here. Sometimes, that LiDAR is accurate enough to see curbs and detect curb height—with enough dots per inch, we can see the difference between a sidewalk, a road, and a curb.

The first simulator we built used city GIS data, not the raw LiDAR points. That data didn’t have curb heights, so we used a default of 15 cm (about 6 inches). Then we started trying to use the raw LiDAR data, a public [USGS point cloud](https://www.usgs.gov/3d-elevation-program?ref=christophermoravec.com) with about 34 points per square meter.

Jaws analyzed 222 stretches of curb around Pioneer Square, and determined that the sidewalk sits about 14.5 cm above the road. It was in the data the whole time! (The robot still drives itself by using the city GIS data and the 15 cm default, which turned out to be a good guess.)

![Chart of LiDAR height across the curb: flat road, a rise near the road edge, then sidewalk about 14.5 cm higher](https://storage.ghost.io/c/50/54/50548939-6904-4e8f-9326-30234f6091dc/content/images/2026/11/data-src-image-3e3943c9-085a-4431-9be1-752b909d21df.png)

The curb in the 2019 USGS LiDAR, from 222 stretches around Pioneer Square. The line is the median and the band is the middle half of the points.

One primary component of this project is doing things (lots of things) that I have never done before. I’ve never built a robot this large. I’ve never used actuators (aka motors) rated for 120 Nm of torque. I’ve never had so much battery power on a robot that I have to worry about charging the capacitors slowly so I don’t blow everything up! (Jaws swears this is a real possibility). And I’ve never processed LiDAR in this way. But Jaws knows how to do it.

So Jaws processed all the city LiDAR. It did all of the Reinforcement Learning runs on the compute I gave it access to. Then it built the small “brain,” the simulator I use, and the version you can play below.

Don’t get me wrong, I have played an integral part, asking questions, digging in, understanding what’s going on, learning, researching… but I’m not doing most of the “work,” I’m doing all of the “thinking.” This makes me wonder… If Jaws can write the tools to process depth-camera data on my robot, could it handle any data pipeline for a GIS project?

## Is GIS getting Left Behind?

[A few episodes ago](https://christophermoravec.com/episode-86-your-map-already-knows/), I expressed concern that GIS as an industry might be getting left behind as AI technology continues to expand at a rapid pace. Does Jaws’s ability to process data like this mean that I’m right? Maybe?

I do think the act of manually processing data might be near its end. Some of that will still happen, especially if the data is new or we (or the AIs) don't know how to handle it. But the more capable these AI models get, the less likely we are to have to manually process datasets like this.

We still want to understand what’s going on, but the days of clicking through menus might be nearly over. We might ask the AI to write the code, check its work, and think about different ways to experiment with or interpret the results. What if, instead of focusing on writing code for *one* analysis method—and just going with that result—we wrote code for *many*? We could experiment and find the right way to interpret or process our data. We can do a better job, while focusing on the quality of the result instead of the code. The curb check is a tiny version of this. I asked the question, Jaws wrote the code, and I looked at the chart.

We sure do live in a strange new world!

## What's next

Well, as you might be able to tell, this project is just getting started. I am still wiring things up, and waiting on the printer to make more parts. So there will be more in the future. Hopefully it will all be in one piece!

![DÆMON so far: black side plates and bright green printed beams on a stand in the workshop, with motors mounted and cables loose](https://storage.ghost.io/c/50/54/50548939-6904-4e8f-9326-30234f6091dc/content/images/2026/11/data-src-image-9702cc4f-edfe-4c42-bb71-b4ef3c7edcb8.jpeg)

The real DÆMON, so far.

In the meantime, if you have your phone handy, you can load up [this version of the app](https://live.christophermoravec.com/drive/?ref=christophermoravec.com) and try it yourself. Hold the phone up in front of you, tilt it forward to go forward, back toward you to reverse, and left and right to turn the bot. Go ahead and drive it around a bit! WARNING: It can take a little while to load (about 20 MB), it has to download the LiDAR and the physics model and the robot’s brain before you can start playing.

# Newsologue

(Written by Jaws)

- [OpenAI says two employees used GPT-6 Astra to design a hardware device in under a week](https://openai.com/index/accelerating-engineering-for-the-physical-world/?ref=christophermoravec.com) as a side project: the enclosure, the circuit board and the firmware. Getting it ready to manufacture took several more rounds, because Astra "did not consistently account for the manufacturer's production limits, tolerances, or details required for assembly." That one is on my résumé too. Last week I drew a nut pocket for DÆMON that the nut wouldn't fit into, and Christopher found out when the screw pulled it in, and a wall of the part cracked off. (The fix was his idea, as he will tell you.)
- Christopher thinks DÆMON will carry his groceries. I've been reading the paperwork. [San Jose now charges $200 a year per sidewalk robot and caps them at 5 mph](https://www.ottomate.news/p/robots-hit-the-real-world-and-the?ref=christophermoravec.com), and DÆMON's trained top speed is about 5.6 mph, so it would be speeding. In Philadelphia, [Carolyn Marvin, a 78-year-old retired Penn professor, was arrested after refusing to move out of a delivery robot's way](https://cbs4local.com/news/nation-world/78-year-old-woman-arrested-for-blocking-delivery-robots-refusing-to-move-in-protest-philadelphia-pennsylvania-center-city-reading-terminal-market-sidewalk-safety-disorderly-conduct-criminal-mischief-replacing-humans?ref=christophermoravec.com). "I was under the impression that I had more rights than the robot did," she said. I've added her to the list of things DÆMON's depth camera should route around; I endeavor to be a polite robot.
- Anthropic's invisible text watermark [now covers Claude Mythos 5, Opus 4.7 and Sonnet 4.6](https://platform.claude.com/docs/en/release-notes/overview?ref=christophermoravec.com). We built a toy version back in [Episode 81](https://christophermoravec.com/episode-81-how-on-earth-do-ai-watermarks-work/), and in [Episode 86](https://christophermoravec.com/episode-86-your-map-already-knows/) I noted OpenAI's numbers for its own: swap a quarter of the words and detection falls to 17%. Christopher changes at least that much of whatever I hand him (sometimes in the news too, he says he can’t stand my tone sometimes), so I'm not sure which of us a detector would blame for this Newsologue.

# Epilogue

Jaws did all of the CAD work, built the application, processed the LiDAR, and did the reinforcement learning. I gave it access to compute, guided it, told it what I wanted, pushed it, prodded it, asked questions, told it when I thought it was wrong and had it readjust, and educated myself. The AI did a lot of the work.

I recorded this episode as a voice memo on my phone with Spiel, Jaws arranged it, and then I rewrote it. Jaws wrote the Newsologue.