概要
SLAM SDK は、S2/P2/P1 デバイスと通信するための C++ ライブラリで、デバイス検出、マップスキャン、データダウンロードなどの機能を提供します。
名前空間
namespace fjminislam
定数定義
ポート設定
| 定数名 | 値 | 説明 |
| BROADCAST_PORT | 29527 | デバイスのブロードキャストポート |
| PORT | 9090 | デバイス通信ポート |
ダウンロードデータ型列挙
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形式の地図情報:
| フィールド名 | 型 | 説明 |
| result | bool | リクエスト結果。true は成功を示します |
| values.has_camera | array<int> | カメラの有無。1 はあり、0 はなしを意味します |
| values.maplist | array<string> | 地図名の一覧 |
| values.match_status | array<int> | ブレークポイントでスキャンを継続するかどうか。1 ははい、0 はいいえを意味します |
| values.rtk_locked_percent | array<int> | RTKロック率 |
| values.slam_dis_in_m | array<int> | ミッション走行距離、単位はメートル |
| values.task_time_in_sec | array<int> | タスク時間、単位は秒 |
| values.vec_data_types_for_download | array<int> | ダウンロード可能なデータ型、1 は存在を示す |
start_map
json start_map(std::string mapname="");
機能: スキャンタスクを開始
パラメーター:
mapname
カスタムマップ名、任意
戻り値 : JSON 形式の起動結果。以下のフィールドを含みます:
| フィールド名 | 型 | 説明 |
| result | bool | リクエスト結果。true は成功を示します |
| values.status | int | タスク状態: 0 - ミッション中止 1 - 正常状態 -1 - 初期化失敗 -2 - 機器使用中 -4 - タスク処理中 -6 - Instaカメラのストレージ容量不足 |
stop_map
json stop_map();
機能: スキャンタスクを停止
戻り値 : 以下のフィールドを含む JSON 形式の停止結果:
| フィールド名 | 型 | 説明 |
| result | bool | リクエスト結果。true は成功を示します |
| values.message | string | メッセージの説明 |
| values.success | bool | 停止が成功したかどうか |
check_device_task
json check_device_task(bool force_check=true);
機能: デバイスのセルフチェック結果を取得または実行する
パラメーター:
force_check
セルフチェックを強制するかどうか。true は結果のみを取得することを示し、false はセルフチェックを実行することを示します
戻り値: 以下のフィールドを含む JSON 形式のセルフチェック結果:
| フィールド名 | 型 | 説明 |
| result | bool | リクエスト結果。true は成功を示します |
| values.status | int | デバイス状態: 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 形式の時刻同期結果。以下のフィールドを含みます:
| フィールド名 | 型 | 説明 |
| result | bool | リクエスト結果。true は成功を示します |
| values.left_time | int | 残り時間 |
| values.status | bool | 同期ステータス。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;
}SDKを使用する前に、デバイスがネットワークに正しく接続されていることを確認してください
スキャン中はデバイスを安定した状態に保ち、急な動きを避けてください
データをダウンロードする際は、保存先パスに十分な空き容量があることを確認してください
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;
}データ構造
デバイス構造
struct Device
{
std::string serialno; // デバイスのシリアル番号
std::string ip; // デバイスIP
addressstd::string fwversion; // ファームウェアバージョン
};
SDKクラス
コンストラクタ
コンストラクタおよびデストラクタ関数
公開メンバー変数
D
SDKを使用する前に、デバイスがネットワークに正しく接続されていることを確認してください
スキャン中はデバイスを安定した状態に保ち、急な動きを避けてください
データをダウンロードする際は、保存先パスに十分な空き容量があることを確認してください
APIを呼び出す前に、デバイスの接続状態を確認することをお勧めします