自律走行機能のソフトウエア開発(ロボット向けソフトウエア技術の研究・開発)

2022年07月08日

  • ICTシステム開発
  • 人工知能(AI)
  • 研究開発
当社ではロボット向けソフトウエア技術の研究・開発に取り組んでいます。
ロボット向けソフトウエアは、さまざまな要素で構成されます。ミドルウエアであるROS、リアルタイム処理、3D CG、VR、ARなどです。また、ロボットを制御するためのモーター制御、センサー制御の技術や、アルゴリズムを実装する技術の知識と経験も必要です。
今回は、自律走行機能のソフトウエアの開発について紹介します。

自律走行機能のソフトウエア開発

市販の移動ロボットを用いた自律走行機能のソフトウエア開発の様子をご紹介します。

TurtleBot3という市販の移動ロボットを使ってソフトウエアを開発します。
TurtleBot3はLiDARを搭載したオープンソースの移動ロボットプラットフォームです。

ミドルウエアにはROS(ROS2)を利用し、SLAMをベースに自律走行のための「ナビゲーション機能」を実装します。

ROSとは

ROS(Robot Operating System)とは、ロボットの種類を問わず、ロボットの開発を行うための共通ライブラリとツール群を提供するオープンソースのフレームワークです。
ロボットの研究開発で用いられるソースコードの再利用性を最大化することを目指して開発されました。
名称に「OS」とついていますが、正確にはOSではなくミドルウエアになります。OSであるWindowsやUbuntuなどの上にROSを載せます。

SLAMとは

SLAM(Simultaneous Localization and Mapping)とは、自己位置推定(Localization)と地図生成(Mapping)を同時に行う技術です。

自己位置推定(Localization)

既知の地図上で、自己のロボット位置(姿勢)を推定します。
初期位置からの自己位置の変化を局所的に推定するPost Trackingと、地図全体から大域的に自己位置を推定するGlobal Localizationに大別されます。

地図生成(Mapping)

自己の周囲をセンサーで観測して、地図を生成します。
周知と自己の位置関係を割り出すことで、局所的な地図が生成できます。大域的な地図を作成するためには、Scan Matchingなどを用いて局所的な地図をバックエンドでつなぎ合わせます。
自己位置推定(Localization)と地図生成(Mapping)を同時に行うとSLAMとなります。
これによりリアルタイムで大域的な地図が作成できます。

移動ロボットによる動作確認

ナビゲーション機能のソフトウエアはPython言語やC++言語で開発します。SLAMによるナビゲーション機能のプログラムをPython言語で作成しました。ROS2のライブラリをインポートして使用します。

ソフトウエア内の地図情報の様子

ソフトウエア内の地図情報の様子

移動ロボットで動作確認している様子

移動ロボットで動作確認している様子
自律走行機能のソフトウエア開発の様子をご紹介しました。
当社ではスマート農業に向けた「自動収穫ロボット」の開発を行っており、農園の状態にあった自律走行機能の開発に向け日々研究を続けています。
私たちと一緒に開発に携わるエンジニアを募集しています。