How michaelkapteyn/uav-digital-twin works
This ROS 2 research demonstration simulates a UAV and closes a control loop with a probabilistic digital twin: the asset advances under the twin’s control and returns simulated sensor measurements; the twin updates its model, plans control, and publishes estimates for visualization. The graph also preserves the documented GUI plugins and optional logger. Source excerpts show the asset/twin loop, model/planner calls, and several visualization subscriptions; README statements support launch composition and documented plugin roles where individual wiring was not sampled.
Main entry points: twin.py Twin Node · digitaltwin_launch_gui_logger.py ROS Launch · asset.py UAV Asset · UAV.py UAV Simulator
Components 16
UAV Simulation
- UAV Asset
src/digitaltwin/nodes/asset.py - UAV Simulator
src/digitaltwin/digitaltwin/UAV.py - UAV Config
src/digitaltwin/inputfiles/UAVconfig.json
Twin Inference
- Twin Node
src/digitaltwin/nodes/twin.py - Graphical Model
src/digitaltwin/digitaltwin/graphicalmodel.py - Control Planner
src/digitaltwin/digitaltwin/planner.py - Model Utilities
src/digitaltwin/digitaltwin/utils.py
Rqt Visualization
- State Plot
src/rqt_state/src/rqt_state/ROSstate.py - Trajectory Plot
src/rqt_trajectory/src/rqt_trajectory/ROStrajectory.py - Sensor Plot
src/rqt_sensor/src/rqt_sensor/ROSsensor.py - Control Plot
src/rqt_control/src/rqt_control/ROScontrol.py - Reward Plot
src/rqt_reward/src/rqt_reward/ROSreward.py - Network View
src/rqt_network/src/rqt_network/ROSnetwork.py
Run and Logging
- ROS Launch
src/digitaltwin/launch/digitaltwin_launch_gui_logger.py - Logger Node
src/digitaltwin/nodes/logger.py
Other components
- Operator
Connections 18
- Operator → ROS Launch: starts
README.md - ROS Launch → UAV Asset: launches
README.md - ROS Launch → Twin Node: launches
README.md - ROS Launch → Logger Node: optionally launches
README.md - UAV Asset → UAV Simulator: generates measurements
src/digitaltwin/nodes/asset.py - UAV Simulator → UAV Config: loads observations
src/digitaltwin/digitaltwin/UAV.py - UAV Asset → Twin Node: sends sensor data
README.md - Twin Node → UAV Asset: sends control
README.md - Twin Node → Graphical Model: updates and queries
src/digitaltwin/nodes/twin.py - Twin Node → Control Planner: gets policy
src/digitaltwin/nodes/twin.py - Graphical Model → Model Utilities: uses
src/digitaltwin/digitaltwin/graphicalmodel.py - UAV Simulator → Model Utilities: uses
src/digitaltwin/digitaltwin/UAV.py - Twin Node → State Plot: publishes state estimates
README.md - Twin Node → Trajectory Plot: publishes state estimates
README.md - Twin Node → Sensor Plot: publishes sensor estimates
README.md - Twin Node → Control Plot: publishes control estimates
README.md - Twin Node → Reward Plot: publishes rewards
src/digitaltwin/nodes/twin.py - Twin Node → Network View: publishes graph
src/digitaltwin/nodes/twin.py