Space aware robotic path planner
  • Python 83%
  • Nix 17%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-14 07:15:58 +02:00
ikpy_nix sync 2026-02-27 16:51:31 +01:00
ur_rtde_nix sync 2026-02-27 16:51:31 +01:00
ursim add tcp plot 2026-10-14 07:15:58 +02:00
.envrc sync 2026-02-27 16:51:31 +01:00
.gitignore sync 2026-02-27 16:51:31 +01:00
plot_tcp_motion.py add tcp plot 2026-10-14 07:15:58 +02:00
read_robot_state.py remove unnecessary cli arguments 2026-03-09 22:22:41 +01:00
read_target_position.py add tcp plot 2026-10-14 07:15:58 +02:00
README.MD update readme with information about URSIM 2026-03-09 22:12:31 +01:00
shell.nix sync 2026-02-27 16:51:31 +01:00

Robot collision prevention system

Overview

Goals

  • Program execution - Robot executes the provided program in finite time or declares a position unreachable within the current constraints.
  • Spatial awareness - System detects possible obstacles inbetween movements and stops execution on expected collision.
  • Dynamism - System reacts in a sufficiently real time manner, to prevent collisions.

Inputs

Outputs

Constraints

  • A initialization period during which the statistical models are built involves deliberately built robot programs which allow the statistical models the be trained to learn the expected trajectories and detect possible collisions.

TOF sensor data interpretation

  • Data from a single 8x8 TOF sensor matrix is treated as a single array of 64 values.
  • For n TOF sensors covering the production area, the vectors are concatenated into a single array \text{TOF} of length n \cdot 64.
  • Deliberately not converting data into a point cloud based on the distance and FOV of each sensor. Exact computation would be expensive.

Collision detection

  • The expected trajectory of all joints is built using a statistical model based on the immediate position of all axes and the current target positions.
  • The collision detection model predicts if the predicted trajectory leads to a collision with the robot. (This I dont really understand how machine learning could be used, because the robot program has to be automated. Maybe self collisions? But that might not be enough.)

Implementation

The UR robot exposes a real time data exchange (RTDE) interface in C++ and provides a Python binding.

  • The UR robot requires a special robot program (UR script) to be run on the controller to use RTDE. How to run user defined programs and RTDE at the same time? UR documentation provides a possible solution, where the UR script is run in a separate thread of the main program.

  • There can be multiple RTDE read-only connections in parallel. This can be used to have one connection only for reading axis positions and current target position.

  • To be able to stop the robot externally, we either have to

Robot simulation

  • The UR5 robot can be simulated using a docker container. A simple docker-compose.yml exposing the necessary is available.
  • Once running, the web VNC to the programming pendant is accessible via http://localhost:6080/vnc.html
  • RTDE communication is working.
  • Using the provided rtde_control.script allows parallel control via regular UR program and external data access using RTDE.