コンピュータ-Python
GyrodはLEGOがMindstorms EV3のための高度なプログラミング環境として用意したMicropythonを使用しています。 Micropythonについては、本体、周辺デバイスを使うためのライブラリがあり、下記のサイトで参照することができます。 pybricks.comまたそこにはラ…
【理論編 その1】でGyrodの運動を定式化し、その系が可制御であることを述べました。次にその実現方法について話を進めます。 可制御であることが保証されている制御系を具体的に構築するために広く用いられているのが、図4のように制御入力を状態変数の重…
GyrodはMindstorms EV3で構築した図1のような形状をした2輪のロボットで、バランスを取って直立させながら、遠隔操縦で走行させることができます。 図1 側面図 正面図 これを実現するうえで最も難しいのが直立させ続けるための制御で、一般に倒立振子として…
先週Gyrotodとして紹介したロボットを改造、強化しました。ジャイロセンサで検出した傾き・角速度、車輪の回転角・角速度をフィードバックしてバランスを保ちながら、赤外線送信機からのコマンドを受けて自由に走り回ることができます。指示を受け付けると、…
最近よちよち歩きを始めた孫にインスパイアされて、おじいちゃんがこんなものを作ってみました。 Gyroセンサを使ってバランスをとり、よちよち進む(toddle)ということで、Gyrotodと名付けました。下はその実行の様子を撮影したビデオです。机の上の狭い場…
先週購入したMindstorms EV3用のジャイロセンサをPythonで動かすことができました。 センサを傾けると、角速度と角度がそれらしい値を示しているのでよさそうです。 だから何だと言われそうですが、角速度と角度が検出できるとうれしいのです。(笑)下は実…
バンダイの"Bトレイン・ショーティ―"は長さ方向が半分程度にデフォルメされた1/150サイズのディスプレイモデルです。 ja.wikipedia.org 特徴をとらえたかわいらしい形状が気に入っていて、個人的な思い出のある電車、列車をコレクションして壁に飾っています…
プログラムを実行 プログラムができたので実行させてみました。 最初の課題はオーソドックスな(1)の左の配置を初期状態とするものです。プログラムの中では、それを右のように数字で取り扱います。下は得られた解法のステップを盤面を2次元arrayの形で表…
プログラムの作成 方針が定まったので、プログラムを下記の3つのモジュールに分解して作成することにします。 main.py:初期状態を入力して実行を開始し、解法を出力するモジュール search.py:探索に関する関数を定義するモジュール board.py:盤面の変化に…
データ構造 その2で探索の方針が決まったので、それをPythonで実装するためのデータ構造、関数について考えます。 ◆ 盤面 その1で述べたように、盤面は5×4のマスで考えると統一的に処理できるので、多次元配列を扱うことができる、numpyのndarray(N-dime…
探索の方法 階層的なデータ構造を表すのに下の図のようなTreeが使われます。Treeはnodeとedgeで構成され、特に起点となるnodeはrootと呼ばれ、あるnodeから別のnodeが生成される時には、上流のnodeはparent node、下流のnodeはchild nodeと呼ばれます。paren…
問題の定義 「箱入り娘」は、下図に示すように枠の中に収められた大きさの異なる 1×1、2×1、1×2、2×2 のタイルが空いているスペースを使って縦、横に動かせるようになっている一種のスライディングパズルです。最初(A)のように奥に置かれた一番大きな2×2の…
chatGPTが注目を集めています。昨日は、開発元のOpenAIのCEOのSam Altman氏が来日し首相にもあったとかで世間も随分にぎやかです。 まだ初期の段階ですが、もっともらしい日本語の文を返してくれるだけではなく、プログラムも書いてくれるというのは興味があ…
先日設計した回路で前提としたステッピングモータ・ドライバーのTB6600 を入手できたので、ステッピング・モーターとカメラをコントロールする回路を実装してRaspberry Piからテストをしてみました。回路図中の黄色破線で囲った部分です。 テスト・プログラ…
ev3devはDebian Linux ベースのOSで、LEGOとは無関係の ev3dev.org というコミュニティーによって独自にMindstorms EV3(以後EV3と書く)のために開発されたソフトウェア・プラットフォームです。EV3用のセンサ、モータ等のハードウェアの低レベルのドライバ…
PIXY(CMUcam5)は、イメージセンサOmnivision OV9715(1/4", 1280x800)とマイクロ・プロセッサNXP LPC4330を搭載したモジュールです。 毎秒50フレームで画像データを処理して対象の物体を検出し、画像内でのその物体の位置、大きさ等の有用な情報のみを出力す…
Raspberry Piでシステムを構築するとき、状態が表示される機能があるとなにかと便利です。そこでRaspberry PiにLCDキャラクタ・ディスプレイを付けることにしました。 接続のための線が少なくて済むようにI2Cタイプのものを探すと、I/Fモジュールを利用してI…
先の記事「Raspberry Piでstepping motorを動かす 2」ではDRV8835を使用してStepping Motorを動かしましたが、本メモはそのDRV8835でDCモータを動かす方法を記したものです。ーーーーーーーーーDRV8835はIN/INとPHASE/ENABLEの2種類のモードがある。データシ…
「Raspberry Piでstepping motorを動かす 1」でモータの正転、逆転、停止ができるようになったので、外部スイッチを使ってそれらの動作を切り換え、更にその時の状態がLEDで表示されるようにしてみました。以下はそれに関するメモです。 ーーーーーーーーー…
Raspberry PiのGPIOを使ってstepping motorを動かしてみました。以下は、それについての備忘のためのメモです。ーーーーーーーーーーーーー 使用したステッピングモータはバイポーラ駆動用の17PM-K044 、ドライバはDRV8835 で、秋月電子のWebサイトから通信…
先週(11/24)、ニューラルネットワークをPythonで実装する準備をしていることを書きました。 そのニューラルネットワークでやろうとしていることは、カラーセンサーでルービックキューブの個々のパネルの色を認識することです。カラーセンサは近接する物体…
ニューラルネットワークのPythonでの実装について、9月に勉強して分かったつもりになっていたが、2か月間別のことをしていたら、すっかり忘れてしまっている。 あーあ、である。 まあ、一度理解できたことだし、納期があるわけじゃないのでやり直せばいいだ…
実際のコードは複雑で、複数のモジュールに分かれているのだが、単純化すると以下のようなコードを書いた。 class C: def __init_(self): : def a(self): print("execute functin a()") def b(self): print("execute functin b()") : c=C() c.a() c.b() 実行…
Facebookが「思い出」として過去のその日に投稿した記事を日々知らせてきますが、最近それらの中に、2年前にMindstorms EV3で作ったRubik’s Cube Solverが完成したことを書いた記事がありました。そのRubik’s Cube Solverを作った頃はまだこのブログを持って…
pyplotで3Dグラフを描くためのサンプル・コード from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt import numpy as np def func1(x): return x[0]**2 + x[1]**2 x0 = np.arange(-3.0, 3.0, 0.1) x1 = np.arange(-3.0, 3.0, 0.1) X0…
VS Codeでソースコードを印刷する方法についての備忘録 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー VS Codeでは、デフォールトでは印刷機能は用意されておらず、通常のWindowsアプリにようにファイルの下のメニューを捜しても、以下のよ…
実際のパズルを解くためのプログラムの最後のステップはグリッパーで円盤を動かしパズルを解く処理です。 すでに、「EV3でハノイの塔を その4」において、解法のアルゴリズムを下記の疑似的なpythonの関数solve(n, sc, dc)で記述しましたが、その中のmoveTa…
今回は、「EV3でハノイの塔を その6」で”パズルを解く具体的な処理”の2)として挙げた、X軸、Y軸、Z軸の原点の設定について説明します。それらの設定は自動的に行うようにしたいのですが、Mindstormsの部品で実現するとなると制約があり難しいところがあり…
THS1の機構ができ、解法のアルゴリズムが確認できたので、いよいよ実際のパズルを解くためのプログラムの作成です。 パズルを解く処理を、 1)グリッパーとパズルをある範囲内にセットする 2)原点を自動的に設定する 3)グリッパーで円盤を動かしパズル…
Infrared Receiver SensorはHiTechnic社からNXT用として提供されているもので、これを使うとLEGOのIR Remote Controlからのコマンドを受信することができます。 このデバイスをEV3のセンサとしてPythonで使用する方法について以下に記します。 EV3を起動した…