見出し画像

「2.5時間で分かる!ROS2対応ロボットの基礎」セミナーレポート

こんにちは。大阪工業大学発ベンチャー企業「大阪インテリジェントロボティクス株式会社」の宮脇です。
大学でロボット関係の研究・開発を行っています。特にROS(Robot Operating System)を使ったロボット製作に取り組んでおり、研究で得た様々なノウハウを皆様にお届けしています。
2024年2月26日、ものづくりもできるコワーキングスペース「TheDECK」様にて自作ロボットとシミュレータを用いたROS2セミナーを実施しました。

その様子をレポートします。

セミナーの内容

今回はロボットに搭載したLiDAR(Light Detection And Ranging:ロボット周囲の物体までの距離を計測するセンサ)を使い、ROS2の基礎について説明しました。
使用したロボットはこれまでと同じく、講師がオリジナルで作成した機体です。

もともとこのロボットはROS1で動作していたものですが、Dockerを使うことで、ROS2対応させています。
シミュレータも同様にDockerを利用したものですが、新たにWindows上でも動作するROS2 Humbleのイメージを作成して配布しました。
以上のような環境で、最終的にはLiDARで検出した最も近い物体を追従するというシステムを目標としました。

ROS2によるロボット制御プログラミング

まずは、基本的なロボットの速度制御から入っていきました。
ROS1のときとはプログラムの書き方や、使用するライブラリ、関数名等、細かい差異があることを説明し、シミュレータを使って速度指令をロボットに送信するプログラムを作成して、その動作を確認して行きました。

LiDARから得られるデータの確認

続けて、ROS2においてLiDARが送信しているデータ、sensor_msgs/msg/LaserScanについて、コマンドを使いそのデータ構造を確認しました。

$ ros2 interface show sensor_msgs/msg/LaserScan
# Single scan from a planar laser range-finder
# ・・・省略・・・
std_msgs/Header header # timestamp in the header is the acquisition time of
# ・・・省略・・・
float32 angle_min            # start angle of the scan [rad]
float32 angle_max            # end angle of the scan [rad]
float32 angle_increment      # angular distance between measurements [rad]
# ・・・省略・・・
float32[] ranges             # range data [m]
# ・・・省略・・・

実際は、非常に多くの情報が表示されますが、その中でも比較的重要な上記の部分に絞って説明しました。これらの情報を使うと、LiDARで検出した物体の座標が計算できます。

物体追従プログラムのテスト

前項の説明でLiDARから得られるデータについて理解していただいた後、最も近い物体の座標を計算し、それにロボットを追従させるプログラムを作成しました。
得られた座標の方向と距離を使って、ロボットの速度を決めて制御します。シミュレータ上で実行すると次の動画のようになります。

実機でのプログラム実行

シミュレータでの動作確認後は、実機ロボットでプログラムを実行しました。実機ロボットはタッチパネルを使うことで、極力キーボードを使わずに起動できるようにしています。
また、シミュレータで作成したプログラムはUSBメモリに入れて実機に挿入し、ダブルタップすれば起動します。

USBメモリに入ったプログラムを実行して、最も近い物体を検出している様子

TF(座標変換)の追加

実は、シミュレータでは比較的簡単に動いたプログラムですが、そのままでは実機で動作しないようになっています。
大きな原因としては、座標系の問題です。設計の都合上、実機側ではLiDARを回転させて設置しており、LiDARで検出した物体の座標は、そのままでは実機の座標系では90度回転したところを指し示してしまいます。

LiDARと実機の座標系

従って、座標変換が必要となりますので、ROS2で座標変換を扱うためのtfライブラリについて解説し、そのコードを加えてもらいました。

実機での物体追従

以上のようにして座標変換を行うことで、ロボットの座標系における物体の座標を取得し、無事に追従できるようになりました。また、物体があまりにも近すぎた場合はバックするなどの機能も追加することで、対象物体につかず離れずの制御を行うことができました。

セミナーを終えて

参加された方からいただいた感想・コメントでは
「ROS2に関して独学ではなかなか習得できない多数の事柄について、多くの知見を得ることが出来ました」「実機での実習では、将来的にロボットを自作する際に大変参考になりました」
というように、大変ありがたいコメントをいただくとともに、
「ロボットを自作する際に、アクチュエータやセンサを連携させる部分をどう実装すれば良いのか知りたい」
というように、ロボット製作のより深い部分のノウハウが求められていることを痛感しました。
これからも皆様のニーズにあったセミナーを展開したいと思っておりますので、どうかよろしくお願いいたします。
次回の企画につきましては進展があり次第、Twitterにて告知させていただきます。

「大阪インテリジェントロボティクス株式会社」の個別セミナー

ロボットの開発等において、ROSに関するお困りごとはありませんか?
大阪インテリジェントロボティクス株式会社」は大学で長年ロボットの研究に携わっているメンバが立ち上げた大阪工業大学発ベンチャー企業です。これまでに培った知見を活かし、皆様のロボット開発に貢献します。
今回のセミナー日程がスケジュールに合わず、参加できなかった場合でも個別にセミナー可能な場合がありますので、お気軽にお問合せください
日々のロボット開発に関する活動の様子はTwitterでお知らせしていますので、是非ご参照ください。TwitterのDMからもコンタクト可能です。

また、開発したロボットの動画を以下のチャンネルで公開しております。
こちらも併せてご視聴いただければ幸いです。

#ROS
#ロボット製作
#ロボット開発
#ものづくり

この記事が気に入ったらサポートをしてみませんか?