ロボットは「組み込みシステム」であり、そこには組み込みプログラミングでプログラムを作成します。
◀ この記事の前に: 複数のMCUをつなぐ
▶ この記事の次に:
組み込みシステムとは
最近はクラウドでシステムを作るためにプログラミングをすることが増えてきました。また、クラウドと接続して使用するスマーフォンのプログラミングの機会も多いと思います。その少し前はPCで使用するプログラムが多かったのではないでしょうか。
組み込みシステムは家電(家庭電化製品)や自動車など身の回りの製品の中にコンピュータを組み込み、特定の用途向けに多彩な機能を実現したり、高度な制御を実現しているシステムです。電子レンジにコンピュータを組み込むことによって、加温時間を最適に調整したり、多くのメニューに対応できるようにすることができます。このように特定の用途のためにコンピュータをあらかじめシステム(機器)を組み込みシステムと言います。
ロボットは組み込みシステムのひとつです。
組み込みプログラミングとは
組み込みシステムに組み込まれているソフトウエアを組み込みソフトウエア、プログラムを組み込みプログラムと言います。(ここでは組み込みプログラムに言葉を統一します。)組み込みプログラムを作成することを組み込みプログラミングを言います。
組み込みプログラムは他のプログラムにはない特徴や、そのプログラミングには他のプログラムと異なる概念があります。ロボットが内蔵しているプログラムは組み込みプログラムです。そのため、ロボットのプログラミングは組み込みプログラミングを意識する必要があります。
組み込みプログラムの基本要件
組み込みプログラムの基本要件は以下のとおりです。
- 周囲との関係が強い
- 時間を気にする
- リソースが限られる
- 信頼性が求められる
周囲との関係が強い
組み込みシステムはそのシステムの周囲の状況を捉えることが少なくありません。温度や風力、その他多くの状況をセンサで検知します。ロボットは距離を測定する測距センサ( TOF )やタッチセンサなどのセンサを搭載しています。ロボットは部屋の中で使うことを前提としていますが、組み込みシステムの中には野外で使用する場合も少なくありません。雨や風、落雷などに影響されることもあります。これらの状況を考えて対応して安定した動作が求められます。電源も安定したものをいつでも供給してもらえることができない場合もあります。ロボットは電池で動きます。電池容量が少なくなってきた場合などの対応や使用者へのお知らせなどが必要となります。周囲の状況と関係を意識することが必要です。
ロボットは「身体性」を意識して作りました。
ロボットを二足歩行させる場合、最初のうちはうまく歩かせることができずに簡単に倒れてしまいます。人の場合は倒れる(ころぶ)と「痛い」と感じます。AIは「倒れること」「痛いこと」を知っていますが、感じることはできません。多分、倒れることもないと思います。「倒れると痛い」ということが身体性です。( 「身体性」は多くの領域で使用されている言葉であり、その意味も多くあります。 )
このロボットはヒューマノイドであり、人に近い感覚を得たりや動作を行えるようにしています。
時間を気にする
PCなどを使用している場合、処理に時間がかかる場合は人がその処理が終わるまで待っています。待ち時間が長い場合にプログラムを改善して処理時間を短くする場合もあります。組み込みシステムは時間がとても大切な要素です。制御の処理に時間がかかるので電車が規定の位置に止まれなかったということは許されません。周囲の状況を検出する場合も状況が変わってしまうまでにその状況を検出する必要があります。必要な時間のうちに処理を終える必要があります。この時間は十分に余裕が必要で想定外の状況になっても安全に制御できる必要があります。
この時間に対する厳格性はリアルタイム性と言い、リアルタイム性を高くするためには、プログラミングで十分に検討と検証を必要とします。ロボットは7つあるサーボモータの制御や各種センサで高いリアルタイム性が求められます。
リソースが限られる
組み込みシステムは製品価格が課題になる場合が少なくありません。そのため、組み込みシステムに内蔵するコンピュータも必要最小限のものを選択しています。電子回路も同様でコスト重視の回路構成や部品点数の削減を行います。そのため、潤沢な十分な記憶容量(メモリ)や処理速度(MCU)などのリソースがありません。限られたリソースの中で必要な条件と仕様を満たすプログラミングが求められます。
ロボットは標準で二つの MCUを搭載しています。勉強や試作が目的のため、各種のセンシングや制御などに十分対応できるリソースはありますが、Raspberry Pi(ラズベリー パイ)やPCと比較するとリソースにかなり制約があります。そのためオプションで MCUを追加搭載できるようにしています。
同様に電源もリソースであり制限が伴います。特に IoTなどのエッジ系(末端)は電源が課題になる場合が少なくありません。ロボットは電源が電池のため、使用できる最大電流や電力容量が限られています。そのため周辺回路の制御には時間に対して平準化した制御が必要となります。
信頼性が求められる
組み込みシステムは身の回りで使用するものや、医療機器や航空機など私達の安全に直結しているものが多くあります。また、組み込みシステムは内蔵しているコンピュータをバージョンアップ(交換)したり、プログラムを頻繁に入れ替えることはしません。また、山岳部や深海、宇宙などで使われる場合は簡単に修理することはできません。
そのため、組み込みシステムには高い品質と信頼性が求められます。
参考情報
参考になる情報は以下のとおりです。
このホームページ内
- 複数のMCUをつなぐ: このロボットには複数の MCUが搭載されています。その MCU間の接続の概要です。
他のWebサイト
- SN74LVC1G3157 SPDT アナログスイッチ Datasheet