ロボットのコンピュータの概要
ロボットのコンピュータの概要

ロボットのコンピュータの概要

ロボットで使われるコンピュータの概要についてまとめていきます。コンピュータの機能と定義ロボットのコンピュータは、ロボットの4つの機能要素「知覚」「認識」「判断」「動作」のうち「認識」と「判断」を担います。ロボットの構成認識と判断には複雑な計

コンピュータによって実現する機能の大よその性能は、プロセッサー(CPU)、メモリ、ストレージ、通信の速度や容量によって決まります。例えば、機能の最終的な実行速度は、これらの要素のボトルネックで律速されます。これらの要素の中で、特に重要なのはプロセッサー(CPU)です。ロボットの開発者がプロセッサーを開発することは滅多にありませんので、既存のプロセッサーから選ぶことになります。プロセッサーには CPU、GPU、FPGA、DSP、AI 専用 LSI などがありますが、基本的に CPU は必須で、他はアクセラレータなどの補助的な使い方をします。CPU が必須なのは、汎用的なプログラムを搭載できるのは CPU のみで、他は制約が強くて一般的なソフトウェアを開発しづらいからです。

CPU には様々な種類のものがありますが、OS を搭載することを前提とすると CPU の選択肢はそれほど多くありません。エッジ向けであれば ARM シリーズ、サーバー向けであれば Intel の Xeon(ジーオン)シリーズを使ったりします。Intel の Core i シリーズや AMD の Ryzen シリーズはその中間に位置し、状況によってエッジ側で使ったりサーバー側で使ったりします。その他、エッジ側では RISC-V という命令セットをベースに作られたものや、ルネサスなどのマイコンメーカーが独自開発した CPU(ルネサス製の RX シリーズ等)といったものもあります。

サーバーのコンピュータ

サーバー向けでは、例えば、先にも挙げた Intel の Xeon シリーズの CPU が搭載されたマシンが使われます。クラウドサービスを使う場合には、サービス事業者が用意しているマシンから選択することになり、クラウドサービスの代表格の AWS(Amazon Web Service) では、Xeon の他に AMD の Ryzen EPYC といった CPUのマシンが選択できます。これらのCPUを搭載したコンピュータは、演算性能が高く、複数のタスクを並列に高速に処理することが出来るように設計されていて、ロボットシステムのサーバーに適しています。

ところで、ここではエッジ側に何らかのサービスを提供するという意味でサーバーと呼びますが、コンピュータに求める機能によっては Web サーバーやデータベースサーバー向けのコンピュータではなくワークステーション向けのコンピュータの方が向いているケースもあります。より一般的なサーバーはたくさんのユーザーからの比較的軽い大量の処理に対応するイメージですが、ロボット向けのでは少数のエッジからの重い処理に対応します。そのため、ワークステーション向けを謳っているコンピュータにサーバー機能を設けるということもありえます。

オンプレで用意する場合は選択肢が広くなります。もちろん Xeon 等のハイスペックなマシンも候補になりますが、処理がそれほど重くなければ少しハイスペックなパソコンでも十分な場合もあります。そういったパソコンの CPU としては、Intel の core i7 や AMD の Ryzen 7 が例として挙げられます。さらに言うと、Xeon は複数の処理が並列に走る場合に能力を発揮しますが、単一の重い処理を実行する場合には core i シリーズの方が速いこともあります。実行するプログラムやアルゴリズムとコンピュータの仕様の関係性から事前に机上で最適な構成を予測するのは難しく、実機で試しながら適したマシンを選んでいくのが一般的です。

また、これに GPU 等のアクセレータを付加するかどうかという選択肢が加わり、さらに複雑になります。サーバーでディープラーニングのような重いけれども並列性が高い演算を行う場合には、CPU だけで処理するのではなく、GPU や TPU(Google のアクセラレータ)を利用した方が有利になることがあります。高速で処理できるようになるのに加えて、電力効率を高め、コストを削減することに寄与します。

エッジのコンピュータ

