車椅子のナビゲーションシステムを研究しているのですが、
車椅子の座標計算の部分でつまずいています。
車輪の内側に磁石を60個円状に設置して、それをカウントして距離とどれだけ曲がったかを検出したいんです。
アドバイスでもいいのでよろしくお願いします。
質問内容は、VB の何に関する物でしょうか?
質問内容が具体的になっていないと、求める答えは得られないかと思いますよ。
> それをカウントして
磁石の何をカウントするのでしょうか?
また、そのカウント情報はどのようにして得られるものでしょう?
> 距離とどれだけ曲がったかを
カウント情報が得られたとして、それらから「距離」と「どれだけ曲がったか」を
算出するための、具体的な計算手順は確立されていますか?
(手順が決まっていない物をプログラミングする事はできないので…)
右90度に回る場合は、右車輪回転0、左車輪回転3
右60度に回る場合は、右車輪回転0、左車輪回転2
右30度に回る場合は、右車輪回転0、左車輪回転1
と仮定して
右車輪回転3、左車輪回転5 のデータがあったら
要素1)右車輪回転3、左車輪回転3
要素2)右車輪回転0、左車輪回転2
に分解し
要素1)前方移動3
要素2)右回転60度
とかですかね?
どうモデル化するかが重要です。
現実に近いほどシミュレーションは難しくなりますから。
たぶん学部卒程度の研究とは思いますががんばって下さい。
参考程度に!
現実的な位置測定したいなら・・・
加速度センサーとジャイロ積んだ方がよいかと。
※ 現実的にかつ簡単?にしたいなら、加速度センサーを
車の左右につけるか、ジャイロで左右の回転を判断す
るか〜
※ 磁石でなく、左右の車軸にエンコーダ入れた方が、よ
りよいかと思います。パルスカウンタで距離に換算で
きますので。磁石だと逆回転検出にかなり無理が出る
と思います。
※ 車イスの場合、通常の車ではないので、誤差が大量に
出てしまうので、大変でしょう。
その辺の補正の仕方がミソかと。
まぁ〜頑張って下さい!
以上。
車輪の半径をr1、車輪と車輪の距離をr2とし、
右側の車輪の回転数をtr、左側の車輪の回転数をtlとする。
tr >= tlの時(左回りccw)
移動距離は tl x tr x 2 x 3.14
tr < tlの時
移動距離は tr x tr x 2 x 3.14
左回転を正とした回転角は(単位度)
360 x (r2 x 2 x 3.14)/((tr - tl) x r1 x 2 x 3.14) = 360 x r2 / {r1 x (tr - tl)}
この距離と角度のベクトルを細かく合成していく事になる。
(最低でも10パルスに1回位は合成する。)
ただし磁石のカウントでは前進後退の判断がつかない。
しかも1回転60パルスでは誤差が大きすぎる、
ロータリーエンコーダーを使用するのが一番手っ取り速いが
出来なければ車輪の外側の金属の部分に黒と白のツートンカラーの縞を書いて
それを反射式のフォトカプラ2つで読めば回転方向がわかり、
しかもかなり細かくカウントが可能となります。
車輪の内側に磁石を60個円状に設置して、座席あたりにGPS付携帯電話を置く。移動後、GPS携帯から得る座標軸をカウントして、どれだけ曲がったかを検出すれば良いと思います。
で車輪の内側の磁石は?
学校の課題なんだから、与えられた仕様の範囲内で解決してあげましょう。
編集 削除非常に興味あるテーマなので楽しみにしていましたが質問者不在ですね。
実用に耐えうる方法としてはやはりGPSでしょうね。最近PCと接続できる
GPSレシーバも随分安価になってます。でも室内での車椅子ナビではGPS
が有効に機能するかは環境にもよると思いますが。
VBの掲示板ということで、パルスを簡単にPCでカウントする方法を一手
紹介します。一定時間内のパルス数をPCの外でカウントして一定時間毎
にPCは送信する方法(これだと別途外部装置が必要です)と、パルスの
ON/OFF自体をPCで検知してパルス数をPCが数える方法とがあると思いま
す。
後者で、費用をかけずRS-232Cの外部デバイスを用いず、PCでパルスをカ
ウントする方法があります。
MSComm1をパラレル入力デバイスとして使用する方法です。
外部に特別な装置なしで左右の車輪の磁石通過を検知するマグネットス
イッチを直接RS-232Cの制御線に接続します。
制御線はCD/DSR/CTSの3点が使用できますから3点のパラレル入力が外
部装置なしで実現できますよ。
If Me.MSComm1.CDHolding = True Then
処理1-1
Else
処理1-2
End If
If Me.MSComm1.DSRHolding = True Then
処理2-1
Else
処理2-2
End If
If Me.MSComm1.CTSHolding = True Then
処理3-1
Else
処理3-2
End If
ただし、発生するパルスのON/OFFを漏らさずPCで拾うには、車椅子の最
大速度を想定してパルスの発生周期の2倍で上記処理を実行する必要が
あります(サンプリングの定理)
なんだか楽しいそうなテーマだっだたので、おっせいかいですが、参加
させていただきました。
↑の回答
訂正:
>「発生周期の2倍で・・・・・」
(正)「発生周期の半分で・・・」です。
周波数は2倍ですね。