Arduino SDK untuk mengintegrasikan robot berbasis Arduino ke dalam ekosistem RoboOS ($ROS). RoboOS adalah Robotic Payment Operating System yang memungkinkan robot untuk berkoordinasi secara otonom melalui insentif ekonomi menggunakan blockchain Solana dan protokol pembayaran stealth x402.
- 🤖 Robot Wallet SDK - Manajemen wallet Solana dengan integrasi pembayaran stealth x402
- 📋 Task Marketplace API - Pencarian, penawaran, dan penerimaan tugas
- 🏭 Robot Type Helpers - Helper untuk Forklift, AMR, Cleaning, dan robot lainnya
- 📡 WiFi & Ethernet Support - Mendukung ESP32, ESP8266, dan Arduino dengan Ethernet shield
- 💾 Memory Efficient - Dirancang untuk perangkat embedded dengan memori terbatas
- ESP32 atau ESP8266 (dengan WiFi built-in)
- Atau Arduino dengan Ethernet Shield
- Minimum 64KB RAM (disarankan 128KB+)
- Arduino IDE 1.8.13 atau lebih baru
- Library dependencies:
- ArduinoJson (v6.x atau v7.x)
- WiFi (untuk ESP32/ESP8266)
- Ethernet (untuk Arduino dengan Ethernet shield)
- Buka Arduino IDE
- Pergi ke Sketch → Include Library → Manage Libraries
- Cari "RoboOS Arduino SDK"
- Klik Install
- Download atau clone repository ini
- Copy folder
roboos-arduinoke folderlibrariesArduino Anda:- Windows:
Documents/Arduino/libraries/ - macOS:
~/Documents/Arduino/libraries/ - Linux:
~/Arduino/libraries/
- Windows:
- Restart Arduino IDE
Pastikan library berikut sudah terinstall:
# ArduinoJson
# Install melalui Library Manager atau:
# https://github.com/bblanchon/ArduinoJson#include <RoboOS.h>
const char* ssid = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";
using namespace RoboOS;
RobotSDK* sdk;
RobotWallet* wallet;
WiFiClient wifiClient;
HttpClient* httpClient;
BaseRobot* robot;
void setup() {
Serial.begin(115200);
// Connect WiFi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
// Initialize SDK
SDKOptions options;
options.network = TESTNET;
options.marketplaceEndpoint = "https://marketplace-testnet.theroboos.com";
sdk = new RobotSDK(options);
sdk->begin();
httpClient = new HttpClient(&wifiClient);
wallet = new RobotWallet(sdk->getLogger());
wallet->create();
// Create robot
RoboOSConfig config = sdk->getConfig();
robot = new BaseRobot("robot-001", wallet, config, httpClient, sdk->getLogger());
robot->begin();
robot->connect();
}
void loop() {
// Query and execute tasks
TaskMarketplace* marketplace = robot->getMarketplace();
Task tasks[10];
int taskCount = 0;
TaskQuery query;
query.status = TASK_PENDING;
if (marketplace->queryTasks(query, tasks, 10, taskCount)) {
for (int i = 0; i < taskCount; i++) {
if (robot->canHandleTask(tasks[i])) {
marketplace->acceptTask(tasks[i].taskId);
robot->executeTask(tasks[i]);
}
}
}
delay(30000);
}#include <RoboOS.h>
using namespace RoboOS;
ForkliftRobot* forklift;
void setup() {
// ... WiFi setup ...
// Define forklift capabilities
ForkliftCapabilities caps;
caps.lifting = true;
caps.transport = true;
caps.stacking = true;
caps.maxWeight = 2000.0; // kg
caps.maxHeight = 5.0; // meters
// Create forklift
forklift = new ForkliftRobot(
"forklift-001",
wallet,
config,
httpClient,
logger,
caps
);
forklift->begin();
forklift->connect();
}
void loop() {
// Query material handling tasks
TaskQuery query;
query.type = "material_handling";
Task tasks[10];
int taskCount = 0;
if (forklift->getMarketplace()->queryTasks(query, tasks, 10, taskCount)) {
for (int i = 0; i < taskCount; i++) {
if (forklift->canHandleTask(tasks[i])) {
forklift->getMarketplace()->acceptTask(tasks[i].taskId);
forklift->executeTask(tasks[i]);
}
}
}
delay(60000);
}Kelas utama untuk menginisialisasi SDK.
SDKOptions options;
options.network = TESTNET;
options.marketplaceEndpoint = "https://marketplace-testnet.theroboos.com";
RobotSDK sdk(options);
sdk.begin();Manajemen wallet untuk robot.
RobotWallet wallet(logger);
wallet.create(); // Create new wallet
wallet.load(walletData); // Load existing wallet
String walletData = wallet.save(); // Save wallet
String publicKey = wallet.getPublicKey();
double balance = wallet.getBalance();Client untuk marketplace tugas.
TaskMarketplace marketplace(config, httpClient, logger);
marketplace.begin(robotId);
TaskQuery query;
query.type = "delivery";
query.status = TASK_PENDING;
Task tasks[10];
int taskCount = 0;
marketplace.queryTasks(query, tasks, 10, taskCount);
marketplace.acceptTask(taskId);
marketplace.updateTaskStatus(taskId, TASK_COMPLETED);Kelas dasar untuk semua robot.
BaseRobot robot(robotId, wallet, config, httpClient, logger);
robot.begin();
robot.connect();
if (robot.canHandleTask(task)) {
robot.executeTask(task);
}ForkliftCapabilities caps;
caps.lifting = true;
caps.maxWeight = 2000.0;
ForkliftRobot forklift(id, wallet, config, httpClient, logger, caps);AMRCapabilities caps;
caps.navigation = true;
caps.maxPayload = 50.0;
AMRRobot amr(id, wallet, config, httpClient, logger, caps);CleaningCapabilities caps;
caps.vacuum = true;
caps.mopping = true;
CleaningRobot cleaner(id, wallet, config, httpClient, logger, caps);SDK mendukung beberapa network:
enum Network {
MAINNET_BETA, // Production network
TESTNET, // Test network (default)
DEVNET // Development network
};SDK menggunakan logger untuk error handling:
Logger* logger = sdk->getLogger();
logger->error("Error message");
logger->warn("Warning message");
logger->info("Info message");
logger->debug("Debug message");Untuk perangkat dengan memori terbatas:
- Gunakan array dengan ukuran tetap untuk tasks
- Batasi jumlah tasks yang di-query sekaligus
- Nonaktifkan logging jika tidak diperlukan:
options.enableLogging = false; - Gunakan
DynamicJsonDocumentdengan ukuran yang sesuai
Lihat folder examples/ untuk contoh lengkap:
- BasicRobot - Contoh dasar penggunaan SDK
- ForkliftRobot - Contoh robot forklift dengan capabilities khusus
- Pastikan SSID dan password benar
- Periksa kekuatan sinyal WiFi
- Untuk ESP32, pastikan WiFi mode sudah di-set
- Periksa koneksi internet
- Periksa endpoint URL
- Tingkatkan timeout value:
httpClient->setTimeout(60000); // 60 seconds
- Kurangi ukuran JSON buffer
- Batasi jumlah tasks yang di-query
- Nonaktifkan logging
- Pastikan semua dependencies terinstall
- Pastikan menggunakan Arduino IDE versi terbaru
- Periksa board selection (ESP32/ESP8266/Arduino)
- Website: theroboos.com
- GitHub: github.com/roboos/roboos-arduino
- Issues: GitHub Issues
MIT
Kontribusi sangat diterima! Silakan buat pull request atau buka issue untuk bug reports dan feature requests.