Calibration and Identification
Joint Tracker calibration collects encoder data and sends it to the Reforge Cloud API. Identification returns a persisted joint-controller model used by the Joint Tracker controller.
Step 1: Setup the SDK
Go over the First Steps from Get Started to generate your API token and robot ID and install the Reforge Robotics SDK.
Before continuing, confirm that you have:
- The robot IP address.
- The local PC IP address, if required by the robot SDK.
- The robot SDK token, if required by the robot manufacturer.
- The Reforge robot ID.
- The Reforge API token.
Step 2: Run Calibration
Run calibration from the repository root:
bashpython3 -m robot.run calibrate \ <ROBOT_IP> \ --type joint_tracker \ --local_ip <LOCAL_IP> \ --sdk_token <ROBOT_SDK_TOKEN> \ --robot_id <REFORGE_ROBOT_ID> \ --freq 250 \ --identify <REFORGE_API_TOKEN>
In this branch, the CLI name for the Joint Tracker calibration workflow is joint_tracker. The --identify argument is required for this workflow because the calibration routine generates the model bundle through the Reforge identification service.
Example:
bashpython3 -m robot.run calibrate \ 192.168.1.231 \ --type joint_tracker \ --sdk_token <ROBOT_SDK_TOKEN> \ --robot_id <REFORGE_ROBOT_ID> \ --freq 250 \ --identify <REFORGE_API_TOKEN>
The command:
- Moves the robot through the joint-identification experiment.
- Saves the recorded calibration data under
src/robot/data/. - Uploads the recorded data to the Reforge identification service.
- Downloads the identified model bundle into
src/robot/models/current/joint_tracker.
Use --help to inspect optional calibration arguments:
bashpython3 -m robot.run calibrate --help
Step 3: Re-run Identification for an Existing Data Folder
Normal Joint Tracker calibration should use --identify in the calibration command above. If you already have a compatible Joint Tracker data folder and need to re-run cloud identification, use:
bashpython3 -m robot.run identify \ <REFORGE_API_TOKEN> \ <REFORGE_ROBOT_ID> \ src/robot/data/<LOCAL_DATA_FOLDER>
After the cloud job completes, the model should be available in:
textsrc/robot/models/current/joint_tracker
The runtime loader expects the bundle to contain a model_bundle.json and a joint-controller artifact such as joint_controller_models.json.
Continue with Control after the model bundle is available locally to learn how to use the Joint Tracker controller.