Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

衝突時に角度がバグる場合がある #2

Open
yammmt opened this issue Jan 3, 2016 · 10 comments
Open

衝突時に角度がバグる場合がある #2

yammmt opened this issue Jan 3, 2016 · 10 comments

Comments

@yammmt
Copy link
Owner

yammmt commented Jan 3, 2016

軽くぶつかっただけならまだしも、強くぶつかって Sphero 本体の角度が変わってしまうと辛いです。
定期的に補正かけてやるべきなのですが、スマートな方法が浮かびません。

@yammmt
Copy link
Owner Author

yammmt commented Feb 28, 2016

startCalibration() よぶと手動補正が行えますが、せっかくの自動操縦なのに手動で直してもねぇ…

@shundroid
Copy link
Contributor

磁気センサーとかあるかなと思って調べたら、
streamGyroscope という関数があるそうです。
これでぶつかった瞬間からその場回転して、90°曲がるまでとかの指定ができないでしょうか。

Sphero API のページ
http://sdk.sphero.com/community-apis/javascript-sdk/#custom-commands-streamgyroscope-sps-5-remove-false

@yammmt
Copy link
Owner Author

yammmt commented Mar 1, 2016

ご意見ありがとうございます。確認遅れ面目ないです。
実物動かして衝突時にどれくらい数字が変わるか見てみた方が良さそうですね。次の土曜日までに確認しておきますー

yammmt pushed a commit that referenced this issue Mar 1, 2016
位置補正追加、初期色をオレンジに変更
開始時に前進するように追加
@shundroid
Copy link
Contributor

わかりましたー

@shundroid
Copy link
Contributor

プログラム的には・・

  1. ぶつかったら・・
  2. その場回転をする
  3. 90°はかる
  4. 進む

2. その場回転をする と、3. 90°はかる が鍵となりそう。

@shundroid
Copy link
Contributor

その場回転はできた。

var deg = 0;
setInterval(function() {
  deg = (deg + 15) % 360;
  orb.roll(1, deg);
}, 500);

@shundroid
Copy link
Contributor

90° はかるとき、ジャイロセンサー以外にも使えそう。

使えそうなの:

  • streamGyroscope (ジャイロ)
  • streamAccelerometer (加速度)
  • streamImuAngles (上下、左右、回転それぞれの角度)

@shundroid
Copy link
Contributor

streamImuAngle が一番いいかも。

var deg = 0;
orb.streamImuAngles();
orb.on("imuAngles", function(data) {
  console.log("  yawAngle:", data.yawAngle.value);
  deg = (deg + 15) % 360;
  orb.roll(1, deg);
});

yawAngle の値は、-180 から 180 の間で取れるっぽくて、
結構正確。

@shundroid
Copy link
Contributor

一応実行結果も

  yawAngle: [ -11 ]
  yawAngle: [ -26 ]
  yawAngle: [ -42 ]
  yawAngle: [ -58 ]
  yawAngle: [ -75 ]
  yawAngle: [ -90 ]
  yawAngle: [ -104 ]
  yawAngle: [ -104 ]
  yawAngle: [ -119 ]
  yawAngle: [ -134 ]
  yawAngle: [ -149 ]
  yawAngle: [ -165 ]
  yawAngle: [ 178 ]
  yawAngle: [ 165 ]
  yawAngle: [ 149 ]
  yawAngle: [ 135 ]
  yawAngle: [ 119 ]
  yawAngle: [ 105 ]
  yawAngle: [ 89 ]
  yawAngle: [ 75 ]
  yawAngle: [ 59 ]
  yawAngle: [ 43 ]
  yawAngle: [ 30 ]
  yawAngle: [ 15 ]
  yawAngle: [ 0 ]
  yawAngle: [ -15 ]
  yawAngle: [ -30 ]
  yawAngle: [ -45 ]
  yawAngle: [ -60 ]
  yawAngle: [ -74 ]
  yawAngle: [ -89 ]
  yawAngle: [ -105 ]

数は減っていくようだ。グラフにしたい

@shundroid
Copy link
Contributor

orb.roll のタイミングがバグるのは、
ping をして、帰ってきたあとにモーターを回すようにすればおkっぽい。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants