自律走行ロボット向けのソフトウェア・アーキテクチャの基盤を構築する

自律走行ロボット向けのソフトウェア・アーキテクチャの基盤を構築する

著者:Sarvesh Pimpalkar、Rajesh Mahapatra

自律走行ロボット(AMR:Autonomous Mobile Robot)は、様々な産業の変革に貢献しています。それを支えているのは、AMRが備える自動化用の機能、ナビゲーション機能、複雑なタスクの実行機能などです。こうした多様な機能を実現できるようにするためには、堅牢性の高いソフトウェア・アーキテクチャを構築することが何よりも重要です。本稿では、まずAMRのソフトウェア・スタックに必須の要素について説明します。その上で、開発者が留意すべき重要な事柄について解説します。

ソフトウェア・アーキテクチャの構成要素

一般に、ソフトウェア・スタックは様々なサブシステムから成ります。それらが連携して動作することにより、様々なアプリケーションが実現されます。つまり、ソフトウェア・スタックは、アプリケーションを実行するための完全なプラットフォームとしての役割を果たすということです。図1に、AMRのソフトウェア・アーキテクチャの構造を簡略化して示しました。

図1. AMRのソフトウェア・アーキテクチャ

ここで、図中のハードウェア抽象化レイヤ(HALHardware Abstraction Layerに注目してください。これにより、OSは個々のハードウェアの複雑さに対処することなく、抽象化されたレベルでそれぞれとやり取りすることができます。図中のミドルウェアは、その名のとおりアーキテクチャの中間に位置しており、OSとアプリケーションの間のブリッジとして機能します。アプリケーション・レイヤは、ネットワーク内の他のアプリケーションやシステムとの間の円滑な通信を実現します。このような基本を踏まえた上で、以下では各レイヤについて更に深く掘り下げていくことにしましょう。

各レイヤの詳細

AMR向けの効率的なソフトウェア・アーキテクチャとはどのようなものでしょうか。重要なのは、ハードウェア、ミドルウェア、ソフトウェア開発キット(SDK:Software Development Kit)、エンドユーザ向けのアプリケーションをシームレスに統合することが可能なアーキテクチャを構築することです。そのアーキテクチャにおいて、各レイヤは、システムの性能を最適化し、AMRが全体として効率的に動作できるようにするための重要な役割を果たします。

図2に、各レイヤの詳細を示しました。このような形で、ハードウェアとソフトウェアの統合が実現されます。これにより、AMRの全体的な性能を高められます。

以下では、特に重要なレイヤとしてHAL、ミドルウェア、アプリケーション・レイヤを取り上げ、更に詳しく解説します。

図2. 各レイヤの詳細

HAL

HAL(または組み込みエッジ・レイヤ)には、センサー(ハードウェア)用の低レベルのドライバが用意されています。対象となるセンサーの例としては、レーダー、LiDAR、ToF(Time of Flight)カメラ、慣性計測ユニット(IMU:Inertial Measurement Unit)などが挙げられます。これらのセンサーは、環境認識やモーション検出のためのデータを提供します。また、このレイヤにはアクチュエーションのための要素も含まれています。具体的には、AMRで使われるモーターやエンコーダ用の低レベルのドライバが用意されています。

センシングやアクチュエーションの処理は、マイクロコントローラ(MCU)、SoC(System on Chip)、コンピューティング・システムなどによって実行されます。通常、それらは組み込みLinuxまたはリアルタイムOS(RTOS)をベースとしてリアルタイムのデータ処理を実行します。HALに含まれる低レベルのドライバは、システムのセンサーやアクチュエータを直接制御します。それにより、ハードウェアと高レベルのソフトウェアのブリッジとして機能します。

ミドルウェア

ROS(Robot Operating System)は、AMRの主要なミドルウェアとして広く使われています。これを採用すれば、オープンソースのソフトウェアを利用したプロトタイピングや、センサー・モダリティの迅速なテストを実現できるからです。ROSは、知覚(perception)機能やモーション・コントロール機能、アプリケーション・レイヤを容易に統合するための豊富なライブラリとフレームワークを提供します。ROS 1もROS 2も、基盤になるOSとしてLinuxをベースとするUbuntuを採用しています。そのため、USBやイーサネットなど、様々な通信プロトコル/インターフェースを利用できます。なお、ROSの詳細については以前の記事をご覧ください。

ROSに加え、SDKのレイヤも、知覚機能やモーション機能で使用するアルゴリズムを開発/配備するための構成要素を提供します。

アプリケーション・レイヤ

アプリケーション・レイヤには、物体の認識、経路の計画、ピック&プレースの動作といった高度な機能が実装されます。それらのアプリケーションは、スタックの下位のレイヤで処理されたデータを使用します。それにより、AMRと環境がどのように相互作用するのかが直接的に決まります。

経路の計画やナビゲーションなどのタスクを実現するためには、知覚のデータとモーションのデータをシームレスに統合する方法を用意すべきです。それにより、AMRは変化する環境に対して迅速に適応することが可能になります。また、AMRが備えるシステムとクラウドの連携を図れば、更に機能を強化できます。つまり、必要な処理の一部をAMRの外部(クラウド)で実行することが可能です。そうすれば、ディープ・ラーニング用のモデルのトレーニング、デジタル・ツインによるシミュレーション、リモート監視、フリート管理といった高度な機能を実装したり活用したりすることが可能になります。

システム設計者のためのベスト・プラクティス

アナログ・デバイセズは、最先端のセンサー技術、エッジで処理を実行するための技術、ROS 2の統合パッケージなどを提供しています。それにより、システム設計者によるAMRの開発を支援します。それらは、特に、インテリジェントで適応性を備えているだけでなく、信頼性と拡張性にも優れるAMRの開発に役立ちます。システム設計者は、自動化に関する現在の要求に応えられるAMRを構築することを目標にするはずです。その目標を達成するためには、アナログ・デバイセズの包括的なソリューションに加え、以下に列挙するベスト・プラクティスを採用するとよいでしょう。

  • 柔軟性とスケーラビリティに優れる開発を実現するためにROS 2を採用する:ROS 2では、モジュール化によってスケーラビリティを実現します。このことから、システムに新たなセンサーや新たな機能を容易に追加できます。アナログ・デバイセズは、様々な機能に対応する既製のROS 21ノードを提供しています23411

  • エッジにおける処理によってリアルタイム性能の最適化を図る:エッジで効率的な処理を実行することにより、レイテンシを抑えてAMRの応答性を高めることができます。アナログ・デバイセズは、モーター・コントロール5、ToFカメラ6、IMU7、BMS(Battery Management System)8向けに、リアルタイム動作に対応するモジュール式/プラグ&プレイ型のソリューションを提供しています。

  • アプリケーションをカスタマイズするためにSDKを活用する:SDKは、知覚機能やモーション機能で使用するアルゴリズムを開発/最適化するためのツールを提供します。それにより、対象とするアプリケーションに応じてAMRの性能をカスタマイズできます。アナログ・デバイセズは、モーター・コントロール9、IMU10、ToFカメラ11向けにLinuxをベースとするSDKを提供しています。

  • セキュアで信頼性の高いクラウドとの連携を実現する:AMRとクラウド・ベースのサービスを接続する際には、データの完全性を維持するために、セキュアな通信プロトコル/データ管理手法を活用すべきです12

詳細については、「搬送ロボット・ソリューション」をご覧ください。

 

参考資料/リソース

1 ロボット・オペレーティング・システム(ROS)開発プラットフォーム

2 Official ROS 2 Driver for Trinamic Motor Controllers(Trinamicモーター・コントローラ用のROS 2公式ドライバ) (GitHub: tmcl_ros2)

3 ROS 2 Bindings for Time-of-Flight(ToF用のROS 2バインディング) (GitHub: tof_ros2)

4 C++ ROS 2 Node that Reads Sensor Data from ADI IMU and Publishes Message to Topic(アナログ・デバイセズのIMUセンサーからデータを読み取り、トピックにメッセージをパブリッシュするC++ベースのROS 2ノード) (GitHub: imu_ros2)

5 TMCM-2611-AGV:3相BLDCモーター用の2軸サーボ・ドライブ・プラットフォーム

6 EVAL-ADTF3175:ToF(Time-of-Flight)向けの評価用キット

7 ADIS16500/PCB:ブレークアウト・ボード

8 ADBMS6948:16チャンネルのバッテリ・パック監視システム

9 TMC技術アクセス・パッケージ - オープンソースICソフトウェアAPI

10 ADIS16475 IIO Inertial Measurement Unit Linux Driver(慣性計測ユニット「ADIS16475」に対応するIIO用Linuxドライバ)

11 ADI Time-of-Flight SDK(アナログ・デバイセズのToF用SDK) (GitHub: ToF)

12 ロボットのセキュアな未来に向けて、サイバーセキュリティが果たす役割

Before You Switch


Switching languages will make ADI Explorer unavailable. Resume your session by switching back to English and reopening ADI Explorer.