コンパイル
Qt5のCoreおよびNetworkコンポーネントをインストールします。インストールコマンドはLinuxディストリビューションによって異なります。以下はUbuntuの例です。libzipを取得してコンパイルします。
srcと同じ階層にある/V2-ROS-SDK-serviceからROSパッケージをコンパイルします。
実行
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インターフェースを更新し、表示する地図名が変われば切り替えは成功です。
オドメトリをアップロードする
nav_msgs::Odometryデータを/sim/odomへ発行します(トピックは変更可能です)。
輪郭地図をダウンロードする
std_msgs/StringメッセージをLxCamera_DownloadMapへ発行します。- メッセージには、絶対ホストパスと地図名をカンマ区切りで含めます。地図名はカメラ上の完成済み地図の
.zipファイル名です。 - ダウンロードに成功すると、指定したホストパスに地図アーカイブが保存されます。展開すると
PGM地図ファイルとYAML設定ファイルを取得できます。
地図ZIPファイルをアップロードする(新規)
std_msgs/StringメッセージをLxCamera_UploadMapZipへ発行します。- メッセージには、アップロードする地図アーカイブのパスを含めます。例:
/home/fr1511b/map.zip。地図ダウンロードインターフェースで取得したアーカイブを使用してください。 - 地図が見つかると、SDKがカメラへ送信します。カメラは
/home/fr1511b/hontai/map/に展開します。
再位置推定する
geometry_msgs::PoseWithCovarianceStampedデータをLxCamera_UploadRelocへ発行します。- ポーズにはLiDARポーズの
x、y、yawを含めます。 - カメラの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
サービス定義: