二足歩行ロボットコミュニティサイト

【サイトの使い方】  【サイトマップ】  【お問い合わせ】 
ロボット動画  |   ロボット写真  |   BBS  |   ダウンロード  |   イベント予定  |   スタッフ日記  |   リンク  |  
ログイン パスワード    新規登録   パスワード紛失  

スタッフ日記 - morimoriさんのエントリ
 morimoriさんのエントリ配信

2017/08/10
技術的小話【その11】Nexusをパワーアップ! 外部デバイスを接続して機能拡張しよう!

執筆者: morimori (11:29 am)
こんにちは!
何故か家の中で水筒を失くしたmorimoriです!
Nexus robot 3WDも6回目となりました。スーパー戦隊なら、そろそろ新しい装備やモードが追加されてパワーアップする頃ですね!
というわけで、Nexus robot 3WDにも新たなパーツを取り付けてあげることにします。

↓NEXUS ROBOTの製品情報はこちら
http://www.vstone.co.jp/products/nexusrobot/index.html




実は、Nexus robot 3WDの制御ボードはArduino互換なのです(前にも書いた気がする)。ということは、Arduino用の様々なデバイスがNexus robot 3WDでも(たぶん)動くということなんですね!

折角なので何か面白いものを取り付けたいなー、ということで今回は、ロボカップジュニアでも話題のカメラ「Pixy CMUcam5」を選択しました。
このカメラは、1枚のボード上に「カメラ」と「画像解析」の機能を乗せてしまったとっても便利なカメラなのです。
Pixyは7種の色を記憶することができ、撮影した画像中からその色が存在する位置とその大きさを教えてくれます。

今回はmorimoriの手の色を記憶してもらい、手を動かすとその動きに合わせてNexusが移動するようにプログラミングしてみました。

こちらの動画をご覧ください!

(動画が動かない場合、フルスクリーンモードをお試しください)


Nexusに取り付けることができるセンサやアクチュエータはまだまだ沢山あります。外部デバイスを取り付けることで、Nexusロボットにできることがたくさん拡がりますね!

皆さんもぜひ、Nexus robot 3WDに色々なパーツを取り付け、あなただけのオリジナルNexusを開発してみてください!


使用したスケッチはコチラ
---------------------------------------------
#include
#include
#include

Pixy pixy;

#define MOTOR1 9
#define MOTOR2 10
#define MOTOR3 7

#define FOWORD1 0
#define REVERSE1 164
#define STOP1 83

#define FOWORD2 7
#define REVERSE2 171
#define STOP2 91

#define FOWORD3 6
#define REVERSE3 170
#define STOP3 89

Servo wheels[3];

void setup(){
pixy.init();

wheels[0].attach(MOTOR1);
wheels[1].attach(MOTOR2);
wheels[2].attach(MOTOR3);

wheels[0].write(STOP1);
wheels[1].write(STOP2);
wheels[2].write(STOP3);


}

void nomove(){
wheels[0].attach(MOTOR1);
wheels[1].attach(MOTOR2);
wheels[2].attach(MOTOR3);

wheels[0].write(STOP1);
wheels[1].write(STOP2);
wheels[2].write(STOP3);
}

void forward(){
//wheels[0].detach();
//wheels[1].attach(MOTOR2);
//wheels[2].attach(MOTOR3);
wheels[0].write(STOP1);
wheels[1].write(REVERSE2);
wheels[2].write(FOWORD3);
}

void backward(){
//wheels[0].detach();
//wheels[1].attach(MOTOR2);
//wheels[2].attach(MOTOR3);
wheels[0].write(STOP1);
wheels[1].write(FOWORD2);
wheels[2].write(REVERSE3);
}

void leftforward(){
//wheels[0].attach(MOTOR1);
//wheels[1].attach(MOTOR2);
//wheels[2].detach();
wheels[0].write(FOWORD1);
wheels[1].write(REVERSE2);
wheels[2].write(STOP3);
}

void leftbackward(){
//wheels[0].attach(MOTOR1);
//wheels[1].detach();
//wheels[2].attach(MOTOR3);
wheels[0].write(FOWORD1);
wheels[1].write(STOP2);
wheels[2].write(REVERSE3);
}

void rightforward(){
//wheels[0].attach(MOTOR1);
//wheels[1].detach();
//wheels[2].attach(MOTOR3);
wheels[0].write(REVERSE1);
wheels[1].write(STOP2);
wheels[2].write(FOWORD3);
}

void rightbackward(){
//wheels[0].attach(MOTOR1);
//wheels[1].attach(MOTOR2);
//wheels[2].detach();
wheels[0].write(REVERSE1);
wheels[1].write(FOWORD2);
wheels[2].write(STOP3);
}

void loop(){
static int i = 0;
static int j = 0;
static int fbFlag = 0;
uint16_t blocks;
blocks = pixy.getBlocks();



if(blocks){
i++;
j = 0;

if(i>=5){
i = 0;

if(pixy.blocks[0].width > 200 && pixy.blocks[0].height > 120){
backward();
}else if(pixy.blocks[0].x < 100){
if(pixy.blocks[0].height > 160){
fbFlag = 1;
}else if(pixy.blocks[0].height < 100){
fbFlag = 0;
}

if(fbFlag){
leftforward();
}else{
leftbackward();
}
}else if(pixy.blocks[0].x > 220){
if(pixy.blocks[0].height > 160){
fbFlag = 1;
}else if(pixy.blocks[0].height < 100){
fbFlag = 0;
}

if(fbFlag){
rightforward();
}else{
rightbackward();
}
}else if(pixy.blocks[0].width > 180){
nomove();
}else{
forward();
}
}
}else{
j++;

if(j >= 1000){
j = 0;
nomove();
}
}

}

---------------------------------------------
ご質問等は受け付けておりませんのであしからず!
morimoriさんのブログを読む | コメント (0) | トラックバック数 (0) | 閲覧数 (244)
このエントリのトラックバックURL
http://lets-robot.com/modules/weblog/weblog-tb.php/2889
投稿された内容の著作権はコメントの投稿者に帰属します。
最近のweBLogのコメント
スタッフ日記 カレンダー
«  «  2017 12月  »  »
26 27 28 29 30 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31 1 2 3 4 5 6
検索
メインメニュー
カテゴリ一覧
アーカイブ