概要
このページでは、V2ローカライゼーションモジュールのlx_camera_ros が提供するROS2トピックとサービスについて説明します。
コンパイル
Qt5のCoreおよびNetworkコンポーネントをインストールします。インストールコマンドはLinuxディストリビューションにより異なります。次の例ではUbuntuを使用します。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インターフェースを更新します。表示されるマップ名が変われば切替成功です。
マップをダウンロードする
std_msgs::msg::StringメッセージをLxCamera_DownloadMapに公開します。- メッセージには2つのフィールドがあります。
save_pathはホスト上の絶対パス、mapnameはカメラ上の完成済みマップの.zipファイル名です。 - ダウンロードに成功すると、指定したホストパスにマップアーカイブが保存されます。展開して
PGMマップファイルとYAML設定ファイルを取得します。
オドメトリを送信する
nav_msgs::msg::Odometry データを /sim/odom に公開します(トピックは変更できます)。
再ローカライゼーションする
geometry_msgs::msg::PoseWithCovarianceStampedデータをLxCamera_UploadRelocに公開します。- 姿勢にはLiDARの姿勢
x、y、yawを含めます。 - カメラの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
サービス定義: