Code Docs

How to Layout your Ark Project

These are some best practice tips to keep your ark projects clean, shareable and understandable for all users:

YourArkProject/
│
├── robots/                     # Source code or SDKs for all robots used (e.g., Franka, Unitree, etc.)
│   └── ...                     # Each robot has its own folder or repository
│
├── sensors/                    # Source code or SDKs for all sensors used (e.g., RealSense, LiDAR)
│   └── ...                     # Each sensor has its own folder or repository
│
├── other/                      # other files such as URDFs of objects
│   └── ...                     # Each object should have its own folder for meshes and urdf
│
├── config/                     # All configuration files (organized by type)
│   ├── robots/                 # Robot-specific configuration files (e.g., joint limits, URDF paths)
│   │   └── ...
│   ├── sensors/                # Sensor-specific configuration files (e.g., calibration, topics)
│   │   └── ...
│   ├── objects/                # Object definitions used in the simulation or real world
│   │   └── ...
│   │		other/                  # Other condes configuration files
│   │   └── ...
│   └── global_config.yaml      # Global configuration file linking the setup (robot + sensor + environment)
│
├── scripts/                    # Utility scripts (non-node code, e.g., data converters, analysis tools)
│   └── ...
│
├── nodes/                      # All runtime Ark nodes (e.g., controller, perception, planner)
│   └── ...                     # Each node is a separate file or module
│
├── launch/                     # Launch files for different system configurations
│   ├── sim.yaml                # Launch configuration for simulation
│   └── real.yaml               # Launch configuration for real robot setup
│
└── README.md                   # Project overview and setup instructions

Top-Level Project Structure


robots/


sensors/


config/


scripts/


nodes/


launch/

<aside> ℹ️

Note: This layout is a suggestion but may not work for all projects and setups, so feel free to make modification on a per-project-basis

</aside>

Table of Contents