This project explores the intersection of digital sensing and robotic fabrication by creating a workflow to link a SICK lidar sensor with a UR-10e robot. The goal of the project was to enable the robot to perceive and interact with its surroundings. Data from the sensor was captured and recorded using the SOPAS Engineering tool, translated via a custom Python script and then processed in Grasshopper. Using the ‘Robots’ plugin, the environmental data was then used to command the robot to perform a delicate and automated task.
The demonstration task was deliberately fussy: find a cup that had been placed anywhere in the sensor’s field of view, work out where it actually was in robot coordinates, and pour into it. Nothing about the cup’s position is hard-coded — move it, re-scan, and the trajectory recalculates.
- SICK SOPASEngineering tool · capture and filter
- PythonCoLa transport protocol · UDP & TCP
- Rhino + GrasshopperRobots plugin · trajectory and control
- Type
- Group project
- Team
- Hrithik Shetty, Bo Schneider
- Collaboration
- TH OWL, Detmold
- Location
- Detmold, Germany
- Course
- TH OWL — MID Computational Design
Getting data off the sensor
The lidar streams over SICK’s native CoLa protocol rather than anything Grasshopper can read directly. Using the sick_visionary_samples package from SICK AG’s GitHub, the script opens the stream, captures frames, and writes them locally as .ply point clouds — a format Grasshopper can import and reason about.
From there the point cloud is filtered down to the object of interest, the largest coherent cluster is isolated, and its centroid becomes a target plane for the robot. The Robots plugin turns that plane into a reachable trajectory, which is checked before anything is sent to the controller.
Stack
- SICK Visionary-S CX
- SOPAS Engineering Tool
- CoLa protocol
- Point clouds (.ply)
- Robots plugin
- UR-10e