キビテクの小島です。こんにちは。
キビテクはロボットシステムの開発会社ですが、私は入社して日が浅いため、ロボット技術についてはそんなに詳しくないです。
なので、今回はロボットを含めた組込み(Embedded)システム開発の話を書いてみようと思います。
組込みシステムとは何かと言えば、家電製品や装置に埋め込んだり組み込んだりするコンピュータシステムのことです。
最近は身の回りのモノの多くにコンピュータが組み込まれていることが増えたのであまり違和感ないと思います。
組込みシステムの特徴を2つばかり取り上げてみます。
1.ソフトウェアの更新が容易でない
2.リアルタイム性が要求されることが多い
1.ソフトウェアの更新が容易でない
最近はネットワークが普及してきたこともあり、リリース後にオンラインアップデートが計画されているシステムも多くなりました。
ゲーム機とか、携帯電話などは今やアップデートが当たり前になった感があります。こういうシステムは、プログラムの記憶領域を2組備えていて、アップデート時には「今使ってない方を上書き更新する」という作戦でシステムを更新します。
ネットワークの回線が高速・大容量化するにつれて、オンラインアップデートはどんどん容易になっています。
オンラインアップデートと言えば、2000年頃の Windows は更新ファイルのダウンロードに数十分かかるのが当たり前で、パッチ配信日は半日仕事にならないなんて日がありましたっけ。
一方で、リリース後のアップデートが難しかったり、セキュリティが高いシステムだと出荷後にバグが見つかると対応がとても大変です。
火を吹く可能性があるトースターや、ネットワークに接続可能な投票集計機なんかだと回収して改修すればなんとかなるかもしれませんが、打ち上げ後の火星探査機の高度計算プログラムに間違いが有ったなんて場合はどうすることもできない場合もあったりします。
いずれにせよ、変化する可能性を予め想定しておき、変化を前提にしたシステムを設計することが求められます。
この辺が組込みシステムの厄介でありまた楽しい部分です。
2.リアルタイム性が要求されることが多い
リアルタイム性の話をする前に、概論を少し。
一般的にコンピュータシステムは、システム外から入った何らかの刺激へ対応するように設計されます。
「リアルタイム性は何?」かと言えば、「システムが刺激への対応を終えるまでの最大時間が予め決められていること」になります。
リアルタイム性が重要でないシステムの例として、例えば読者がブラウザを使ってニュース記事を読んでいて「次頁」ボタンをクリックした場合を考えます。
ニュース配信システムからの視点だと、「次頁」ボタンのクリックは想定されたいくつかのシナリオの1つになります。
同じタイミングで「前頁」ボタンがクリックされるかも知れないし、「ホームに戻る」が選ばれるかも知れない。
それらは全て、起こり得る事態です。
システムは予め決めておいた手順に従って、ニュース記事データを格納場所から取り出し、見やすく編集を施して、読者に送信します。
さてここで、時間的な制約について考えます。
読者がブラウザのボタンを押してから、ブラウザに読者が望んだ内容が表示されるまでの時間って、最大何秒までなら許されるでしょうか?
インターネットが一般人に普及し始めた1990年台後半から2000年頃では、「最大8秒」と言われてました。
2021年現在では1〜2秒くらいでしょうか。それを過ぎるとユーザーは苛立ちを感じるそうです。
ネットが速くなったのに比例して、我慢の限界は短くなっているようです。
でも、画面の表示に3秒かかったからと言って、「俺の可処分時間1秒を返せ!」と怒る人は多分居ないでしょう(いないといいですね)
これが「リアルタイム性が重視されていないシステム」の例です。
同じ時間感覚で、携帯ゲーム機を考えてみます。
画面にマリオが居ます。
右からノコノコが向かってきます。
プレイヤーはBボタンを押してマリオをジャンプさせてノコノコを踏もうとします。
ですが、マリオはジャンプしません。ジャンプ発動までの時間がいつもより1秒多くかかっているようです。
・・・
これではゲームになりません。
アクション系のゲームを実現するならば、
・Bボタンを押したら、0.02 秒以内にジャンプ動作を開始する
・Bボタンを押したら、0.01 秒以内にジャンプ効果音の再生を開始する
などを機能として実現する必要が有るのです。
リアルタイム性が要求されることが多いのが組込みシステムの特徴です。
そして、ロボットを動かそうとなるとフルタイムのリアルタイム処理が必要になることが多いです。
今回は特徴を2つ挙げてみました。
ロボット開発は、よくある「ソフトウェアシステム開発」に比べると大変なことが多いと思います。
それでも、手をかけて巧く動くようにしていく経験は、苦労した分以上に嬉しいことが多い分野だと思います。