Welcome to the AI for Industry Challenge. This document outlines the technical requirements for packaging, containerizing, and uploading your solutions for evaluation. Following these steps ensures your model runs in our automated evaluation environment exactly as it does on your local machine.
Important
To complete the registry upload, you must have the credentials provided in your onboarding email sent to team leaders. These include your unique AWS access credentials, and the ECR Repository URI assigned to your team.
All submissions must be containerized using OCI-compliant image builder like Docker or Podman. Organize your project by placing all policy logic and dependency requirements directly within your custom policy package.
If you don't have any additional packages or dependencies, you can keep your policy code in policy.py and then re-use the aic_model directory with its Dockerfile. In this case, update the Dockerfile and change CMD ["--ros-args", "-p", "policy:=aic_example_policies.ros.CheatCode", "-p", "use_sim_time:=true"] to CMD ["--ros-args", "-p", "policy:=aic_model.MyPolicy", "-p", "use_sim_time:=true"], and skip to the Build the Image section.
It is highly recommended to use the example aic_model Dockerfile as a starting point.
mkdir -p docker/my_policy
cp docker/aic_model/Dockerfile docker/my_policy/Then modify docker/my_policy/Dockerfile to add your custom policy package:
# Add other dependencies
COPY my_policy_node /ws_aic/src/aic/my_policy_node # <-- Add this lineEdit the CMD to run your policy:
CMD ["--ros-args", "-p", "policy:=my_policy_node.MyPolicy"]
CMD ["--ros-args", "-p", "policy:=my_policy_node.MyPolicy", "-p", "use_sim_time:=true"]Open docker/docker-compose.yaml and update the model service configuration to use your Dockerfile and policy:
model:
image: my-solution:v1
build:
dockerfile: docker/my_policy_node/Dockerfile # <-- replace this line
context: ..To build your submission image, run the following command from the root directory directory:
docker compose -f docker/docker-compose.yaml build modelBefore pushing your image to our servers, you must verify that the container initializes correctly and handles data as expected.
You can run the evaluation locally using docker compose:
docker compose -f docker/docker-compose.yaml upWarning
Do not skip local verification. If your container fails to start or crashes during the local evaluation, it will be automatically rejected by the submission portal, which may count against your daily submission limit.
Important
A description of the Zenoh access controls used to prevent minimal "cheating" solutions that simply subscribe to the simulator's internal data structures are described in the Access Control document.
We use Amazon Elastic Container Registry (ECR) to host team OCI images. You will need to have AWS CLI installed.
Configure your local environment by following these steps, using the credentials provided in your onboarding email sent to team leaders:
Run the following command, replacing <team_name> with the slug provided in your email (e.g., team123):
aws configure --profile <team_name>When prompted, enter the following details:
- Access Key ID: (Copy from email)
- Secret Access Key: (Copy from email)
- Default region name: us-east-1
- Default output format: json (or press Enter for default)
Point your shell to the new profile so subsequent commands use the correct credentials:
export AWS_PROFILE=<team_name>Finally, authenticate your local Docker client with our private registry:
aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 973918476471.dkr.ecr.us-east-1.amazonaws.comYou must tag your local image to match the remote repository URI provided to your team. Replace the dummy URI below with your specific team URI:
docker tag localhost/my-solution:v1 973918476471.dkr.ecr.us-east-1.amazonaws.com/aic-team/<team_name>:v1Important
Image tags in our ECR registry are immutable. You cannot overwrite an existing tag. For each new submission or build, you must increment your version tag (e.g., :v2, :v3) or use a unique identifier like a Git commit SHA. If you try to push an image with a tag that already exists in the registry, the push will fail.
Upload the tagged image to the challenge registry:
docker push 973918476471.dkr.ecr.us-east-1.amazonaws.com/aic-team/<team_name>:v1Simply pushing the image to ECR does not trigger the evaluation. You must notify the platform that a new version is ready for scoring.
Note
The submission portal will be open shortly. The login credentials for the submission portal will be emailed to the team leaders by the end of March.
- Copy the full Image URI you just pushed (e.g.,
973918476471.dkr.ecr.us-east-1.amazonaws.com/aic-team/<team_name>:v1). - Log in to the submission portal.
- Click on the
AI for Industry Challengeand then go toSubmit. - Select the
Qualificationphase and paste the URI into the submissionOCI Imagefield. - Click
Submitto proceed.
After registering your OCI Image URI, our orchestration platform spins up your container into a dedicated, isolated evaluation environment. This process is automated, but you can track its lifecycle through the portal's monitoring dashboard.
- Navigate to the My Submissions page in the portal.
- Apply the
Qualificationfilter to the "Phase" dropdown to see your current entries. - Locate your most recent submission at the top of the table.
The Status column provides a real-time status of your container's journey through our evaluation cluster. Understanding these states is key to managing your daily submission limit.
| Status | Technical Context |
|---|---|
| Submitted | The platform has received your Image URI. |
| Queued | Your submission is in the execution buffer. It is waiting for an available evaluation node in the cluster. |
| Running | Your image has been pulled from ECR, and the ROS 2 nodes are currently executing the challenge logic in the simulation environment. |
| Finished | The evaluation reached a natural conclusion. Your success metrics have been calculated and are now visible on the Leaderboard. |
| Failed | The container exited prematurely. This usually indicates a runtime crash (e.g., Python ImportError), a missing dependency, or a system timeout. |
Tip
Depending on cluster load and the complexity of your policy, the transition from Queued to Finished typically takes 5 to 15 minutes. You do not need to resubmit if the status is "Queued" or "Running"; simply refresh the page to see the latest state.
I cannot use the example dockerfile: The example dockerfile assumes that you are using aic_model to run your policy. If you are not using aic_model, you can create a custom dockerfile.
My push failed with "no basic auth credentials": Your Docker login session has likely expired. ECR login tokens are valid for 12 hours. Repeat the Authenticate step in Section 2.
Where can I see my results? All your past results and logs can be consulted in the "My submissions" section of the portal. You can also visit the Leaderboard to compare your results against the rest of the teams.
Can I submit multiple times? Yes. However, you are limited to 1 submission per day. There is no limit on the total number of submissions you can make throughout the duration of the competition.
- Issues: Report problems via GitHub Issues
- Community: Join discussions at Open Robotics Discourse