Configuration
ModPack uses two YAML config files: a global networking config (modpack_config.yaml) and a per-robot hardware and runtime config (robots/<name>/config.yaml).
Reference
The full key reference for both config files lives in the code repo: README · robots/README · orchestration/README
modpack_config.yaml
Lives at modpack/modules/modpack_config.yaml and controls RMQ server networking across all robots.
modpack/robots/<name>/config.yaml
Lives at modpack/robots/<name>/config.yaml. Controls all robot-specific hardware and runtime behavior.
GELLO Hardware (gello key)
Reference
GELLO module internals (RMQ topics, lifecycle): gello/README.
Port Configuration
As indicated by the Gello readme, you can find the path to the U2D2 once you plug into the ModPack mini PC by using ls /dev/serial/by-id, where the device should be in the form usb-FTDI_USB__-__Serial_Converter. The baudrate parameter should match what you have set in the Dynxamixel Wizard 2.0
Motor Configuration
Zero position offsets/robot joint signs and joint offsets/joint signs are all crucial for safe and correct control of any target robot. They serve two distinct purposes.
zero_position_offsets/robot_joint_signs: Accounts for the difference between URDF and arm zero position, enabling accurate gravity compensation. Unless you use different URDFs from those provided, this does not need to change.joint_offsets/joint_signs: Accounts for difference between installed motor zero and robot zero positions and directionality of motors. Ideally these are zero, but are left in to account for any offset as to not make people re-install motors. These offsets need to be calibrated for each setup.
Warning
Do not run teleoperation without first calibrating the joint offsets. For joint signs, only change as needed.
To calibrate joint offsets for either arm, use the script zero_calib.py. This will also calibrate the gripper open and close angles, which are necessary to account for installation angle.
Reference
Usage and steps: scripts/calibration/README.
Current Limits
Per-motor current limits bound motor output to ensure safe gravity compensation and reasonable haptic feedback. Each arm motor has a current_limit (the overall ceiling), plus separate gravity_current_limit and contact_current_limit budgets for gravity compensation and haptic contact feedback; these are converted to torque internally using the motor's torque constant. The gripper, which is position-controlled, has only a current_limit. We have set up limits that are comfortable for our purposes, but users are free to tune these parameters within reason, noting the maximum current allowed per motor and the maximum total current the battery setup is able to provide.
Control Parameters
Control parameters such as kp and kd are set to reasonable values for gravity compensation, but users are free to tune.
Logging Streams
Reference
Logging-stream config: modpack/modules/logger/README.