Skip to content
ROS 2 + LiDAR

Closing the loop from
browser to robot cell

Reference material, and quarantined. The ROS 2 bridge in this repository refuses to move anything — execute_plan and estop raise — because it predates the safety gate. A ROS 2 integration would be a RobotAdapter that passes the contract suite, like the Universal Robots one. None has been written.

A palletizing cell alongside its digital twin, the simulated arm mirroring the physical one
Illustration, not a Palletizer OS installation — there are none. What is real: the browser builds the same plan artifact as the Python package, and scripts/verify_engine_parity.py proves it byte for byte in CI. The ROS 2 node and the LiDAR loop below are reference material; neither has run against hardware, and the bridge refuses to move.

ARCHITECTURE

The ROS 2 node wraps the pre-gate PalletiserOrchestrator and the experimental ConstructionPalletOptimizer. Both are outside the supported path: the orchestrator is a quarantined demo and the construction planner is experimental. LiDAR perception is a design intention, not working code.

LiDAR perception layer (reference)
  • Point-cloud processing (Open3D)
  • Pallet pose estimation on uneven surfaces
  • Load-shift detection between picks → safety pause + re-plan
  • Floor-flatness mapping for tall stacks
  • Fallback to 2D LiDAR / depth camera
ROS 2 integration (reference)
  • rclpy node with action servers for long-running missions
  • Bridge stubs for common arms and mobile bases (nav2)
  • Trajectory / MoveIt goal generation from plans
  • Telemetry back to the gateway / on-prem orchestrator
  • Safety interlocks tied to perception confidence + stability score

ILLUSTRATIVE USAGE

Target shape of the interface once wired into a ROS 2 workspace. See ros2_integration/README.md for what actually runs today versus what is still stubbed.

# In a ROS 2 workspace, after adding ros2_integration to your build
ros2 run ros2_integration palletizer_construction_node \
  --ros-args -p robot_type:=kuka -p use_lidar:=true

# Trigger a plan from any ROS node or WMS bridge
ros2 topic pub /palletizer/command std_msgs/String \
  "data: '{\"action\":\"optimize_and_execute\",\"skus\":[{\"sku_id\":\"DRY-4x8-HALF\"}],\"quantities\":[32]}'"
Full source in ros2_integration/. Digital-twin and managed connectors are on the roadmap, not available today.