コンテンツにスキップ
開発者ガイド

FJD Trion SLAM SDK

クイックスタート
公開メソッド
使用例
注意事項

概要

SLAM SDK は、S2/P2/P1 デバイスと通信するための C++ ライブラリで、デバイス検出、マップスキャン、データダウンロードなどの機能を提供します。

名前空間

namespace fjminislam

定数定義

ポート設定 

定数名説明
BROADCAST_PORT29527デバイスのブロードキャストポート
PORT9090デバイス通信ポート

ダウンロードデータ型列挙

enum DownloadDataType
{
    FJDSLAM = 1,   // FJDSLAM形式データ
    PLY     = 2,   // PLY形式点群データ
    PTS     = 3,   // PTS形式点群データ
    LAS     = 5,   // LAS形式点群データ
    FJDRTK  = 6,   // FJDRTK形式データ
    RTCM    = 9,   // RTCM形式データ
    INSV    = 99,  // INSV形式データ
};

デバイス構造体

struct Device
{
std::string serialno; // デバイスのシリアル番号
std::string ip; // デバイスのIPアドレス
std::string fwversion; // ファームウェアバージョン
};

SDKクラス

コンストラクタおよびデストラクタ関数

SDK(); // デフォルトコンストラクタ
~SDK(); // デストラクタ

公開メンバー変数

std::vector<fjminislam::Device> device_list; // デバイスリスト

get_available_devices 

std::vector<fjminislam::Device> get_available_devices(int search_time=3);

機能: 利用可能なデバイスを検索

パラメーター

search_time

検索時間、単位: 秒、デフォルト: 3秒

戻り値 : デバイスリスト 

get_maplist 

json get_maplist(); 

機能: 地図リスト情報を取得

戻り値 : 以下のフィールドを含むJSON形式の地図情報: 

フィールド名説明
resultboolリクエスト結果。true は成功を示します
values.has_cameraarray<int>カメラの有無。1 はあり、0 はなしを意味します
values.maplistarray<string>地図名の一覧
values.match_statusarray<int>ブレークポイントでスキャンを継続するかどうか。1 ははい、0 はいいえを意味します
values.rtk_locked_percentarray<int>RTKロック率
values.slam_dis_in_marray<int>ミッション走行距離、単位はメートル
values.task_time_in_secarray<int>タスク時間、単位は秒
values.vec_data_types_for_downloadarray<int>ダウンロード可能なデータ型、1 は存在を示す

start_map 

json start_map(std::string mapname="");

機能: スキャンタスクを開始

パラメーター

mapname

カスタムマップ名、任意

戻り値 : JSON 形式の起動結果。以下のフィールドを含みます: 

フィールド名説明
resultboolリクエスト結果。true は成功を示します
values.statusintタスク状態:
0 - ミッション中止
1 - 正常状態
-1 - 初期化失敗
-2 - 機器使用中
-4 - タスク処理中
-6 - Instaカメラのストレージ容量不足

stop_map 

json stop_map();

機能: スキャンタスクを停止

戻り値 : 以下のフィールドを含む JSON 形式の停止結果: 

フィールド名説明
resultboolリクエスト結果。true は成功を示します
values.messagestringメッセージの説明
values.successbool停止が成功したかどうか

check_device_task 

json check_device_task(bool force_check=true); 

機能: デバイスのセルフチェック結果を取得または実行する

パラメーター

force_check

セルフチェックを強制するかどうか。true は結果のみを取得することを示し、false はセルフチェックを実行することを示します

戻り値: 以下のフィールドを含む JSON 形式のセルフチェック結果:

フィールド名説明
resultboolリクエスト結果。true は成功を示します
values.statusintデバイス状態:
7 - すべてのデバイスは正常
5 - LiDAR 異常

download_map_data 

bool download_map_data(std::string mapname, fjminislam::DownloadDataType type, std::string save_path);

機能: スキャンデータをダウンロードする

パラメータ

mapname
  • マップ名
type
  • ダウンロードするデータ型。列挙については を参照:
DownloadDataType
save_path 
  • データ保存パス。例: 
/tmp/

戻り値 : true はダウンロード成功、false はダウンロード失敗を示します 

time_syn 

json time_syn();

機能: スキャナーに時刻を同期します

戻り値 : JSON 形式の時刻同期結果。以下のフィールドを含みます: 

フィールド名説明
resultboolリクエスト結果。true は成功を示します
values.left_timeint残り時間
values.statusbool同期ステータス。true は成功を示します

check_scanner_connection 

bool check_scanner_connection();

機能: スキャナーの接続状態を確認します

戻り値 : true は正常な接続を示し、false は異常な接続を示します 

connect_device 

bool connect_device(fjminislam::Device device); 

機能: 指定したデバイスに接続します

パラメーター

device

 接続するデバイスの情報

戻り値 : true は接続成功を示し、false は接続失敗を示します 

get_current_name 

std::string get_current_name();

機能: 現在接続されているデバイスの名前を取得します

戻り値 : デバイス名 

get_version 

std::string get_version();

機能: SDKバージョンを取得

戻り値 : SDKバージョン番号 


基本的な使用手順 

#include "fjminislam_sdk.h"

