peaqnetwork/peaq-robotics-ros2.
Prerequisites
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, then set peaq_os.faucet.base_url as below and copy the peaq_os.contracts addresses from ROS 2 configuration: the example ships an expired faucet host and an EventRegistry address with no contract behind it.
peaq_os block
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.
Troubleshooting
Service calls fail with No module named 'peaq_os_sdk'
Service calls fail with No module named 'peaq_os_sdk'
The workspace expects Verify with
peaq-os-sdk>=0.0.2. Install it inside the same Python env that runs ros2:python3 -m pip show peaq-os-sdk.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 peaq_os.contracts.machine_nft_adapter is required
Bridge calls fail with peaq_os.contracts.machine_nft_adapter is required
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, so test bridging on peaq mainnet ↔ Base mainnet only.
