メインコンテンツへスキップ

コンパイル

Qt5のCoreおよびNetworkコンポーネントをインストールします。インストールコマンドはLinuxディストリビューションによって異なります。以下はUbuntuの例です。
公式手順に従い、libzipダウンロードページからlibzipを取得してコンパイルします。 srcと同じ階層にある/V2-ROS-SDK-serviceからROSパッケージをコンパイルします。

実行

カメラでROSマスター・スレーブ設定が有効な場合は、ROSサンプルを実行する前に無効化してください。カメラの電源投入後、約20秒待ってからサンプルを起動します。
srcと同じ階層にあるhome/username/V2_ROS_SDKで、次を実行します。

ROSトピックインターフェース

インターフェースをテストする前に、カメラの電源を入れ、内蔵プログラムの起動まで約30秒待ちます。その後、ROS SDKノードを起動します。

ローカライゼーションポーズを受信する

ROSはカメラのx、y、theta値を継続的に受信し、これらの値とthetaから変換したクォータニオンをLxCamera_LocationPoseResultへ発行します。ポーズはTFでもブロードキャストされます。

ローカライゼーション状態を受信する

ROSはカメラのローカライゼーション状態(trueまたはfalse)を1 Hzで受信し、std_msgs::BoolとしてLxCamera_LocationResultに発行します。

カメラのストレージ使用量を受信する

ROSはカメラのストレージ使用率を2 Hzで受信し、std_msgs::Float32としてLxCamera_Capacity_Statusに発行します。

障害モジュール名を受信する

ROSは障害モジュール名をカメラから受信し、std_msgs::StringとしてLxCamera_Module_Errorに発行します。

地図作成状態を受信する

地図作成の開始後、ROSは地図作成状態をstd_msgs::BoolとしてLxCamera_MappingStateに発行します。

地図作成の進行状況を受信する

地図作成の開始後、ROSは進行状況(0–100)をstd_msgs::Int32としてLxCamera_Mapping_Progressに発行します。

パラメータを設定する

std_msgs/StringメッセージをLxCamera_SetParamへ発行します。メッセージには、x,y,z,yaw,pitch,roll,x,y,yawの9つの浮動小数点値をカンマ区切りで含めます。先頭6値はカメラポーズ、後ろ3値はLiDARポーズです。更新に成功すると、/home/fr1511b/hontai/params/config_install_FL21500HAF.iniの[Laser1]および[Camera1]セクションの対応値が更新されます。

地図を切り替える

完成済み地図の名前を含むstd_msgs/StringメッセージをLxCamera_SwitchMapへ発行します。カメラのWebインターフェースを更新し、表示する地図名が変われば切り替えは成功です。

オドメトリをアップロードする

  1. nav_msgs::Odometryデータを/sim/odomへ発行します(トピックは変更可能です)。

輪郭地図をダウンロードする

  1. std_msgs/StringメッセージをLxCamera_DownloadMapへ発行します。
  2. メッセージには、絶対ホストパスと地図名をカンマ区切りで含めます。地図名はカメラ上の完成済み地図の.zipファイル名です。
  3. ダウンロードに成功すると、指定したホストパスに地図アーカイブが保存されます。展開するとPGM地図ファイルとYAML設定ファイルを取得できます。

地図ZIPファイルをアップロードする(新規)

  1. std_msgs/StringメッセージをLxCamera_UploadMapZipへ発行します。
  2. メッセージには、アップロードする地図アーカイブのパスを含めます。例:/home/fr1511b/map.zip。地図ダウンロードインターフェースで取得したアーカイブを使用してください。
  3. 地図が見つかると、SDKがカメラへ送信します。カメラは/home/fr1511b/hontai/map/に展開します。

再位置推定する

  1. geometry_msgs::PoseWithCovarianceStampedデータをLxCamera_UploadRelocへ発行します。
  2. ポーズにはLiDARポーズのx、y、yawを含めます。
  3. カメラのWebインターフェースに表示される位置が送信ポーズへ更新されると、再位置推定は成功です。
クォータニオンには制約があるため、任意の値を設定しないでください。オイラー角からクォータニオンへの変換ツールで、Euler yaw角をクォータニオンxyzw値に変換してください。

ROSサービスインターフェース

地図作成、地図切替、地図ダウンロード、再位置推定はROSサービスからも実行できます。サービスの応答trueは成功、falseは失敗を示します。確認が必要な操作にはサービスインターフェースを推奨します。
次のコマンドにはrosservice callを使用します。地図名は数字で始めることができず、30文字以内にする必要があります。

地図を作成する

サービス名:/lx_localization_node/LxCamera_Mapping_srv サービス定義:
サービスを呼び出す:

地図を切り替える

サービス名:/lx_localization_node/LxCamera_SwitchMap_srv サービス定義:
サービスを呼び出す:

地図をダウンロードする

サービス名:/lx_localization_node/LxCamera_DownloadMap_srv サービス定義:
サービスを呼び出す:

再位置推定する

サービス名:/lx_localization_node/LxCamera_UploadReloc_srv サービス定義:
サービスを呼び出す:

現在の地図名を取得する

サービス名:/lx_localization_node/LxCamera_GetCurMapname_srv サービス定義:
サービスを呼び出す:

現在の地図一覧を取得する

サービス名:/lx_localization_node/LxCamera_GetMapList_srv サービス定義:
サービスを呼び出す:

地図作成を終了する(カスタムインターフェース)

サービス名:/lx_localization_node/LxCamera_ExitMapping_srv サービス定義:
サービスを呼び出す:

地図を削除する

サービス名:/lx_localization_node/LxCamera_EraseMap_srv サービス定義:
サービスを呼び出す:

ヒートマップをダウンロードする

サービス名:/lx_localization_node/LxCamera_DownloadMap_srv サービス定義:
サービスを呼び出す:

差分地図作成

サービス名:/lx_localization_node/LxCamera_IncMapping_srv サービス定義:
サービスを呼び出す: