投稿

6月 11, 2022の投稿を表示しています

TJ3Bで三角関数を使う

イメージ
TJ3Bでの三角関数の使い方を紹介します。 先輩のポスターなどで見て、三角関数を使ってみたい、という選手向けです。 なぜ三角関数を使うかの例はこちらの記事を読んでください。 センサの値からボールのある角度を求める(理論編) おそらく、辺の長さから角度を求めたいと思います。 変数X、変数Y にそれぞれ、横の長さ、縦の長さが代入されていたとして、 C-CODEで、このように書くと使えます。 gV[VAR_B] = atan2( gV[VAR_Y] , gV[VAR_X] )/3.14*180; atan2(Y,X) という関数を使います。この行を書くだけで辺の長さから角度を求めることができます。 縦の長さのYが先に来るのに気を付けてください。 これで変数Bに角度(単位は°)が代入されます。 図にするとこんな感じです。 最後に3.14で割って、180をかけていますが、これは式で求められる角度が0~360度ではなく、単位がラジアンという0~6.28の値(半径1の円周の長さで角度を表す)を使うので変換しています。 この式が本当に正しく動くのかの検証のために、実際に値を代入して、得られる結果を実験してみました。 以下のプログラムをC-STYLEで作成しました。 先ほどの文は12行目に入っています。 C-CODE 001|//-------------------------------------------------------------------------------- 002|#include "D_Main.h" 003|#include "D_I2C.h" 004|#include "D_SIO.h" 005|#include "D_EIO.h" 006|//-------------------------------------------------------------------------------- 007|// Program Name : atna2ループ.C 008|//-------------------------------------------------------------------------------- 009|void

ロボットプログラミング入門講座 R4前期 開催中

イメージ
 5月21日(土)より、ロボットプログラミング入門講座講座を開催中です。 入門講座は、5/21, 28, 6/11, 25, 7/9の5回の講座で、小学4年生から中学生までが参加できる講座です。5月からと10月からの年2回開催しています。 初めてロボットを扱う子のための講座で、プログラミングでどのようにロボットを動かすかを学びます。 入門用のソフトウェアでブロックを並べるようにプログラミングがおこなえますので、初心者でも大丈夫です。プログラミングでロボットを動かせるようになったら、サッカーを行うプログラミングにチャレンジします。 初回はロボットの組み立てです。 部品を一度組み立てた後にも改造のために分解できるように、ねじとナットが使われているんですが、慣れない子どもたちにはナット回しも一苦労です。正しく組み立てられるとロボットが正しく動き出しますが、ナットがゆるんでいたり、取り付け方法が逆だったりするとロボットが変な動きをしたりします。 2回目からいよいよプログラミングを開始します。 まずは前進してみるプログラムから。ロボットに命令を与え、その通り動くという経験は楽しいもののようです。その過程は驚くほど簡単で、そこで戸惑う子はいません。 適当な命令で適当な動きをするのはすぐできますが、思い通りに動くような命令を作るとなると、難しくなってきます。あーでもない、こーでもないと試行錯誤が必要です。 3回目はセンサーを使ったプログラミングを行います。 命令をただ実行するだけのロボットは、前進の命令を出すと壁があっても突っ込んでいきます。いくら命令されても人間はそんなことはしませんね。目で見ることができ、危ないと思ったらやらないという判断をしているからです。ロボットにもセンサーという「目」がついているので、これを使って、「前進するけどもし壁があったら止まる」というプログラムを組んでみます。 4回目になるとサッカーのプログラムをします。 目の前にボールがあると反応する「赤外線センサー」を使って、前にボールがあるときは・・・、ないときは・・・というプログラムを組んでいくと、ボールを追いかけるプログラムができます。ほぼ3回目にやった内容で試合までできてしまうんですが、もっと強くするにはどうすればいいのか? これを考えていきます。 5回目 サッカー大会 出来上がったプログラムでサッカ