peaq_ros2_tether adds an optional ROS 2 node (peaq_tether_node) that integrates Tether WDK (EVM wallet module) so robots can:
- Create an EVM wallet address
- Query USDT (ERC-20) balance on peaq EVM
- Transfer USDT on peaq EVM
- ROS APIs use only EVM addresses (
address,from_address,to_address) - Wallet secrets (mnemonic) are stored locally on the robot/machine in one shared registry file
- No private keys/mnemonics are ever sent over ROS services
Service Catalog
| Service | Type | Purpose |
|---|---|---|
/peaq_tether_node/wallet/create | peaq_ros2_interfaces/srv/TetherCreateWallet | Create a new EVM wallet address (mnemonic stored locally) |
/peaq_tether_node/usdt/balance | peaq_ros2_interfaces/srv/TetherGetUsdtBalance | Read USDT balance for an address |
/peaq_tether_node/usdt/transfer | peaq_ros2_interfaces/srv/TetherTransferUsdt | Transfer USDT from one local wallet address to another address |
Launch Prerequisites
Install JS dependencies once (Node.js required where the node runs):ros2 run.
Notes:
- If you run multiple ROS 2 environments on the same host, isolate them with
ROS_DOMAIN_IDto prevent service collisions. - When running from a source checkout, the node prefers a CLI path where Node can resolve
node_modules/. The simplest approach is to run from the workspace root. You can also override the CLI path explicitly withPEAQ_TETHER_CLI_PATH.
- tmux option:
- Re-attach:
tmux attach -t tether - Stop inside tmux:
Ctrl-c - (Or kill the session):
tmux kill-session -t tether
- Re-attach:
- background/disown option:
- Try:
pkill -f "ros2 run peaq_ros2_tether tether_node" || truepkill -f "peaq_ros2_tether/tether_node" || true
- If the node was started as another user (or with
sudo), you may needsudo pkill .... - Verify it’s gone:
pgrep -af "peaq_ros2_tether.*tether_node" || echo "tether node stopped"
- Try:
ros2 node list still shows stale entries right after stopping, restart the ROS CLI daemon and try again:

