最近リムロボ(4本の脚が放射状に伸びたロボで1つの脚に3つのモーターがついており計12個のモーターのついたロボ)を作り始めました。モーターはsanwaのERG-VBを使っています。
まだプログラムも作り始めたばかりで何から手をつけたら良いのかわからないので先端の2つだけを動かす逆運動学の勉強から始めようと思いました。
完成したのが以下のプログラムなのですが
・setup関数をloop中で呼び出すのは余り良い方法ではないらしく、別の関数を用意したほうが良いらしく、
・そしてservo.attachなど、複数回呼び出す必要のない関数はなんども呼び出さないようにする必要があるらしいです。
なのですがどのようにプログラムに変えたら良いのかわかりません。お手数ですが書き換えたプログラムを教えてもらえたらなと思い投稿させていただきました。
そして、これから沢山わからない事がでてきて掲示板に書き込みする事が度々あると思いますが暖かく見守っていてほしいです。お願いします。
#include<Servo.h>
Servo servo1,servo2,servo3,servo4;
double
a,b,c,x,y,pos1,pos2,pos3,pos4,pos5,A,B,
C,D,radian1,radian2;
void setup(){
servo1.attach(9);
servo2.attach(7);
servo3.attach(10);
servo4.attach(11);
y=10;
b=7.5;
c=9.5;
a=sqrt(xx+yy);
pos1=((bb+cc-aa)/(2bc));
radian1=acos(pos1);
A=radian1180/M_PI;
B=180-A;
pos2=(y/x);
pos5=((bb+aa-cc)/(2ba));
D=acos(pos5);
radian2=atan(pos2);
C=radian2180/M_PI-D;
}
void loop(){
for(x=0; x<=10;x+=10){
setup();
servo1.write(C);
servo2.write(B);
servo3.write(C);
servo4.write(B);
delay(1000);
}
for(x=10; x>=0;x-=10){
setup();
servo1.write(C);
servo2.write(B);
servo3.write(C);
servo4.write(B);
delay(1000);
}
}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/21 08:47