Skip to content

Software Architecture: File Structure and Organization

Kaelin Laundry edited this page Aug 25, 2019 · 2 revisions
.
├── README.md
├── aruw_common                                 launchfiles and common util scripts
│   ├── CMakeLists.txt
│   ├── launch
│   │   ├── dev.launch                          launchfile: only vision tracking
│   │   ├── full.launch                         launchfile: all nodes but without automatic restart
│   │   └── prod.launch                         launchfile: all nodes with automatic restart
│   ├── package.xml
│   └── src
│       └── common_utils.py                     utilities for all nodes
├── aruw_msgs
│   ├── CMakeLists.txt
│   ├── msg
│   │   ├── AlignCompleteMessage.msg
│   │   ├── AlignControlMessage.msg
│   │   ├── AlignRequestMessage.msg
│   │   ├── AutoAimDataMessage.msg              message: data for turret aim at plate target
│   │   ├── AutoAimRequestMessage.msg           message: request to begin turret aim
│   │   ├── McbOdomMessage.msg                  message: odometry information from main controller
│   │   ├── RobotIdMessage.msg                  message: robot id information relayed from main controller
│   │   └── TurretAimFeedbackMessage.msg        message: turret telemetry
│   └── package.xml
├── aruw_odometry
│   ├── CMakeLists.txt
│   ├── package.xml
│   └── src
│       ├── common_utils.py -> ../../aruw_vision/src/common_utils.py
│       ├── drive_odometry.py                   base drive-agnostic odometry framework
│       ├── four_wheel_mecanum_drive.py         odometry specific to four-wheel mechanum drive
│       ├── odometry.py                         odometry node which publishes odom data
│       └── sentinel_drive.py                   odometry specific to sentinel drive
├── aruw_serial
│   ├── CMakeLists.txt
│   ├── package.xml
│   └── src
│       ├── internal_serial.py                  core serial rx/tx coe
│       ├── serial_msg_classes.py               handlers for received message types
│       └── serial_node.py                      rx/tx bridge between ROS topics and serial
├── aruw_tf_broadcaster
│   ├── CMakeLists.txt
│   ├── package.xml
│   └── src
│       ├── common_utils.py -> ../../aruw_common/src/common_utils.py
│       └── tf-broadcaster.py                   node which broadcasts TF frames for robot and messages
├── aruw_vision
│   ├── CMakeLists.txt
│   ├── package.xml
│   └── src
│       ├── PID.py
│       ├── aim_turret.py                       top-level target aiming class: takes in frames and produces aim commands
│       ├── alignment.py
│       ├── common_utils.py -> ../../aruw_common/src/common_utils.py
│       ├── darknet_detector.py                 wrapper to interface with Darknet
│       ├── frame_set.py                        container for one frame of data from the RealSense
│       ├── target_tracker.py                   tracks a set of 3D targets and correlates them with new detections 
│       ├── tracked_objective_controller.py
│       ├── tracked_target.py                   single target tracked by the TargetTracker
│       ├── utils.py                            vision-specific utilities
│       ├── video_dumper.py                     vision processor which saves video to disk
│       └── vision.py                           root vision node
├── aruw_vision.service                         systemd service for running whole system
├── cv-prod-model                               trained models and other data
│   ├── aruw-tiny-V2.cfg                        darknet model configuration for plate detector
│   ├── aruw-tiny-V2_prod.weights               trained weights for plate detector
│   ├── aruw.data                               data config for plate detector
│   ├── aruw.names                              plate detector classes
├── darknet-aruw                                fork of darknet neural network library with custom edits
├── scripts
    ├── choose-log-file.py                      helper script which picks an available log file name for this session 
    ├── configure-service.sh                    utility to enable/disable automatic service
    ├── shutdown-switch-watcher.py              background script to watch for shutdown switch
    └── startup.sh                              main launch script run by service