AbudoriLab.

自律ロボットで誰でも遊べるよう試行錯誤するブログです。

Velodyne LiDARとHESAI LiDARを動かし、自律ロボット開発の準備をする。【つくちゃれ2024-1】

Abudoriです。今回は3D LiDARをROS 2で動かせる準備をします。 高性能なSLAMやLocalization、周辺の環境認識をするには3D LiDARが非常に強力です。 今回はVelodyneの16ラインセンサのVLP-16、HESAIの32ラインセンサのPandar XT32をROS 2でトピック通信で使用できるまで準備を行います。

この記事はつくちゃれ2024の記録の一部です。 この記事の続きやロボットの他の実装などはこちらにツリーとしてリンクを貼っております。ぜひご覧ください。

www.abudorilab.com

スポンサードリンク

VLP-16とPandar XT32

それぞれの外観です。ただの自慢です。いいでしょ〜。早く触ってみましょう。

Velodyne LiDAR VLP-16

Velodyne LiDARのVLP-16
InterfaceBOX。センサからの情報をEthernetに変換する。
中身は単純。12V電源ラインとEthernetの通信線2系統が印字されている。
ここにEthernetとDCジャックを挿します

HESAI LiDAR Pandar XT32

Pandar XT32。32本ラインながらサイズはVLP-16と変わらずコンパクト。
InterfaceBOX。構成はVLP-16のものと同じ。使い方も同じ。
消費電力は12W。常に1A消費するとして余裕を持って3Aは欲しいところ。これは4Aもある。

LiDARを接続する

VLP-16はEhternetケーブルで接続し、PCとはネットワークで接続します。USBケーブルさして終わりではありません。以下のような繋がり方があります。

・直接1対1で繋げる

Ethernetケーブルをパソコンに直接繋げる方法です。今回のように、センサの動作確認や小規模のロボットでは、この繋ぎ方で十分です。

EthernetケーブルでPCとそのまま繋ぐ

・ルータを介してロボット内でLANを形成する

Ethernetケーブルをパソコンと直接繋ぐのではなく、ルータに繋ぎます。 ロボットにルータを搭載していれば、ロボット内で複数のパソコンや複数のセンサ同士で通信することができます。 また、ROS 2では、LANの中に所属するだけでトピック通信ができるため、ロボットにルータが搭載されていると拡張性が高く便利です。

ただ、WiFiルータのWiFi接続だとうまくいきません。接続もできるし、正常に動作しますが、速度が出ません。10HzでPointCloudが出てくるはずなのに、0.5~1Hzくらいで間欠に情報が飛んでくるといったことが発生します。

LiDARとPCの間にルータを挟んで接続します

パソコンを増やした場合

Point Cloudの処理をPC1に、画像処理をPC2に処理分散といった使い方が実現します

センサを増やした場合

ロボット前方を3D LiDAR1に、ロボット後方を3D LiDAR2に設定し、2つのLiDARのセンサ値を合算してSLAMをするといったことが実現します。

ロボット前方を3D LiDAR1に、ロボット後方を3D LiDAR2に設定し、2つのLiDARのセンサ値を合算してSLAMをするといったことが実現します

有線Ethernetケーブルで接続したあとには、ネットワーク設定をしましょう。 有線Ethernet接続の設定から、IPv4の設定をします。画像のように手動IPに設定し、アドレスを“192.168.1.100”、サブネットを“255.255.255.0”に設定しましょう。 WiFi接続は別で設定がありますから、この変更を適用しても影響はありません。通常のインターネット検索はそちらで自動的に接続されます。もし、有線ネットワークでインターネット接続をしている場合は、ルータ側の設定をセンサに合わせるか、センサのIPアドレスをルータに合わせる必要があります。

ネットワーク設定からEth設定を開きます。
IPv4タブから手動設定、アドレスとネットマスクを画像のように入力しましょう。

今回紹介するセンサはどちらも192.168.1.201でアクセスされるため、同じ操作でどちらも動作することができます(老舗のVelodyneに他のセンサが倣ったという方が正しいですが…)。

3D LidarをROS 2で動かしてみよう

ROS 2はインストールされている状態から始めます。インストール方法はこちらをご覧ください。