int main() {
    fjminislam::SDK sdk = fjminislam::SDK();
    sdk.get_version();
    fjminislam::Device selected_scanner;
    std::vector<fjminislam::Device> devices_list = sdk.get_available_devices();
    if (devices_list.size() == 0) {
        printf("no scanner found\n");
        return 1;
    }
    selected_scanner = devices_list[0];
    printf("selectd device,serialno:%s ip:%s\n",selected_scanner.serialno.c_str(), selected_scanner.ip.c_str());

    std::string sdk_version = sdk.get_version();
    printf("sdk_version: %s\n", sdk_version.c_str());

    if (!sdk.connect_device(selected_scanner)) {
        printf("connect_device failed\n",);
        return 2;
    }

    if (!sdk.check_scanner_connection()) {
        printf("check_scanner_connection failed\n");
        return 3;
    }

    json time_syn_result = sdk.time_syn();
    printf("time_syn response: %s\n", time_syn_result.dump().c_str());

    json start_map_result = sdk.start_map("test1");
    printf("start_map response: %s\n", start_map_result.dump().c_str());
    
#ifdef _WIN32
    Sleep(30);
#else
    sleep(30);
#endif
    std::string cur_name = sdk.get_current_name();
    printf("cur_name: %s\n", cur_name.c_str());

    json stop_map_result = sdk.stop_map();
    printf("stop_map response: %s\n", stop_map_result.dump().c_str());

    json get_maplist_result = sdk.get_maplist();
    printf("get_maplist response: %s\n", get_maplist_result.dump().c_str());

    bool download_result = sdk.download_map_data(cur_name, fjminislam::DownloadDataType::LAS, "./");
    printf("download_map_data response: %d\n", download_result);
    return 0;
}


  1. SDKを使用する前に、デバイスがネットワークに正しく接続されていることを確認してください 

  2. スキャン中はデバイスを安定した状態に保ち、急な動きを避けてください

  3. データをダウンロードする際は、保存先パスに十分な空き容量があることを確認してください

  4. APIを呼び出す前に、デバイスの接続状態を確認することを推奨します 


基本的な使用手順 

#include "fjminislam_sdk.h"

int main() {
    fjminislam::SDK sdk = fjminislam::SDK();
    sdk.get_version();
    fjminislam::Device selected_scanner;
    std::vector<fjminislam::Device> devices_list = sdk.get_available_devices();
    if (devices_list.size() == 0) {
        printf("no scanner found\n");
        return 1;
    }
    selected_scanner = devices_list[0];
    printf("selectd device,serialno:%s ip:%s\n",selected_scanner.serialno.c_str(), selected_scanner.ip.c_str());

    std::string sdk_version = sdk.get_version();
    printf("sdk_version: %s\n", sdk_version.c_str());

    if (!sdk.connect_device(selected_scanner)) {
        printf("connect_device failed\n",);
        return 2;
    }

    if (!sdk.check_scanner_connection()) {
        printf("check_scanner_connection failed\n");
        return 3;
    }

    json time_syn_result = sdk.time_syn();
    printf("time_syn response: %s\n", time_syn_result.dump().c_str());

    json start_map_result = sdk.start_map("test1");
    printf("start_map response: %s\n", start_map_result.dump().c_str());
    
#ifdef _WIN32
    Sleep(30);
#else
    sleep(30);
#endif
    std::string cur_name = sdk.get_current_name();
    printf("cur_name: %s\n", cur_name.c_str());

    json stop_map_result = sdk.stop_map();
    printf("stop_map response: %s\n", stop_map_result.dump().c_str());

    json get_maplist_result = sdk.get_maplist();
    printf("get_maplist response: %s\n", get_maplist_result.dump().c_str());

    bool download_result = sdk.download_map_data(cur_name, fjminislam::DownloadDataType::LAS, "./");
    printf("download_map_data response: %d\n", download_result);
    return 0;
}

FJD Trion S1 ロボット犬マウント

先進的なSLAMアルゴリズムを搭載したS1は、スキャンしながら現実空間を構築するため、細部も見逃しません。
製品画像

FJD Trion S1 ロボット犬マウント

先進的なSLAMアルゴリズムを搭載したS1は、スキャンしながら現実空間を構築するため、細部も見逃しません。
製品画像

データ構造

デバイス構造

struct Device
{
std::string serialno; // デバイスのシリアル番号
std::string ip; // デバイスIP
addressstd::string fwversion; // ファームウェアバージョン
};

SDKクラス

コンストラクタ

コンストラクタおよびデストラクタ関数

公開メンバー変数

D

  1. SDKを使用する前に、デバイスがネットワークに正しく接続されていることを確認してください 

  2. スキャン中はデバイスを安定した状態に保ち、急な動きを避けてください

  3. データをダウンロードする際は、保存先パスに十分な空き容量があることを確認してください

  4. APIを呼び出す前に、デバイスの接続状態を確認することをお勧めします 

続きを読む

3DGSデータをクロップおよびトリミングする方法

FJD Trion Model機能チュートリアル

続きを読む

自動樹種識別の使い方

FJD Trion Model機能チュートリアル

続きを読む

3D Gaussian Splattingを作成する方法

FJD Trion Model機能チュートリアル

続きを読む

HyperDense+機能の使い方

FJD Trion Model機能チュートリアル

続きを読む

新しい描画ツールの使い方

FJD Trion Model機能チュートリアル

続きを読む

補正ツールの使い方

FJD Trion Model機能チュートリアル

展開

FJD Trion S1 ロボット犬マウント

先進的なSLAMアルゴリズムを搭載したS1は、スキャンしながら現実空間を構築するため、細部も見逃しません。
製品画像

FJD Trion S1 ロボット犬マウント

先進的なSLAMアルゴリズムを搭載したS1は、スキャンしながら現実空間を構築するため、細部も見逃しません。
製品画像