エッジ側はもっと選択肢が多いです。そもそも OS(オペレーティングシステム)をコンピュータに載せるかどうかで分岐します。OS を搭載するにしても、Linux や Windows といった高機能な OS にするか、リアルタイム OS にするかでも選択するコンピュータが変わります。Linux を載せるなら MMU (メモリ管理ユニット) の回路を含む CPU が必要です。リアルタイム OS なら、MMU か MPU (メモリ保護ユニット) のいずれかの回路が含まれていればOKです。メモリの管理や保護の機能が十分に入っていない軽量な CPU を使う場合には、OS を搭載せずに実行したいプログラムを直接書き込みます。こういう使い方を「ベアメタル」と呼びます。

どのパターンを選ぶにしても、エッジ向けとして広く採用されているのは ARM の CPU コアを採用したコンピュータです。Linux などの高機能な OS を載せるなら ARM の Cortex-Aシリーズ、リアルタイム OS なら Cortex-R シリーズ、OS を載せないなら Cortex-M シリーズを選びます。高機能版以外では、他にも様々な選択肢があります。マイコンメーカーが独自に開発しているものも多くあります。どういった種類のものがあるかは、また別のページに記載しています。

ARM の CPU コアの各シリーズの演算性能は、Cortex-A、Cortex-R、Cortex-M の順番です。一方、この順番はそのまま消費電力の大きい順にもなります。消費電力が大きいと発熱も大きくなり、高い冷却能力を備えた冷却機構が必要になります。発熱が小さければ、CPUチップのパッケージを空気に触れる状態にした自然の空冷や、金属製の筐体に接した状態にした金属の熱伝導による冷却で十分です。発熱が少し大きくなれば、パッケージの上に放熱板を取り付けます。発熱が大きいほど、大きな放熱板が必要になります。さらに発熱が大きくなったら、ファンを取り付けます。ファンは特にサイズが大きくなりがちなので、ロボットシステムをコンパクトにしたい場合には極力避けます。

インターフェース

コンピュータシステムの現実的な構成 コンピュータシステムのインターフェースの例

この図に登場する HDMI、SPI、USB、GPIO、WiFi がインターフェースに相当します。GPIO 以外は国際規格が決まっていて、デバイスとコンピュータをメーカーに依存せずに自由に接続することができます。GPIO は General Purpose Input Output の略で、独自の通信ルールを決めて使うインターフェースです。上図の例では、コンピュータからモータードライバーに PWM 信号を送信するために GPIO を利用することを想定しています。

なお、インターフェースの回路は、CPU チップの中に含まれるケースもありますし、CPU チップから別の規格で接続してボード(基板)上に変換用の回路(半導体チップ)を実装するケースもあります。端子は、チップの中に内蔵するわけにはいきませんので、必ずボード上に実装します。無線通信の場合は物理的な端子がありませんので、代わりにアンテナを実装します。アンテナはボードと一体になっていることもありますし、ボード上にアンテナの端子だけを実装しておいて、アンテナを後で取り付けることもあります。(感度を高めたい場合は後者を選択。)

コンピュータの開発企業(メーカー)一覧 study-robot.jp CPU (MPU) を開発・販売する企業一覧

CPU もしくは MPU の開発(販売)企業をリスト化しています。ここでは CPU (Central Processing Unit) と MPU (Micro Processing Unit) は区別していません。企業名本拠地売.

study-robot.jp

関連ページ

プロセッサーの概要

ロボットシステムで使われているプロセッサーについてまとめていきます。プロセッサーというと狭義の定義では CPU のみを指すこともありますが、ここでは CPU に加えて、GPU、FPGA、DSP、AI 専用 LSI を取り上げます。まずは各.

コンピュータの構成 CPUとインターフェースの種類

CPU コア、命令セット、インターフェースの種類を一覧表にしておきます。 CPUコア の種類 コアのシリーズ名開発(販売)元命令セットRISC/CISC主な用途ARM Coretex-AARMARMRISC組込み(Li.