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
snake_case
) to improve readability and avoid OS-specific casing issues.robots/
sensors/
config/
robots/
: Stores URDF paths, PID parameters, control limits.sensors/
: Stores calibration data, topics, and transform offsets.objects/
: Contains object descriptions for use in sim and real-world.global_config.yaml
: Unifies the above into a master file loaded by all nodes.scripts/
extract_images.py
, merge_logs.py
, label_tool.py
.nodes/
perception/
, control/
).launch/
sim.yaml
: Loads a simulated robot, sensors, and scene.real.yaml
: Initializes real robot and sensor interfaces.<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