Raspberry Pi
6.Netwireに実装する(続き) 修士課程の院生が、Raspberry PiにNetwireの5.0.0の版がインストールできることを教えてくれた(5.0.1はprofunctorがインストールできない)。そこで、5か月前に書いた記事(Lego BotsをHaskellで動かす-Netwireに実装する)…
8.Haskellラッパー wiringPiの実装が終了したので、HaskellからRaspberry PiのGPIOを利用できるようにするために、ラッパーを作成する。これには、Haskellの外部関数インタフェースを利用すればよい。このインタフェースは、WiringHs.hsとして作成し、GitH…
7.wiringPiを実装する シェルスクリプトを用いてのgpioの制御は、LEDの点滅のような単純な場合には、大きな問題を生じない。しかし、本格的なプログラムを書くときは適しているとは言えない。Raspberry Piにはgpioの制御のためにwiringPiというライブラリ…
1.Ubuntu Mate Raspberry Piの第二世代が2015年2月より販売され(プロセッサはARMv7)、それに伴って、利用できるOSも多様化した。Ubuntを利用したいという開発者にとっては、これは大きなニュースである。Raspberry Pi 2用にUbuntu Mate (15.04)も用…
5.Netwireに実装する システム図ができたので、その要素をWireとして定義すればよい。上の図で、ストックは、運動量、フローは力積であった。運動量の不足と過剰(ライントレースカーが黒い線から外れようとしている)を知らせてくれるのが光センサであっ…
3.ライントレースカーを分析する 今回開発するのは写真のようなライントレースカーである。 このライントレースカーは二つの光センサを有している。これらの光センサの間には導線となる黒い線が引かれている。ライントレースカーが正常に動いているときは…
2.システム思考 レゴロボットの動作はそれほど複雑ではないが、すぐに、プログラミングができるほどには単純ではない。プログラムを開発するときは、仕様作成、設計、実装、検証、評価の手順を辿る必要がある。これから開発するロボットは、とても簡単で、…
1.ロボットを作成 今年は、梅雨に入ってから、殆ど晴れ間を見ることがなかったが、一昨日と昨日は、東京は猛暑に襲われた。この両日、講義もなく、会議も設定されていなかったので、一昨日、早朝の散歩を済ませた後、涼を求めて、天城高原に車を走らせた。…
1.GitHubに掲載 BrickPiをHaskellから利用するための外部関数インタフェースを完成させると、HaskellからLEGO社のモータやセンサが使えるようになる。外部関数インタフェースとC言語でのプログラムはこの記事で掲載するのには無理なほど大きなサイズになっ…
3.外部インタフェースを作成する BrickPiを介してRaspberry PiからLego Mindstormsを、Haskellで制御する方法を検討してきた。これまでに実装方法として次の二通りあることが分かった。1) C言語の開発環境では、BrickPi.hというヘッダー・ファイルを用意し…
1.制御方法 BrickPiの機能がだいぶ分かってきたので、これまでに得た知見をもとにHaskellでBrickPiを使えるようにする。C言語での開発環境は次の図のようになっている。 BrickPi側の方は、ハードウェアとそれを制御するファームウエアで構成されている。Ra…
2.モータ駆動のためのUARTプロトコール作成プログラム 前回の記事で、Raspberry PiからBrickPiへモータを駆動するときのUARTプロトコルが判明したので、ここでは、そのプログラムを作成する。UARTプロトコルの作成で面倒くさいのは、ビット操作が入ること…
1.BrickPiは少し賢い Lego Mindstromsを用いてロボットを作成しようと思うが、Lego Mindstormsに付属しているパソコンNXTあるいはEV3では自由にシステムを作成できない。そこで、Raspberry Piを用いて、Lego Mindstormsを制御することにした。しかも、C言…
1.Raspberry PiにBrickPiを搭載する Raspberry Piの特徴の一つは、外部の周辺機器との接続が簡単なことである。モータをつけることで動くものを作成できるし、さらに、センサをつければ検知も行えるようになる。一方、Lego Mindstormsには、Legoのブロック…