Repository Summary
Description | Codebase for Perception Challenge For Bin-Picking |
Checkout URI | https://github.com/opencv/bpc.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-06-24 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
Name | Version |
---|---|
ibpc_interfaces | 0.0.1 |
ibpc_pose_estimator_py | 0.0.0 |
ibpc_tester | 0.0.0 |
README
Perception Challenge For Bin-Picking
Challenge official website.
Key Steps for Participation
- Set up the local environment
- Download training and validation/testing data
- Prepare submission:
- Submit your solution
Overview
This repository contains the sample submission code, ROS interfaces, and evaluation service for the Perception Challenge For Bin-Picking. The reason we openly share the tester code here is to give participants a chance to validate their submissions before submitting.
-
Estimator: The estimator code represents the sample submission. Participants need to implement their solution by editing the placeholder code in the function
get_pose_estimates
inibpc_pose_estimator.py
. The tester will invoke the participant’s solution via a ROS 2 service call over the/get_pose_estimates
endpoint. -
Tester: The tester code serves as the evaluation service. A copy of this code will be running on the evaluation server and is provided for reference only. It loads the test dataset, prepares image inputs, invokes the estimator service repeatedly, collects the results, and submits for further evaluation.
-
ROS Interface: The API for the challenge is a ROS service, GetPoseEstimates, over
/get_pose_estimates
. Participants implement the service callback on a dedicated ROS node (commonly referred to as the PoseEstimatorNode) which processes the input data (images and metadata) and returns pose estimation results.
In addition, we provide the ibpc_py tool which facilitates downloading the challenge data and performing various related tasks. You can find the installation guide and examples of its usage below.
Design
ROS-based Framework
The core architecture of the challenge is based on ROS 2. Participants are required to respond to a ROS 2 Service request with pose estimation results. The key elements of the architecture are:
-
Service API: The ROS service interface (defined in the GetPoseEstimates file) acts as the API for the challenge.
-
PoseEstimatorNode: Participants are provided with Python templates for the PoseEstimatorNode. Your task is to implement the callback function (e.g.,
get_pose_estimates
) that performs the required computation. Since the API is simply a ROS endpoint, you can use any of the available ROS 2 client libraries including C++, Python, Rust, Node.js, or C#. Please use ROS 2 Jazzy Jalisco. -
TesterNode: A fully implemented TesterNode is provided that:
- Uses the bop_toolkit_lib to load the test dataset and prepare image inputs.
- Repeatedly calls the PoseEstimatorNode service over the
/get_pose_estimates
endpoint. - Collects and combines results from multiple service calls.
- Saves the compiled results to disk in CSV format.
Containerization
To simplify the evaluation process, Dockerfiles are provided to generate container images for both the PoseEstimatorNode and the TesterNode. This ensures that users can run their models without having to configure a dedicated ROS environment manually.
Submission Instructions
Participants are expected to modify the estimator code to implement their solution. Once completed, your custom estimator should be containerized using Docker and submitted according to the challenge requirements. You can find detailed submission instructions here. Please make sure to register a team to get access to the submission instructions.
Setting up
The following instructions will guide you through the process of validating your submission locally before official submission.
Requirements
-
Docker installed with the user in docker group for passwordless invocations. Ensure Docker Buildx is installed (
docker buildx version
). If not, install it withapt install docker-buildx-plugin
orapt install docker-buildx
(distribution-dependent). - 7z –
apt install p7zip-full
- Python3 with virtualenv –
apt install python3-virtualenv
- The
ibpc
androcker
CLI tools are tested on Linux-based machines. Due to known Windows issues, we recommend Windows users develop using WSL.
Note: Participants are expected to submit Docker containers, so all development workflows are designed with this in mind.
Setup a workspace
mkdir -p ~/bpc_ws
Create a virtual environment
📄 If you’re already working in some form of virtualenv you can continue to use that and install bpc
in that instead of making a new one.
python3 -m venv ~/bpc_ws/bpc_env
Activate that virtual env
source ~/bpc_ws/bpc_env/bin/activate
For any new shell interacting with the bpc
command you will have to rerun this source command.
Install bpc
Install the bpc command from the ibpc pypi package. (bpc was already taken :-( )
```bash pip install ibpc
File truncated at 100 lines see the full file