ARC eye VL API
- 印刷する
- PDF
ARC eye VL API
- 印刷する
- PDF
記事の要約
この要約は役に立ちましたか?
ご意見ありがとうございます
概要
ARC eye Visual Localization (VL) APIは、カメラを含むビジョンデバイスから収集された情報を通じて、屋外と GPSが届かない屋内でも現在位置を正確に教えてくれる測位サービスを提供します。画像だけで屋内位置データを確認できます。
参考
WiFi Localization: デバイスから収集された WiFi電波強度(RSSI)を利用して、GPSが届かない屋内で現在の大まかな位置を教えてくれる測位サービスを追加で提供します。デバイスの大まかな位置と一緒にロケーション情報も提供されます。これを利用して、より正確な ARC eye VL APIリクエスト(半径サーチ: lastPose + odometryの組み合わせ)を送ることができます。
参考: RSSIとは
注意
2024年7月以前にスキャンされた空間については、ARC eye WiFi Localization機能はサポートされません。
空間データの構築
コンソールで空間データを構築して、VL APIを使用することができます。SLAMデータ変換から SLAMデータマージ、ローカライズ、VLデータ変換まで、すべての作業を順に行う必要があります。詳細は、ARC eyeご利用ガイドをご参照ください。
APIの準備
VLデータマージに成功すると、ARC eye > APIメニューに「待機」状態の APIが作成されます。その APIを選択してデプロイすると、VL APIを使用できます。
他の APIを作成してデプロイするバージョンを変更する場合、既存の APIは停止されます。*停止中には他の APIをデプロイできません。
リクエスト
メソッド | リクエスト URI |
---|---|
POST | ARC eye > API > API連携キーの確認の InvokeURLで呼び出す |
リクエストヘッダ
名前 | 説明 |
---|---|
X-ARCEYE-SECRET | ARC eye > API > API連携キーの確認の Secret Keyを使用 |
Content-Type | multipart/form-data |
リクエストボディ
フィールド名 | 必須の有無 | データタイプ | 説明 | 制限事項 |
---|---|---|---|---|
image | Y | file | wifiリクエストの場合、省略可能 | |
cameraParameters | N | string | カメラパラメータ情報を入力。入力しない場合、デフォルト値で動作 fx、fy、cx、cy、k1、k2、p1、p2、k3 - (fx,fy): focal length - (cx,cy): principal point - (k1,k2): radial distortion - (p1,p2): tangential distortion - (k3): radial distortion | |
lastPose | N | string | - クエリ画像を作成する時点に推定された画像の、commaで区切られた6-dof pose情報 - 最近レスポンスで渡された pose値に odometry値を足す。 | odometryと一緒に使用することが必要 |
odometry | N | string | - commaで区切られた6-dof pose情報 - 最後のクエリ画像を送信した時点と現在のクエリ画像を送信した時点との間の pose変化量 | lastPoseと一緒に使用することが必要 |
withGlobal | N | boolean | - trueの場合、lastPose値を「緯度、経度、tz、qw、qx、qy、qzと解析。 - 値が設定されていない場合や falseの場合、lastPose値を「tx、ty、tz、qw、qx、qy、qz」と解析 | |
withlnlier | N | boolean | trueの場合、測位時に使用した有効な3D-2D correspondencesがレスポンスに追加される | |
wifi | N | file | Json形式の WiFiの電波強度スキャンファイル |
CURL example:
curl -X POST '{invokeUrl}' \
-H 'X-ARCEYE-SECRET: {secretKey}' \
-H 'Content-Type: multipart/form-data' \
-F 'image=@location.jpg;type=image/jpeg'
curl -X POST '{invokeUrl}' \
-H 'X-ARCEYE-SECRET: {secretKey}' \
-H 'Content-Type: multipart/form-data' \
-F 'image=@location.jpg;type=image/jpeg' \
-F 'odometry=0,0,0,1,0,0,0' \
-F 'lastPose=0,0,0,1,0,0,0' \
-F 'cameraParameters=1186.7,1406.5,540,960,0.0,0.0,0.0,0.0,0.0' \
-F 'withlnlier=true'
レスポンス
レスポンスボディ
フィールド名 | データタイプ | 説明 |
---|---|---|
result | string | レスポンス結果: "SUCCESS"、"FAILURE" |
message | string | 結果メッセージ |
tips | string | 追加情報 |
pose | string | 画像名、tx、ty、tz、qw、qx、qy、qzの値を意味 |
total | int | クエリ画像から抽出された特徴の総数 |
inlier | int | クエリ画像から抽出された有効な特徴の総数 |
inliers | array | 測位時に使用した有効な3D-2D correspondences、 - [U,V]: 画像上のピクセル座標 - [X,Y,Z]: 対応する3次元ポイント |
residual | float | 有効な特徴の projection error (pixel単位) |
status | string | サーバの状態 |
floor | string | クエリ画像の層情報 |
lonLat | string | Longitude(経度)、Latitude(緯度) |
globalPose | string | 画像名、緯度、経度、altitude、qw、qx、qy、qzの値を意味 |
nnPoses | string[] | 隣接するリファレンス画像の画像名、tx、ty、tz、qw、qx、qy、qz値を意味 |
datasetInfo | string | スキャン時に区分した各階層の名前を1つに繋げた値 |
レスポンス例
{
"result": "SUCCESS",
"status": "success",
"pose": "VL0_0000050014880892_000000006.jpg,2.746507,9.889554,-20.729435,0.657244,-0.096816,-0.068169,0.744318",
"total": 7738,
"inlier": 1762,
"inliers": [
{
"U" : 356.8439,
"V" : 146.9978,
"X" : 114.01553,
"Y" : 233.33755,
"Z" : 12.9115095
}
],
"residual": 5.998124,
"floor": "ground",
"lonlat": "126.61787915108854,37.47318807235039",
"globalPose": "VL0_0000050014880892_000000006.jpg,37.47318807235039,126.61787915108854,21.688565,0.657244,-0.096816,-0.068169,0.744318",
"nnPoses": [
"VL0_1663124545528216.jpg,3.219894,17.559616,-19.898514,0.720037,-0.121523,-0.006865,0.683177",
"VL1_1663124536528144.jpg,3.498234,18.586061,-20.282135,0.721541,-0.07256,-0.117165,0.678518",
"VL2_1663124537528455.jpg,2.849693,18.648811,-20.386539,0.631969,-0.018601,-0.109304,0.767022",
"VL0_1663124544528213.jpg,3.159655,16.287134,-19.874195,0.701073,-0.139553,0.015575,0.699127",
"VL1_1663124521528042.jpg,4.446866,15.010426,-19.975168,0.755891,-0.150474,-0.035666,0.636171",
"VL1_1663124543528186.jpg,3.704958,15.066489,-20.11025,0.761836,-0.152187,-0.059388,0.626832",
"VL4_1663124540528089.jpg,4.224849,16.700996,-20.057743,0.601045,-0.055503,-0.034118,0.796555",
"VL0_1663124547528227.jpg,2.683109,20.13681,-20.074528,0.543752,-0.150696,-0.013089,0.825502",
"VL4_1663124516527975.jpg,3.005801,17.602791,-20.282951,0.761109,-0.017261,-0.000655,0.648394",
"VL2_1663124520528189.jpg,5.639919,15.146515,-19.748491,0.675394,-0.108291,-0.088871,0.724029",
"VL1_1663124513527983.jpg,4.592686,18.804764,-20.067684,0.770351,-0.120287,-0.11107,0.616242"
],
"datasetInfo": "123_LOCAL_GND_1F_084"
}
{
"result": "FAILURE",
"status": "success",
"message": "internal server error",
"pose": "failed",
"floor": "",
"lonlat": "",
"globalPose": "",
"datasetInfo": ""
}
エラーコード
エラーレスポンス:
{
"code": "9999",
"message": "Unknown server error.",
"path": "/api/v1",
"product": "ARC eye",
"traceId": "9c1f55ac7d8341d792a922b2590c045f",
"timestamp": 1570776853475,
"status": "500"
}
エラーコード | HTTPの状態 | 説明 |
---|---|---|
0001 | 404 | Not Found |
0020 | 401 | Unauthorized |
0030 | 403 | Forbidden |
0100 | 40x | Invalid Parameter |
0101 | 409 | Duplicate |
1000 | 50x | Internal API Error |
1001 | 500 | Processing Error |
9999 | 500 | Unknown Error |
WiFiレスポンス
WiFiレスポンスボディ
フィールド名 | データタイプ | 説明 |
---|---|---|
result | string | レスポンス結果: "SUCCESS"、"FAILURE" |
message | string | 結果メッセージ |
position | string | マッピング空間における2自由度の位置値(XY平面)を意味 |
lonLat | string | Longitude(経度)、Latitude(緯度) |
datasetInfo | string | スキャン時に区分した各階層の名前を1つに繋げた値 |
datasetInfoScore | float | ロケーション区分の精度(0に近いほど信頼度が低く、1に近いほど信頼度が高い) |
WiFiレスポンス例
{
"result": "SUCCESS",
"position": "16.6337711608804,5.690108685931897",
"lonLat": "127.105412759367,37.359465269300976",
"datasetInfo": "Naver_1784_1F",
"datasetInfoScore": 0.6852494
}
WiFiエラーコード
エラーレスポンス:
{
"traceId": "3d77c10b1a0646659b6c897a35a5fa64",
"path": "/vl/v1/300568/9bb1a2b6f8031e355dfdb8e5205a1f7a860b167a0fcbd35681235f35c3629634/location",
"timestamp": 1725449250446,
"product": "ARC eye",
"status": 422,
"code": "0100",
"message": "Invalid parameters.",
"details": "there are no valid signals"
}
エラーコード | HTTPの状態 | 説明 |
---|---|---|
0001 | 404 | Not Found |
0020 | 401 | Unauthorized |
0030 | 403 | Forbidden |
0100 | 40x | Invalid Parameter |
0100 | 400 | "there is no location" (location parameterが渡されなかった場合) |
0100 | 400 | "failed to parse wifi scan file" (入力された wifiデータに問題がある場合) |
0100 | 404 | "failed to get location info from qdrant: xxx" (Qdrant dbからその location情報を得られない場合) |
0100 | 404 | "failed to get wifi-finder model file from S3" (加工された WiFi Finderモデルがない場合) |
0100 | 404 | "wifi-loc model does not exists" (加工された WiFi Locモデルがない場合) |
0100 | 422 | "failed, it has low dataset info score" (対象ロケーションに有効な(電波が強い) WiFi電波がない場合) |
0100 | 422 | "failed to get location info from qdrant: xxx" (低い DatasetInfoScoreによりロケーション識別が困難場合) |
0101 | 409 | Duplicate |
1000 | 500 | "No matching AP list exists" (mac-addressが一致する WiFiの電波がない場合) |
1000 | 500 | "failed to load qdrant" (内部サーバ通信中にエラーが発生した場合(Qdrant vector dbとの通信ができない場合)) |
1000 | 500 | "failed to get global position filefrom qdrant" (内部サーバ通信中にエラーが発生した場合(global poistion情報を qdrantから得られない場合)) |
1000 | 500 | "out of service, due to there is no valid xxx" (内部サーバ通信中にエラーが発生した場合(xxxがない場合)) |
1001 | 500 | Processing Error |
9999 | 500 | Unknown Error |
この記事は役に立ちましたか?