All projects

UR-Robot

Grasshopper + SICK Lidar sensor

A Universal Robots UR-10e arm being guided by a human hand
Fig. The Universal Robot UR-10e in the TH OWL robotics lab

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.

  1. SICK SOPASEngineering tool · capture and filter
  2. PythonCoLa transport protocol · UDP & TCP
  3. 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
Process spread: the sensor-to-robot communication diagram, the SOPAS visualisation and filtering tool, the Python capture script, the Grasshopper robot control graph, and a comic strip of the finished demonstration
Fig. System communication, point-cloud capture and filtering, and the Grasshopper control logic
Fig. The robot locating and serving a cup from live sensor data