Submission
Code Submission and Evaluation
Refer to the kuavo_data_challenge repository icra branch docker/readme to package your environment and code into a Docker image and submit it to the competition website.
Evaluation results and the leaderboard will be published on the competition website.
Important Notes
1. The final submission must be a ZIP archive containing two files: a Docker image TAR file and run_with_gpu.sh .
2. Please name both the TAR file and the ZIP archive as team_or_individual_name_task{i}. If your team name is in Chinese, you may use initials or your personal name instead. For example, if your team name is “Leju Zhandui” and your name is “kuavo”, and you are submitting for Task 2, your TAR file should be named either lejuzhandui_task2.tar or kuavo_task2.tar. The final ZIP file should have the same name. Also, ensure that IMAGE_NAME and CONTAINER_NAME inside run_with_gpu.sh are updated accordingly to match this naming convention; otherwise, the container may fail to run .
3. Before packaging the image, make sure to properly configure kuavo_sim_env.yaml: set the number of evaluation episodes (eval_episodes) to 100, and ensure the maximum episode steps (max_episode_steps) do not exceed 300 (Tasks 1 & 2) or 600 (Task 3) .
4. Normally, you can use the standard submission entry to upload your file. If the file is too large and fails to upload, please try re-uploading .
5. Before submitting, confirm that you have successfully joined a team (individual participants may skip this step). If you change teams or join a team after submitting and receiving a score, your previous score will be invalidated. Only one team member needs to submit—please avoid duplicate submissions .
6. The official evaluation system closely resembles the local evaluation setup in the repository. We strongly recommend testing your model locally before submission to debug and optimize performance, thereby conserving shared evaluation resources .
7. After submission, if evaluation succeeds, your score will appear on the Tianchi competition submission page. If evaluation fails, an error message will be displayed—please verify that your submitted files are correct .
Video Tutorial (You may fast-forward through the packaging process)
Copy the following Dockerfile template (customized for the simulation track), modify necessary parameters such as the Conda environment name, Conda environment package name, and add any additional required system or Python packages. Save it as Dockerfile in your project root directory.
# ========================= # Stage 1: Builder # ========================= FROM ros:noetic-ros-core-focal AS builder ARG DEBIAN_FRONTEND=noninteractive RUN sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list && \ sed -i 's/security.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list RUN apt-get update && apt-get install -y \ curl wget gnupg2 lsb-release sudo ca-certificates build-essential bzip2 \ ros-noetic-cv-bridge \ ros-noetic-apriltag-ros \ && rm -rf /var/lib/apt/lists/* ENV MINIFORGE_URL="https://mirrors.tuna.tsinghua.edu.cn/github-release/conda-forge/miniforge/LatestRelease/Miniforge3-Linux-x86_64.sh" RUN curl -L ${MINIFORGE_URL} -o /tmp/miniforge.sh \ && bash /tmp/miniforge.sh -b -p /opt/conda \ && rm /tmp/miniforge.sh ENV PATH="/opt/conda/bin:${PATH}" ENV LANG=C.UTF-8 ENV LC_ALL=C.UTF-8 RUN conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ \ && conda config --set show_channel_urls yes \ && conda install -y mamba -c conda-forge WORKDIR /root/kuavo_data_challenge COPY . . RUN if [ -f "myenv.tar.gz" ]; then \ mkdir -p ./myenv && tar -xzf myenv.tar.gz -C ./myenv && rm myenv.tar.gz; \ fi && \ /bin/bash -c "\ source ./myenv/bin/activate && \ conda-unpack && \ pip install -e . && \ cd ./third_party/lerobot && pip install -e . -i https://mirrors.aliyun.com/pypi/simple/ && \ pip install deprecated kuavo_humanoid_sdk==1.2.2 opencv-python==4.11.0.86 opencv-python-headless==4.11.0.86 numpy==1.26.4 -i https://mirrors.aliyun.com/pypi/simple/ && \ conda clean -afy && \ rm -rf ./myenv/lib/python*/site-packages/*/tests ./myenv/lib/python*/site-packages/*/test ./myenv/pkgs/* \ " # ========================= # Stage 2: Final # ========================= FROM ros:noetic-ros-core-focal WORKDIR /root/kuavo_data_challenge COPY --from=builder /opt/conda /opt/conda COPY --from=builder /root/kuavo_data_challenge /root/kuavo_data_challenge ENV PATH="/opt/conda/bin:${PATH}" ENV LANG=C.UTF-8 ENV LC_ALL=C.UTF-8 RUN sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list && \ sed -i 's/security.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list RUN apt-get update && apt-get install -y \ ros-noetic-cv-bridge \ ros-noetic-apriltag-ros \ && rm -rf /var/lib/apt/lists/* RUN echo "source /opt/ros/noetic/setup.bash" >> /root/.bashrc && \ echo "source /root/kuavo_data_challenge/myenv/bin/activate" >> /root/.bashrc && \ echo "chmod 777 -R /root/kuavo_data_challenge/kuavo_deploy" >> /root/.bashrc && \ echo "export ROS_IP=127.0.0.1" >> /root/.bashrc && \ echo "export ROS_MASTER_URI=http://127.0.0.1:11311" >> /root/.bashrc CMD ["bash"]
Real-Robot Competition Code Submission and Evaluation
Similar to the simulation track, submissions for the real-robot track also require packaging your environment and code into a Docker image and uploading it to the competition website. The specific steps are as follows:
Configure Docker acceleration and package the environment: refer to Steps 1–2 in the simulation track’s submission instructions (docker/readme).
Copy the following Dockerfile template (customized for the real-robot track), modify necessary parameters such as the Conda environment name, Conda environment package name, and add any additional required system or Python packages. Save it as
Dockerfilein your project root directory.# ========================= # Stage 1: Builder # ========================= FROM ros:noetic-ros-core-focal AS builder ARG DEBIAN_FRONTEND=noninteractive # Use domestic APT mirrors RUN sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list && \ sed -i 's/security.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list # Install essential tools and ROS dependencies RUN apt-get update && apt-get install -y \ curl wget gnupg2 lsb-release sudo ca-certificates build-essential bzip2 \ ros-noetic-cv-bridge \ ros-noetic-apriltag-ros \ && rm -rf /var/lib/apt/lists/* # Install Miniforge ENV MINIFORGE_URL="https://mirrors.tuna.tsinghua.edu.cn/github-release/conda-forge/miniforge/LatestRelease/Miniforge3-Linux-x86_64.sh" RUN curl -L ${MINIFORGE_URL} -o /tmp/miniforge.sh \ && bash /tmp/miniforge.sh -b -p /opt/conda \ && rm /tmp/miniforge.sh ENV PATH="/opt/conda/bin:${PATH}" ENV LANG=C.UTF-8 ENV LC_ALL=C.UTF-8 # Configure domestic Conda mirrors and install mamba RUN conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ \ && conda config --set show_channel_urls yes \ && conda install -y mamba -c conda-forge # Working directory WORKDIR /root/kuavo_data_challenge COPY . . # Extract Conda environment and install the project # TODO: Replace "myenv" with your actual Conda environment name and package filename throughout RUN if [ -f "myenv.tar.gz" ]; then \ mkdir -p ./myenv && tar -xzf myenv.tar.gz -C ./myenv && rm myenv.tar.gz; \ fi && \ /bin/bash -c "\ source ./myenv/bin/activate && \ conda-unpack && \ pip install -e . && \ cd ./third_party/lerobot && pip install -e . -i https://mirrors.aliyun.com/pypi/simple/ && \ pip install deprecated kuavo_humanoid_sdk==1.2.2 opencv-python==4.11.0.86 opencv-python-headless==4.11.0.86 numpy==1.26.4 -i https:mirrors.aliyun.com/pypi/simple/ && \ conda clean -afy && \ rm -rf ./myenv/lib/python*/site-packages/*/tests ./myenv/lib/python*/site-packages/*/test ./myenv/pkgs/* \ " # ========================= # Stage 2: Final # ========================= FROM ros:noetic-ros-core-focal # Set working directory WORKDIR /root/kuavo_data_challenge # Copy Conda environment and project code COPY --from=builder /opt/conda /opt/conda COPY --from=builder /root/kuavo_data_challenge /root/kuavo_data_challenge # Environment variables ENV PATH="/opt/conda/bin:${PATH}" ENV LANG=C.UTF-8 ENV LC_ALL=C.UTF-8 RUN sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list && \ sed -i 's/security.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list # TODO: Add any additional system packages here if needed RUN apt-get update && apt-get install -y \ ros-noetic-cv-bridge \ ros-noetic-apriltag-ros \ && rm -rf /var/lib/apt/lists/* # Preserve ROS environment variables # Activate Conda environment RUN echo "source /opt/ros/noetic/setup.bash" >> /root/.bashrc && \ echo "source /root/kuavo_data_challenge/myenv/bin/activate" >> /root/.bashrc && \ echo "chmod 777 -R /root/kuavo_data_challenge/kuavo_deploy" >> /root/.bashrc && \ echo "export ROS_IP=192.168.26.10" >> /root/.bashrc && \ echo "export ROS_MASTER_URI=http://kuavo_master:11311" >> /root/.bashrc # Default command CMD ["bash"]
Build the Docker image and export it as a TAR file: as in the simulation track, place the Dockerfile in your project root and run:
` sudo docker build -t kdc_v0 . `Then export using:` sudo docker save -o your_docker_image.tar kdc_v0:latest `Rename the exported image according to the competition’s naming requirements. Package it together with the correct run_with_gpu.sh into a highly compressed ZIP archive, rename the ZIP file accordingly, and submit it to the competition website.
Evaluation results and the leaderboard will be published on the competition website.