自己位置くんで遊ぼう#
環境構築#
こちらのリンクにある手順でArduino IDEをセットアップしてください。
コーディングを始める#
プロジェクトをダウンロードする#
こちらのリンクにアクセスします。アクセスして緑色の<> Code
ボタンをクリックして表示されるDownload ZIP
をクリックしてダウンロードします。ダウンロードしたら解凍して適当な場所に配置します。この時フォルダー名がexample_zikoichi_kun-main
のようになっているのでexample_zikoichi_kun
に変更します。
コーディングを開始する#
example_zikoichi_kun
フォルダ内にあるexample_zikoichi_kun.ino
ファイルをダブルクリックするとArduino IDE
が起動します。
.ino
ファイルには以下が記述されています。
#include "zikoichi_kun_api.hpp"
void setup() {
zk_api::setup();
}
void loop() {
zk_api::xyz_control(1.0, 0.0, 0.0, 50);
}
それでは一行ずつ解説していきます。
まず初めはインクルードファイル
この自己位置くんを動かすために作られたライブラリを展開します。コンパイル時の挙動はこのヘッダーファイルに記述されている内容が#include "zikoichi_kun_api.hpp"
にコピーされます。(ここにCSVファイルを指定してデータを読み込むという裏技的な使い方もある)
#include "zikoichi_kun_api.hpp"
初期化関数
マイコンに電源が投入されてプログラムが実行される最初の一回だけ実行される関数です。この{}
の中に最初の一回だけ実行したい処理を記述します。この例ではzikoichi_kun_api
の初期化処理が走っています。
void setup() {
zk_api::setup();
}
ループ関数 このループはマイコンが実行されている限り無限に繰り返されます。この例だと下記と等価と考えることができます。
void loop() {
zk_api::xyz_control(1.0, 0.0, 0.0, 50);
}
int main(void){
while(true){
loop();
}
}
Zikoichi Kun API#
xyz_control#
xyz_control
関数はロボットに対してXYの単位ベクトルとz軸の単位ベクトルを与え強さを与えると、ベクトル通りにロボットが移動する関数です。
zk_api::xyz_control(1.0, 0.0, 0.0, 50);
変数名 | 型 | 想定される範囲 |
---|---|---|
x | float | -1.0 ~ 1.0 |
y | float | -1.0 ~ 1.0 |
z | float | -1.0 ~ 1.0 |
power | float | -255.0 ~ 255.0 |
入力を下記の式に基づき各モータの出力に合うようにベクトルを分解します。
行列で書くと下記のようになります。
control#
特定のモータの回転速度を決める
zk_api::control_front_right(128)
zk_api::control_front_left(-128)
zk_api::control_rear_left(128)
zk_api::control_rear_right(-128)
変数名 | 型 | 想定される範囲 |
---|---|---|
power | int | -255 ~ 255 |