Skip to content

Architecture

Nishendra Singh edited this page Sep 16, 2026 · 4 revisions

For developers. Paths are relative to the Python package freecad/robotics/.

Core model

  • A robot is a standard Assembly-workbench assembly in a Robot FeaturePython wrapper ("Robot_FPO"). The Robot class is in App/rbt_robot.py. The ViewProvider is in Gui/vp_rbt_robot.py.
  • The model is single-document: the parts, the Robot_Assembly, the Robot object, and the joints all live in the active document. The wizard merges part files into it with mergeProject.
  • The Define Robot task panel (Gui/taskpanel_rbt_creator.py) contains no FreeCAD mutation logic. It sends all document changes to the UI-free RobotCreator core: App/rbt_creator.py plus rbt_creator_asm.py, rbt_creator_jnt.py, rbt_creator_geom.py.
  • The base/ground and placement-sync logic is in App/rbt_placement.py. Each robot roots at an editable BaseFrame coordinate system. See Joint Model.
  • The toolbar is a global custom toolbar. init_gui.py makes it from parameters. There is no separate workbench class. The commands live in Gui/rbt_commands.py.

Package layout

Path Content
init_gui.py Registers the commands, makes the global toolbar
rbt_locator.py Resource locator (package root)
App/rbt_api.py Public scripting API. See [[Scripting API
App/rbt_robot.py Robot FPO class, is_robot, all_robots
App/rbt_creator*.py UI-free robot construction core
App/rbt_placement.py BaseFrame, grounding, placement sync, base_link, chain_root
App/rbt_kine*.py, backends/ Kinematics. See Kinematics
App/rbt_tool.py Tool FPO with TCP
App/rbt_traj.py, App/rbt_traj_types.py Trajectory FPO, waypoint types
App/rbt_global_constants.py Constants (DEFAULT_KIN_LIB, PIP_HINTS, names)
App/rbt_helpers_log.py Log helpers
App/rbt_helpers_math.py, App/rbt_helpers_frames.py Math and frame helpers
Gui/rbt_commands.py Toolbar command classes (RBT_*)
Gui/taskpanel_rbt_creator.py Define Robot wizard
Gui/taskpanel_rbt_animate.py Joint-jog panel (AnimationController = logic, AnimationTaskPanel = Qt UI)
Gui/taskpanel_rbt_multicontrol.py Multi-robot panel (uses the same jog widget)
Gui/taskpanel_rbt_tool.py Tool and TCP panel
Gui/g_rbt_traj_*.py Trajectory panel, waypoint table, players, ViewProvider
Gui/rbt_helpers_ui.py UI helpers
Gui/rbt_fc_observer.py Document and selection observers
resources/ui, resources/icons Qt .ui forms and SVG icons

Transactions

Each panel opens a document transaction at the start. OK commits the transaction. Cancel discards it. A canceled wizard makes no change to the document.

Clone this wiki locally