A New Software Tool for Generating and Visualizing Robot Self-Collision Matrices
Roshan Klein-Seetharama, Daniel Rakita
TL;DR
This work introduces a Rust/Bevy-based interactive tool that generates and visualizes six shape-type self-collision matrices from a URDF, enabling dynamic inspection and refinement of skip sets for collision and proximity queries. It supports multiple geometric representations (link-level and decomposition-level) and outputs six JSON/YAML matrix pairs, with proximity statistics such as $d^{\min}_{i,j}$, $d^{\max}_{i,j}$, and $d^{\text{mean}}_{i,j}$ computed over $100{,}000$ samples. The evaluation across UR5e, XArm7, and B1 demonstrates substantial speedups in both collision and proximity queries, with accuracy improving at higher representations, and a case study shows how interactive refinements can correct conservative MoveIt outputs. The tool complements existing workflows, offers URDF-compatible integration, and provides a practical pathway to faster, safer planning and simulation in robotics. Overall, the approach delivers a flexible, transparent preprocessing layer that balances efficiency and precision through interactive, shape-aware self-collision matrices.
Abstract
In robotics, it is common to check whether a given robot state results in self-intersection (i.e., a self-collision query) or to assess its distance from such an intersection (i.e., a self-proximity query). These checks are typically performed between pairs of shapes attached to different robot links. However, many of these shape pairs can be excluded in advance, as their configurations are known to always or never result in contact. This information is typically encoded in a self-collision matrix, where each entry (i, j) indicates whether a check should be performed between shape i and shape j. While the MoveIt Setup Assistant is widely used to generate such matrices, current tools are limited by static visualization, lack of proximity support, rigid single-geometry assumptions, and tedious refinement workflows, hindering flexibility and reuse in downstream robotics applications. In this work, we introduce an interactive tool that overcomes these limitations by generating and visualizing self-collision matrices across multiple shape representations, enabling dynamic inspection, filtering, and refinement of shape pairs. Outputs are provided in both JSON and YAML for easy integration. The system is implemented in Rust and uses the Bevy game engine to deliver high-quality visualizations. We demonstrate its effectiveness on multiple robot platforms, showing that matrices generated using diverse shape types yield faster and more accurate self-collision and self-proximity queries.
