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

概要

このページでは、V2ローカライゼーションモジュールの lx_camera_ros が提供するROS2トピックとサービスについて説明します。

コンパイル

Qt5のCoreおよびNetworkコンポーネントをインストールします。インストールコマンドはLinuxディストリビューションにより異なります。次の例ではUbuntuを使用します。
libzipのダウンロードページ から libzip のソースを取得し、公式手順に従ってコンパイルします。 /lx_camera_ros で次のコマンドを実行します。

実行

YAML設定ファイルを変更した場合は再コンパイルしてください。プロジェクトを再ビルドするまで変更は反映されません。

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

インターフェースをテストする前にカメラの電源を入れ、約30秒待ってからROS2 SDKノードを起動します。

ローカライゼーション姿勢を受信する

ROS2はカメラの x、y、theta を継続的に受信し、値と theta から変換したクォータニオンを LxCamera_LocationPoseResult に公開します。姿勢はTFでもブロードキャストされます。

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

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

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

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

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

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

マッピング進捗を受信する

マッピング開始後、ROS2は進捗(0–100)を std_msgs::msg::Int32 として LxCamera_Mapping_Progress に公開します。

マッピング状態を受信する

マッピング開始後、ROS2はマッピング状態を std_msgs::msg::Bool として LxCamera_MappingState に公開します。

パラメータを設定する

std_msgs::msg::String メッセージを LxCamera_SetParam に公開します。メッセージにはカンマ区切りの9つの浮動小数点値 x,y,z,yaw,pitch,roll,x,y,yaw を含めます。最初の6つはカメラ姿勢、最後の3つはLiDAR姿勢を定義します。更新に成功すると、/home/fr1511b/hontai/params/config_install_FL21500HAF.ini の [Laser1] および [Camera1] セクションの対応値が更新されます。

マップを切り替える

完成済みマップ名を含む std_msgs::msg::String メッセージを LxCamera_SwitchMap に公開します。カメラのWebインターフェースを更新します。表示されるマップ名が変われば切替成功です。

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

  1. std_msgs::msg::String メッセージを LxCamera_DownloadMap に公開します。
  2. メッセージには2つのフィールドがあります。save_path はホスト上の絶対パス、mapname はカメラ上の完成済みマップの .zip ファイル名です。
  3. ダウンロードに成功すると、指定したホストパスにマップアーカイブが保存されます。展開して PGM マップファイルと YAML 設定ファイルを取得します。

オドメトリを送信する

nav_msgs::msg::Odometry データを /sim/odom に公開します(トピックは変更できます)。

再ローカライゼーションする

  1. geometry_msgs::msg::PoseWithCovarianceStamped データを LxCamera_UploadReloc に公開します。
  2. 姿勢にはLiDARの姿勢 x、y、yaw を含めます。
  3. カメラのWebインターフェースで表示される位置が送信した姿勢に更新されれば、再ローカライゼーションは成功です。
クォータニオンには制約があり、任意の値を入力できません。Euler-to-quaternion converter を使用して、Euler yaw 角をクォータニオンの xyzw 値に変換してください。

メッセージ種別プレフィックス

ホストコンピューターはUDPでカメラと通信します。各メッセージの先頭4バイトはインターフェースのデータ種別を識別します。

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

マッピング、マップ切替、マップダウンロード、再ローカライゼーションはROS2サービスでも利用できます。サービス応答の true は成功、false は失敗を示します。
次のコマンドには ros2 service call を使用します。マップ名は数字で始めず、30文字以内にしてください。

マップを作成する

サービス名:/LxCamera_Mapping_srv サービス定義:
サービスを呼び出します。

マップを切り替える

サービス名:/LxCamera_SwitchMap_srv サービス定義:
サービスを呼び出します。

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

サービス名:/LxCamera_DownloadMap_srv サービス定義:
サービスを呼び出します。

再ローカライゼーションする

サービス名:/LxCamera_UploadReloc_srv サービス定義:
サービスを呼び出します。

現在のマップ名を取得する

サービス名:/LxCamera_GetCurMapname_srv サービス定義:
サービスを呼び出します。

現在のマップ一覧を取得する

サービス名:/LxCamera_GetMapList_srv サービス定義:
サービスを呼び出します。

マッピングを終了する

サービス名:/LxCamera_ExitMapping_srv サービス定義:
サービスを呼び出します。

マップを削除する

サービス名:/LxCamera_EraseMap_srv サービス定義:
サービスを呼び出します。

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

サービス名:/LxCamera_DownloadHeatMap_srv サービス定義:
サービスを呼び出します。

増分マッピング

サービス名:/LxCamera_IncMapping_srv サービス定義:
サービスを呼び出します。