はじめに
建設ITジャーナリストの家入龍太です。スキャナーやプリンターなどの機器は、パソコンからの指示でデータを入出力する機器(デバイス)です。これらのデバイスにはCPU(中央演算処理装置)やメモリーなどを搭載した「ハード」と、OS(Operating System)のような機能をする「カーネル」、そしてデバイスを動かすためのソフトとなる「ドライバー」が内蔵されています。このように、各デバイスに搭載されているハードとソフトを合わせて「組込みシステム」と言います。
組込みシステムは、炊飯器やDVDプレーヤー、冷蔵庫、自動車など、電子制御機能を持ったあらゆる家電や機器にも搭載されています。いわば、これらの機器を電子制御するための、“超小型コンピューター”こそ、組込みシステムなのです。
製品概要・特長
今回のセミナーで使われた製品は、フォーラムエイトの3Dバーチャルリアリティーシステム「UC-win/Road」と、Linuxで動作する「ラズベリー・パイ」という超小型パソコンです。
UC-win/Roadは、組込みシステムと連携して使われることが多いソフトです。その一例は、おなじみの「ドライビングシミュレーター」。実物のクルマを模した運転席に座って、リアルな加速や減速、車体の傾きを体感しながら運転を体験できる装置です。
UC-win/Road上で仮想のクルマが走る状況に応じて発生する加速度や車体の傾きのデータを「API」(Application Programming Interface)というデータ入出力機能によってリアルタイムに取り出し、そのデータに従って運転席を支えるアームを伸び縮みさせて、振動や傾きなどを再現します。このアームを動かす装置にも組込みシステムが装備されているのです。
しかし、いきなりドライビングシミュレーター用の運転席を作るのは大変なので、今回のセミナーでは、ラズベリー・パイに搭載されたLEDボードを、UC-win/Roadのドライビングシミュレーター機能からAPIで取り出した位置データと連携してLEDを点灯させるシステムを開発しました。
|
|
▲受講者一人ずつに割り当てられたシステム。
右側がUC-win/Roadが動くワークステーション、
左側がラズベリー・パイ |
▲ラズベリー・パイにはLEDが8×8個並んだパネル
を搭載しているほか、モニターやマウス用の端子、
LANケーブル(水色)も接続できる |
セミナー会場では、受講者一人ひとりに対して一つのテーブルが与えられ、その上にはモニター、キーボード、マウスが2台ずつ載っています。左側のモニターやキーボードなどはWindowsで動作するワークステーションに接続され、UC-win/Roadがインストールされています。
右側のモニターやキーボードなどは、約9cm×6cmのLED付きプリント基板のような「ラズベリー・パイ」に接続されています。そして、両システムは、LANケーブルで接続されています。つまりラズベリー・パイ側が、組込みシステムを模しているのです。
|
|
▲小さいながらCPUやメモリーなどが搭載された超小型パソコン「ラズベリー・パイ」の本体(左下)と本体裏側(右)、
ワークステーションとの接続に使われたLAN用ハブ(左上) |
体験内容
2017年12月6日、フォーラムエイト大阪支社で「組込みシステム体験セミナー」が開催されました。
ファーストシステムは、組込みシステムやマイコンソフトウエアの受託開発、コンサルティングの事業分野において豊富な経験があります。これまでデジタル家電、カーオーディオシステム、照明制御システム、移動体通信システムソフト、基幹業務システムなど、さまざまなシステムの開発実績があります。
同社は2016年12月、フォーラムエイトに事業譲渡を行いました。今後、フォーラムエイトと同社との協力を進めることで、IoT時代のソフトウエア開発技術を強化し、自動車分野などでの展開がいっそう加速することが期待されています。
午後1時半に始まったセミナーではまず、組込みシステムの仕組みや制御方法のほか、システム開発に当たって安全性や信頼性などを確保する方法についての概要説明がありました。
|
|
|
▲2017年12月6日にフォーラムエイト大阪支社セミナールームで
開催された「組込システム入門体験セミナー」 |
|
組込みシステムの開発で重要なのは、まず、エラー処理についての考え方で、
- (1)一部でも異常な動作があれば停止させる「セーフティークリティカル」
(2)一部が異常でも安全性に問題がない限り、他の部分の動作を続行する“あんばい”動作
という二つの考え方があります。
前者は工場のファクトリー・オートメーションなどに使われ、不良品の量産を防ぐうえで正常な動作以外は停止させるという考え方です。一方、後者はマンションの自動ドアと連携するインターホンや、火災検知センサーなどで使われ、一部が故障してもその他の部分は動作を続けることにより、不便や危険を防ぐという考え方です。
また、安全性については、リモコンや操作ボタンの故障によって「機器を停止できない」という事態を防ぐ設計思想が求められます。例えば背もたれが電動式のベッドでは、リモコンのケーブルが断線したり、電池が切れたりしたときは、モーターを止めるように設計することが必要です。また、ガスコンロでは、操作ボタンが「ON」のまま引っかかっても、「OFF」のボタンを押したら火が消えるように、矛盾した動作は安全側に動作する設計が必要です。
このほか、時刻データを誤って読み出すエラーや計測値をサンプリングする周期や境界値の設定、センサーの劣化による感度やゼロ点の変化に対する更生、音声波形の非連続による大きな雑音発生など、リアルな現象や機器を扱うシステムならではの注意点を説明しました。
|
|
▲組込システム入門体験セミナー解説資料 |
続いて手元のラズベリー・パイを使って、組込みシステム側のプログラミング実習に移りました。課題はUC-win/Roadとラズベリー・パイを連動させる組込みシステムの開発です。
UC-win/Roadで大阪市内の道路をドライビングシミュレーターで運転します。運転中のクルマの座標データを、APIによってリアルタイムに取り出し、LANケーブルを使ってラズベリー・パイに送り、クルマがフォーラムエイト大阪支社の付近に来たら、ラズベリー・パイの基盤に取り付けてあるLED表示板にさまざまな文字を表示させるシステムを作るのが目標です。
|
|
▲グラフィカルなLinuxのファイルシステム(背景)上で、
Pythonで書いたプログラムを起動させるコマンドライン
(手前) |
▲Pythonによるプログラム。LEDで表示する
文字や色、移動する速度などを定義して
いる部分 |
ラズベリー・パイ自体のOSはLinux(リナックス)ですが、このシステムを作るため、「Python(パイソン)」というプログラミング言語を使いました。Pythonはプログラムを一行ずつ機械語に翻訳する「インタープリター」というプログラミング言語の一種で、少ないコード量でわかりやすくプログラムが書けるため、組込みシステムのほかIoTやAI(人工知能)、Web開発などで幅広く使われています。
LinuxはWindowsのようにかなりグラフィカルなOSになっていますが、Pythonはプログラムを書くのも、起動させるのもコマンドを1行ずつ文字で入力するコマンドライン方式となっています。
まずは、LED表示板に文字を表示させる部分からスタートしました。表示する文字や色、移動する速度などを設定します。これらはPythonのコマンドやデータ表記の仕方に従って、テキストデータを打ち込んで設定します。
今回の受講者はレベルが高く、いとも簡単にLEDでの文字表示はクリアしました。続いて、いよいよUC-win/RoadのAPIから送られてくる位置情報とラズベリー・パイを連携させる部分のプログラミングです。
|
|
|
▲Pythonのプログラムによって、LED
上に表示された「H」の文字 |
|
セミナー開催当時、フォーラムエイト大阪支社があった肥後橋センタービルの位置は、北緯34.6832度、東経135.4972度です。この付近に南北、東西それぞれに±の幅を持たせて各座標の上下範囲を設定します。UC-win/Roadから送られてくる座標値がこの範囲に入れば、LED上に文字が表示されるようにしました。
|
▲フォーラムエイト大阪支社の位置を、
座標の範囲で設定したPythonプログラム |
ラズベリー・パイ側にUC-win/Roadからの位置座標がちゃんと伝わり、Pythonプログラムが機能しているのかを確かめるため、プログラムを起動させ、UC-win/Road上でドライビングシミュレーターを運転してみます。見覚えのある大阪支社のビルに向かって走っていくと、突然、ラズベリー・パイ上のLEDが点灯しました。
|
|
|
|
|
▲UC-win/Roadのドライビングシミュレーター機能で走行(左)大阪支社のある肥後橋センタービルの横を通過(中)するとラズベリー・パイ上のLEDに
文字が表示された(右) |
イエイリコメントと提案
建設業界に限らず、さまざまな業界で話題になっている言葉に「IoT」(Internet of Things。モノのインターネット)というものがあります。
世の中に存在するいろいろなものの状態をセンサーや画像・動画などでデジタルデータ化し、インターネットを通じてコンピューターに集約。そのデータをAIなどのソフトウエアで分析・解析した結果を、現実の世の中にフィードバックするのがIoTの仕組みです。
例えば、電力網につながれた発電所と電力ユーザーの電力需給を自動的に調整する「スマートグリッド」も、IoTの例です。時々刻々と変わる発電所の発電電力と、電力ユーザーの消費電力をデータとして収集し、コンピューターで監視し、もし消費電力が発電電力を上回りそうな状況になると、重要度の低い機器のスイッチを切ったり、電力需要家に節電を促したりします。
これまでは人間が経験と勘で制御してきたことをIoT化することにより、コンピューターの力を使って最適に制御できるようになるのです。
今後、世の中のIoT化が進展していくと、現場からデータを収集するセンサーやカメラ、コンピューターからの指令で作業を行うロボットなど、デバイスの種類や数もぐんと増えてきます。それぞれのデバイスが、目的を果たせるような組込みシステムを柔軟に開発できるスキルを身に着けておくと、IoTの活用の幅も広がってくるでしょう。
|