R
Link preview
Our arm's control code passed months of sim then drifted the first time it lifted real weight. Need some insights
So we spent the better part of 4 months with our arm's motion and control stack running clean in sim. like flawless. every trajectory, every edge case we could script, green. a fair chunk of that code was AI-assisted. we'd describe the behavior we wanted, it gave us something that looked right, simulated right, and passed review. nobody on the team would say they fully wrote it, but it worked, so who cared. then we put it on the physical arm with a real payload and it drifted. not a crash, nothing dramatic. the end effector just slowly ended up a few mm off where the sim swore it would be, and it got worse under heavier load. once you add the real latency and the sensor noise the sim was too clean to ever reproduce, the behavior wasn't the behavior we tested. it was close. close is the problem. what actually rattled me is that reading the code would never have caught this. it's all locally plausible. each block makes sense on its own. the gap only exists where the generated logic meets real timing and a real load, and a simulator that passes everything is exactly where that gap hides. then the worse thought. we've shipped smaller motion changes the same way for a while, sim-pass and call it done, never put a real-hardware check in front of them because sim was green and we trusted it. i don't actually know those were fine. i just know they didn't fail loud. so for the people running real arms here, what's actually in your loop between sim-pass and trusting it on the hardware? is any of that automated for you, or is it still someone standing there watching the real thing move submitted by /u/executivegtm-47 [link] [Kommentare] reddit.com · reddit.com ↗
So we spent the better part of 4 months with our arm's motion and control stack running clean in sim. like flawless. every trajectory, every edge case we could script, green. a fair chunk of that code was AI-assisted. we'd describe the behavior we wanted, it gave us something that looked right, simulated right, and passed review. nobody on the team would say they fully wrote it, but it worked, so who cared. then we put it on the physical arm with a real payload and it drifted. not a crash, nothing dramatic. the end effector just slowly ended up a few mm off where the sim swore it would be, and it got worse under heavier load. once you add the real latency and the sensor noise the sim was too clean to ever reproduce, the behavior wasn't the behavior we tested. it was close. close is the problem. what actually rattled me is that reading the code would never have caught this. it's all locally plausible. each block makes sense on its own. the gap only exists where the generated logic meets real timing and a real load, and a simulator that passes everything is exactly where that gap hides. then the worse thought. we've shipped smaller motion changes the same way for a while, sim-pass and call it done, never put a real-hardware check in front of them because sim was green and we trusted it. i don't actually know those were fine. i just know they didn't fail loud. so for the people running real arms here, what's actually in your loop between sim-pass and trusting it on the hardware? is any of that automated for you, or is it still someone standing there watching the real thing move submitted by /u/executivegtm-47 [link] [Kommentare]
Comments