Humbleインストール

www.abudorilab.com

Velodyne を動かしてみる

VLP-16をコンピュータと接続します。ここでは、1対1で接続します。 上記では、1対1の接続とロボット内でLANを形成する接続を紹介しましたが、ソフトウェアとしては操作に代わりありません。

VelodyneのROSパッケージはaptパッケージマネージャで配布されているためapt installするだけで環境が手に入ります。

sudo apt-get install ros-humble-velodyne 

別のROSディストリビューションの方は、ros-distro-velodyneの“distro”の部分を変えてください。

ROSパッケージを実行します。

ros2 launch velodyne velodyne-all-nodes-VLP16-launch.py

ローンチを立ち上げてもセンサの通信状況が表示されるだけ
この状態でトピックは出ているのですが、確認したいのでRViz2でみてみましょう。

新しい端末で

rviz2

Velodyneのトピックを見るために、FixedFrameを“velodyne”に、ByTopicからvelodyne_pointsを選択して表示させます。

FixedFrame=velodyne、ByTopicからvelodyne_pointsを選択

うまくいけばこのような画面になっているはずです。

RViz2でpoint cloudを表示した様子

Pandar XT32 を動かしてみる

Pandar XT32をコンピュータと接続します。これも、1対1で接続します。 上記では、1対1の接続とロボット内でLANを形成する接続を紹介しましたが、ソフトウェアとしては操作に代わりありません。

colcon_ws/srcに移動してソースコードを利用します。 HESAI社が提供する公式のリポジトリはこちら

github.com

まずは、依存パッケージをインストールします。 必要なものはBoostライブラリとyamlです。最近のUbuntuであれば最初から入っていそうですが、念のため確認しましょう(こういうところで確認を怠るといつかコケる日がやってきます笑)。

sudo apt update
sudo apt install libboost-all-dev
sudo apt install libyaml-cpp-dev

次にビルドします。 colcon_ws/src/内で次のコマンドを入力してリポジトリのソースをクローンします。

git clone --recurse-submodules https://github.com/HesaiTechnology/HesaiLidar_ROS_2.0.git

ここで注意が、--recurse-submoduesを必ず入れることです。Audoriはなにも考えずにこのページの.gitファイルをクローンすればええんやろ!とクローンしてビルドできませんでした笑。

なぜうまく行かないかというと、src/driver/内にHesaiLidar_SDK_2.0がリンクで埋め込まれているからです。--recurse-submoduesを入れるとリンク先のコードを自動的に再帰的にクローンしてくれます。

github.com

次に、colcon_ws/srcからcolcon_wsに移動して、ビルドをします。

colcon build --symlink-install

--symlink-installをいれれば、他のパッケージがたくさんあるときにはビルド時間が短縮されます。

ビルドが終われば実行します。

ros2 launch hesai_ros_driver start.py

このとき、hesai_...で補間が効かなかったり、not foundになったりする方は、colcon_wsでビルドしたパッケージのバイナリファイルのアクセスパスを入れられてないかもしれません。 以下のコマンドを.bashrcに入れましょう。

colcon_ws/install/setup.bash

これを入れるには、適当なテキストエディタで~/.bashrcで追記しましょう。

ノードを立ち上げます。以下のコマンドを入力します。

ros2 launch hesai_ros_driver start.py

実行すると、RViz2ごと起動し、見ることができます。

RViz2まで自動起動する。FixedFrameや基本的な設定をよく見ておこう。

Abudoriは--recurse-submoduesをつけずに、自分でSDKをコピペしてました。なんとビルドは通るけど、センサデータが全く出力されない…と30分ほど悩みました笑。

スポンサードリンク

3D LiDARを活用しよう

一旦記事はここまでにします。複数台のLiDARを使用したり、TF2の設定をしたりするのは、またの機会に書くかもです。

ROS 2のトピックで出力さえされてしまえば、SLAMパッケージを持ってきてお試ししたり、PCLを使って何かを分析することがすぐできるようになります。 みなさまも、楽しい3Dライフを!

新手法、3D SLAMのGLIMを試します。次の記事に続きます。

www.abudorilab.com