How pthread-t/multi-vendor-can-robot-arm works
This is a PySide6 desktop control platform for multi-vendor CAN robot arms. The operator configures a runtime, views robot state, then issues joint or Cartesian targets and planned trajectories; the controller coordinates kinematics, execution and safety while a unified driver translates joint semantics into vendor protocols and CAN transport. Separate UI branches provide 3D visualization, history and diagnostics. The README documents mock, loopback and PCAN modes, four protocol families, and configuration hot-apply. Some wiring is inferred from documented architecture because source excerpts are partial.
Main entry points: robot_controller.py Robot controller · main_window.py Main window · main.py App startup · can_joint_driver.py Joint driver
Components 20
Operator interface
- Main window
app/ui/main_window.py - Joint controls
app/ui/pages/joint_control_page.py - Cartesian controls
app/ui/pages/cartesian_control_page.py - Trajectory controls
app/ui/pages/trajectory_planning_page.py - Diagnostics
app/ui/pages/diagnostics_page.py - State history
app/ui/widgets/joint_history_plot.py - 3D viewer
app/visualization/viewer_3d.py
Robot control
- Robot controller
app/controllers/robot_controller.py - Robot state
app/robot/robot_arm.py - Simulator
app/simulation/simulator.py
Motion computation
- Forward kinematics
app/kinematics/fk.py - Inverse kinematics
app/kinematics/ik.py - Trajectory planner
app/planning/planner.py
CAN execution
- Joint driver
app/drivers/can_joint_driver.py - Protocol adapters
app/drivers/protocols - CAN transports
app/transport
Runtime setup
- App startup
app/main.py - Runtime config
app/runtime/runtime_factory.py
Other components
- Operator
- CAN hardware
Connections 25
- Operator → Main window: uses
- App startup → Runtime config: loads
- App startup → Robot controller: creates
- App startup → Main window: opens
- Main window → Joint controls: hosts
- Main window → Cartesian controls: hosts
- Main window → Trajectory controls: hosts
- Main window → Diagnostics: hosts
- Main window → State history: updates
- Main window → 3D viewer: updates
- Joint controls → Robot controller: sends targets
- Cartesian controls → Robot controller: sends poses
- Trajectory controls → Robot controller: requests paths
- Robot controller → Inverse kinematics: solves poses
- Robot controller → Trajectory planner: plans motion
- Robot controller → Forward kinematics: computes pose
- Robot controller → Robot state: updates state
- Robot controller → Simulator: runs simulation
- Robot controller → Joint driver: dispatches targets
- Joint driver → Protocol adapters: encodes commands
- Joint driver → CAN transports: sends frames
- CAN transports → CAN hardware: exchanges frames
- Robot controller → Diagnostics: provides logs
- Robot controller → State history: provides samples
- Robot controller → 3D viewer: provides pose