Mindstorms EV3再開 [LEGO]
実践ロボットプログラミング第2版―LEGO Mindstorms EV3で目指せロボコン!
- 作者: 藤吉 弘亘
- 出版社/メーカー: 近代科学社
- 発売日: 2018/05/01
- メディア: 単行本
・ジャイロセンサー:NXTのサードパーティ製(HiTechnic社)オプションを流用
・タイヤ:径が同じであろうNXTのを流用
・いくつかの筐体構築パーツ:同機能になるように既存部品で作成
NXTway-GSをPS3のコントローラーで操縦 [LEGO]
2輪倒立振子ロボット(NXTway-GS)を試す [LEGO]
センサー類をゲット [LEGO]
3軸のFuturaを作る [LEGO]
Chess Robotを作った [LEGO]
iCommandの利用例としてChess Robotを作ってみた。かなりの大型で全長70cmくらいになる。PC側のプログラムからChessの座標を指定して、駒を移動させるロボットだ。2本のアームとはさみがあり、3個のモーターで制御する。
よくできているのは、駒をつかんだ後ギアがロックすると、「手首」の部分が持ち上がり、駒を持ち上げる動作をすることだ。モーター1個で、
・駒をつかむ
・手首を持ち上げる
の動作ができる。
本に記載されているプログラムでは、駒の移動をプログラム中に埋め込んでしまっているので、PC側から自由にコントロールできるわけではない。決められた動作をするだけだ。
例によって、少しメカに弱い部分があって、思うようには動かなかった。一応それらしく駒をつかんで移動する動きはしたが、前のアームの動作がこころもとない。見てみると、ギアの噛み合わせがいまいちで、回転中に滑っているようにも思う。
とりあえず、iCommandの使用例としてはこんなものとして、次に進めることにする。
iCommandを試す [LEGO]
先日はBluetoothで手間取ったが、本格的に例の本のトレースを再開した。
leJOSの別プロジェクトにiCommandがある。これはBluetoothを使ってNXTをコントロールするPC側のAPIで、NXT本体は標準のNXTファームウエアを使う。
例によってこれも手こずる。結局Eclipseを使う場合、以下のような手順で実行までこぎ着けた。
(1) iCommandをダウンロードして解凍
(2) シリアル制御のJAVAライブラリRXTXをダウンロードして解凍
このとき、zipファイルの解凍に手こずった。2〜3の解凍ソフトを使ったがだめで、結局Macで解凍できた。原因不明。
(3) 解凍後のiCommandフォルダ内にあるicommand.propertiesを修正し
所定の場所におく
修正内容は以下の通り。
nxtcomm.type=rxtx
nxtcomm=COM5(コントロールパネル「Bluetoothデバイス」で確認しておく)
保存場所は、¥Documents and Settings¥<ログインユーザー名>
(4) EclipseでPC側の制御ソフトをコーディングする
(5) Eclipseの「プロジェクト」「プロパティー」「Javaのビルド・パス」で
以下の外部JARを2つ追加する
・icommand.jar
・RXTXcomm.jar
(6) RXTXcomm.jarのネイティブ・ライブラリ・ロケーションを、
rxtxSerial.dllのフォルダに設定する
このdllはRXTXを解凍したフォルダ内にある
(7) 実行時に、COMポートを設定するウインドウが出現したら、使用するCOMポートに
チェックしてsaveする
このウインドウをクローズするとプログラムが終了してしまう。最初は訳が分からなかった。Eclipseを立ち上げ直すなどしているうちに出なくなった。原因不明。
(8) 正しく動作すると「Enter commands」という1行分のウインドウがでてくるので、
ここでキーを入力する
といったところか。そしてBluetoothで制御される車型ロボット「MoonBuggy」を製作して動作させてみた。
この本のメカは今ひとつで、期待通りに動かない。前進後退と、ステアリングの左右ができるのだが、実際に走らせると重さや摩擦に負けてしまう。電池がへたってきてモーターにパワーがないことも原因だが、メカの方もかなり改善余地はある。
なお、記載されているJAVAプログラムに一点修正がある。
P169の50行目後半は、〜 Motor.B.getTachoCount()); が正しいと思う。オリジナルだとコンパイルエラーになってしまう。ちなみにiCommandのバージョンは0.7を使用。
Windows XP SP3でBluetoothが機能しなくなった [LEGO]
久しぶりにLEGO Mindstorms NXTを出してみた。というのも、本業の方で制御系(PIDとか現代制御)を扱う仕事があるので、理論だけでなくNXTで実践してみようと思ったからだ。以前買った本やNXTを扱っているサイトにはこの手の情報もある。2輪倒立車のNXTWay(Segwayをもじった)などの製作例もある。
まずはともあれ、新しいleJOSをインストールしておなじみのHelloWorldをダウンロードしようとしたら機能しない。いろいろ調べるとBluetoothが機能していないようだ。leJOSをやめてオリジナルのNXTファームウエアに戻してもだめ。古いPCでやってみてもだめ。全くお手上げ状態。
サイトをいろいろ調べてみると、 Windows XP SP3でBluetoothが機能しなくなることがあるようだ。どなたかがMSに問い合わせをした返事が記載されていたので、それを参考に設定してみたら機能した。2台のPCはいずれもMicrosoft Updateで半ば強制的にSP3にUpdateさせられてしまったものだ。使えていた機能が拒否しづらいUpdateで機能しなくなるというのは、いわゆる「マルウエア」と変わらない。Microsoftのいつもの余計なお世話のおかげで半日つぶしてしまった。実に腹立たしい。
●症状
コントロールパネルの「Bluetoothデバイス」おいて、
・パスキーの交換まではOK
・COMポートからBluetoothサービスを選択しようとすると「アクセス拒否」がでて選択できない
●対策
・コントロールパネルの「管理ツール」内の「サービス] を開く
・「Bluetooth Support Service」をダブルクリックで開く
・「ログオン」タブを開く
・「ローカルシステムアカウント」にチェックを入れる
・「適用」「OK」ボタンを押しPCを再起動
R2MeTooを作ってみたが... [LEGO]
洋書のLEGO本を読みつつ、最初のロボット「R2MeToo」を作ってみた。名称と3本足がR2D2を想像させるが、頭の部分は似ても似つかない。本には、製作過程の図が載っているが、印刷の濃さの関係で不鮮明な部分があり、製作にはややてこずった。が、説明の文面にはきちん書かれているので、億劫がらずに英語を読めば何とかできる。
JAVAプログラムをざっと読んでみると、進行方向に物体があれば、首を振ってもののない方向を探し、その方向に移動するはずだが、挙動がおかしい。センサーを取り付けるポートが、プログラムと説明とで異なっているなど、誤りも少なからずあるので、じっくり調べてみる必要がありそうだ。
leJOSでBluetoothアップロード成功 [LEGO]
久しぶりにleJOSのサイトを見たら、なんと更新されていた。ダウンロードしてドキュメントを見てみるとBluetoothが使えるみたいだ。早速試してみた。
コンパイルしたJAVAプログラムをBluetoothでアップロードできた。NXT側には簡単なユーザーインターフェースを持ったleJOSのメニュー画面があり、この中でアップロードしたファイルの実行や削除ができる。さらにPC側でnxjbrowseコマンドを実行すると、NXT側のファイルを操作するウインドウも立ち上がり、ここでもアップロードや実行もできる。なかなかいい。これで本格的にNXTのJAVAプログラミングができる環境が整った。あとは管理人のやる気しだいか。
今回のバージョンからコマンド類の名称が一新されていたり、環境変数名が変わっていたりで、この本との整合性が取れなくなっている。RCXとの共存のためなのかもしれないが、見込みで本を書いたのが見え見えだ。