I think we can use three.js raycasting to find normals to a mesh, and then move past the mesh surface by some distance along the normal. This distance could be the radius of a grinding tool for example. This demo does /exactly/ that:
https://sbcode.net/threejs/raycaster/
So the steps are
Import a mesh representing some part in some compatible format. STL or something else.
Register the base position of the Mesh in the simulator to match the position of the real part near the robot.
Draw a line or a series of lines over the mesh, via the raycasting system (see demo)
Extend those lines by the radius of the tool
Use those points to form a path
Translate that path into joint space (optimized by Tom)
Follow the path with the simulated robot, checking for collisions via three.js
Follow the path with the real robot, grinding off the flash on the part.
I think we can use three.js raycasting to find normals to a mesh, and then move past the mesh surface by some distance along the normal. This distance could be the radius of a grinding tool for example. This demo does /exactly/ that: https://sbcode.net/threejs/raycaster/
So the steps are