peaqnetwork/peaq-robotics-ros2.
Prerequisites
| Requirement | Value |
|---|---|
| ROS 2 | Humble (Docker) or Jazzy (native Ubuntu) |
| Python | ≥ 3.10 |
peaq-os-sdk | ≥ 0.2.0 (PyPI, pulled in by the workspace) |
| RPC | peaq mainnet or agung testnet EVM JSON-RPC |
| Optional | Base mainnet RPC for the peaq ↔ Base bridge |
Workspace build
- Docker (Humble)
- Native (Jazzy)
The Docker image ships with ROS 2 Humble, IPFS (Kubo), and Python deps preinstalled.
Unified config
The node reads from a singlepeaq_robot.yaml. Start from the example and fill in placeholders:
peaq_os block
Environment overrides
The same overrides recognized by the Python SDK and JS SDK work here. Useful when you pin contract addresses externally:Run the node
ROS_DOMAIN_ID to prevent service collisions.
Production checklist
- Use a local
peaq_robot.yaml; do not commit machine , faucet codes, or RPC tokens. - Keep
peaq_os.wallet_registry.pathon encrypted robot storage when possible. Permissions0600. - Use a reliable peaq EVM and monitor rate limits.
- Record pre/post balances for any production bridge or event-spend test.
- Fund Base ETH on the before attempting Base → peaq .
- Pin peaqOS contract addresses to the values in Install unless deployment docs change.
Troubleshooting
Service exits with `peaq-os-sdk not installed`
Service exits with `peaq-os-sdk not installed`
The workspace expects Verify with
peaq-os-sdk>=0.2.0. Install it inside the same Python env that runs ros2:python3 -c "import peaq_os_sdk; print(peaq_os_sdk.__version__)".`address`/`machine_id` parsed as a number in YAML payloads
`address`/`machine_id` parsed as a number in YAML payloads
Quote EVM addresses and large integers in
ros2 service call payloads:Bridge calls fail with `MachineNFTAdapter not configured`
Bridge calls fail with `MachineNFTAdapter not configured`
peaq_os.contracts.machine_nft_adapter is required only when bridging from peaq. Set it in peaq_robot.yaml or export MACHINE_NFT_ADAPTER_ADDRESS. Agung has no LayerZero DVN routes — test bridging on peaq mainnet ↔ Base mainnet only.
