Skip to content

the-robo-os/roboos-sdk-arduino

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RoboOS Arduino SDK

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.

Fitur

  • 🤖 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

Persyaratan

Hardware

  • ESP32 atau ESP8266 (dengan WiFi built-in)
  • Atau Arduino dengan Ethernet Shield
  • Minimum 64KB RAM (disarankan 128KB+)

Software

  • 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)

Instalasi

Metode 1: Arduino Library Manager (Recommended)

  1. Buka Arduino IDE
  2. Pergi ke SketchInclude LibraryManage Libraries
  3. Cari "RoboOS Arduino SDK"
  4. Klik Install

Metode 2: Manual Installation

  1. Download atau clone repository ini
  2. Copy folder roboos-arduino ke folder libraries Arduino Anda:
    • Windows: Documents/Arduino/libraries/
    • macOS: ~/Documents/Arduino/libraries/
    • Linux: ~/Arduino/libraries/
  3. Restart Arduino IDE

Install Dependencies

Pastikan library berikut sudah terinstall:

# ArduinoJson
# Install melalui Library Manager atau:
# https://github.com/bblanchon/ArduinoJson

Quick Start

Contoh Dasar

#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);
}

Contoh Forklift Robot

#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);
}

API Reference

RobotSDK

Kelas utama untuk menginisialisasi SDK.

SDKOptions options;
options.network = TESTNET;
options.marketplaceEndpoint = "https://marketplace-testnet.theroboos.com";

RobotSDK sdk(options);
sdk.begin();

RobotWallet

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();

TaskMarketplace

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);

BaseRobot

Kelas dasar untuk semua robot.

BaseRobot robot(robotId, wallet, config, httpClient, logger);
robot.begin();
robot.connect();

if (robot.canHandleTask(task)) {
    robot.executeTask(task);
}

Robot Types

ForkliftRobot

ForkliftCapabilities caps;
caps.lifting = true;
caps.maxWeight = 2000.0;

ForkliftRobot forklift(id, wallet, config, httpClient, logger, caps);

AMRRobot

AMRCapabilities caps;
caps.navigation = true;
caps.maxPayload = 50.0;

AMRRobot amr(id, wallet, config, httpClient, logger, caps);

CleaningRobot

CleaningCapabilities caps;
caps.vacuum = true;
caps.mopping = true;

CleaningRobot cleaner(id, wallet, config, httpClient, logger, caps);

Konfigurasi Network

SDK mendukung beberapa network:

enum Network {
    MAINNET_BETA,  // Production network
    TESTNET,       // Test network (default)
    DEVNET         // Development network
};

Error Handling

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");

Memory Management

Untuk perangkat dengan memori terbatas:

  1. Gunakan array dengan ukuran tetap untuk tasks
  2. Batasi jumlah tasks yang di-query sekaligus
  3. Nonaktifkan logging jika tidak diperlukan:
    options.enableLogging = false;
  4. Gunakan DynamicJsonDocument dengan ukuran yang sesuai

Contoh

Lihat folder examples/ untuk contoh lengkap:

  • BasicRobot - Contoh dasar penggunaan SDK
  • ForkliftRobot - Contoh robot forklift dengan capabilities khusus

Troubleshooting

WiFi Connection Failed

  • Pastikan SSID dan password benar
  • Periksa kekuatan sinyal WiFi
  • Untuk ESP32, pastikan WiFi mode sudah di-set

HTTP Request Timeout

  • Periksa koneksi internet
  • Periksa endpoint URL
  • Tingkatkan timeout value:
    httpClient->setTimeout(60000); // 60 seconds

Memory Issues

  • Kurangi ukuran JSON buffer
  • Batasi jumlah tasks yang di-query
  • Nonaktifkan logging

Compilation Errors

  • Pastikan semua dependencies terinstall
  • Pastikan menggunakan Arduino IDE versi terbaru
  • Periksa board selection (ESP32/ESP8266/Arduino)

Dukungan

License

MIT

Contributing

Kontribusi sangat diterima! Silakan buat pull request atau buka issue untuk bug reports dan feature requests.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published