Air et de fleurs extrêmement délicates peuvent faire leurs propres mains un cadeau, un matériau très ordinaire - serviettes. Produit appartient à la catégorie de simple car il peut attirer même les enfants les plus jeunes, de sorte qu'ils ont les mains si rare et beau bouquet comme un cadeau à sa mère bien-aimée, la grand-mère et sa sœur. Dans serviette matière de produits de papier peut servir tissus qui sont emballés dans une boîte, mouchoirs il ya une lumière, aérée, et monter que possible.
Dans serviettes pour les produits besoin de différents marqueurs de couleur, des ciseaux, du ruban, et les tiges peuvent être utilisés pour les branches simples, qui en quantités suffisantes peuvent être trouvés sur le terrain, pas d'arbres et d'arbustes oblamuyuchy.
Instructions sur la façon de faire des fleurs de serviettes sont ici
Une fois que vous faites un nombre suffisant de couleurs qu'ils peuvent former un bouquet. Ksati tiges peut être utilisé pour les tiges de fleurs artificielles, se ils sont dépassés et ils ont besoin de rafraîchir.
Omettant rozkazni comment je suis venu à l'idée de construire heksapoda (ce était des tonnes de vidéos sur YouTube), aller directement aux détails du processus de sélection. Ce était Janvier 2012. Je sais juste ce que je veux de mon travail et ce - pas. Je aime:
que chaque jambe était trois degrés de liberté - 3DOF (trois dimensions de la liberté), en option 2DOF plus facile - rend un tel sentiment d'insectes et 4DOF - fois, 3DOF et ainsi vous permet de déplacer librement la pointe du pied dans l'espace 3D;
6 pieds. Encore une fois, ce ne est pas 4 (si maladroite robot de sauts), mais pas 8 que les araignées qui sont excessivement;
petite taille;
pas cher au coût;
avec un minimum de planches et de connexions.
Étape 1
. Tout d'abord, bien sûr, eu à choisir la carte mère pour l'enfant. Beaucoup un bon et le mauvais temps de lire au moment de l'Arduino. Mais sur lui et regardé comme option principale. contrôleur de soudure lui-même - il n'y avait pas de temps et de prendre conseil plus avancé avec un CPU ARM, par exemple - ce est cher, et de comprendre comment leurs programmes, comment travailler avec les résultats de PWM, etc. - longues. Un arduyna: IDE lancé, le code de napedalyl, télécharger pressé - et bonjour, vous avez clignoter. La Beauté! ;)
Au début, je ai commencé à regarder méga et clones Arduino, de sorte que les sorties PWM qui peuvent être contrôlés servo ils eu assez. Rappelez-vous que 3DOF heksapoda besoin 3 * 6 = 18 serfs et la gestion des canaux de composant. Mais ensuite je ai trouvé un vrai Yazz parmi Arduino Mega, une charge de Dagu, appeler Red Back Araignée contrôleur. Ici, il est sur ebay.
Il offre à tous ses sorties comme terminé trois broches (terre, la nourriture, le ton), et la solution de la nourriture. Pouvoir du contrôleur stabilisée, et le connecteur est dvyhlov comme ce est (UPD: pas comment, mais aussi stabilisé 5 volts Et apparemment résolu avec le contrôleur d'alimentation comme une ingérence avec le contrôleur 18 serfs concurrentes ne font pas.). Cela permet au fichier vers le terminal 7-30 volts nourriture suffisante puissance (eee pc questionnaire de 901 à 12V et 3A - était assez pour tout 18 servo bourdonnement) et ne trompe avec alimentation séparée et la logique dvyhlov. En outre, il sera à l'avenir est facile à mettre ce pack de monstre de la batterie Li-Po 7,4 volts. Et avec tout cela, point de vue programmatique - ce est un arduyinov commune méga-conforme logiciels et lybamy et de fer (autre que shyldov, monté directement sur les méga originales - qu'ils ne fonctionnera pas). Cependant, le prix est plus élevé que même le Mega original, mais tous les autres avantages l'emportent sur elle.
Étape 2
. Suivant servos. Sur ebay micro servo Demandez-leur bien différente. Je ai pris le plus puissant des plus petits et moins chers, 9 grammes de poids, les engins plastique. Si vous prenez beaucoup où ils envoient lots - est moins cher. Je ai pris trois packs de 6 semble avoir passé moins de 2 $ pièce. Je vais vous dire que regretter de ne pas dépensé plus et prendre servo à engrenages métalliques et des roulements à billes. Ces plastiques étaient réaction tout à fait remarquable, et le resserrement caractéristique lorsque une force excessive lors saute engrenages. En raison de la réaction - la cinématique tout à fait difficile d'ajuster avec précision (comme ce est généralement le plus dur est avéré).
Ce est tout ce que je ai commandé, la livraison a fait environ 100 $. Batteries et émetteurs / récepteurs pour la surveillance et radyoupravlyaemosty - laissées pour plus tard. Parce que la machine radio-commandé je ai et me demande pas ce qui me intéressait vraiment - ce est pieds! Vidéos passent bien heksapodov sur YouTube - Je le regardais fasciné, regardé, et chaque fois que les larmes roulant sur ses joues, et je étouffés respiration sifflante «Je veux! ». Je ne voudrais pas demander une pièce finie, et je veux faire quelque chose est plus!
En attendant l'ordre lire comme des gens instruits qui animent leurs créations. Bien sûr, immédiatement surface cinématique inverse. Si vous dites simplement et directement sur les sharnytnыe "membres", la cinématique directs - ce est là que l'entrée soumis coins articulations, et la sortie, nous avons un modèle de la branche dans l'espace, les coordonnées des points extrêmes de la branche. La cinématique inverse est - va à l'encontre de toute évidence - l'entrée reçu coordonnées des points extrêmes de la branche où nous devons atteindre, et la sortie nous obtenons angles qui doivent tourner charnières pour accomplir cela. Servo juste obtenir la position angulaire d'entrée dans lequel ils doivent revenir (un fil de signal codé PWM / PWM).
Etape 3
. Je ai commencé avec, qui se lisent, pensent à travers la mise en œuvre de l'IC. Mais bientôt venu le sentiment que mon cas ce trop complexe. Et comme lourde à mettre en œuvre et de calcul très difficile - le calcul est itératif. Et je ai six jambes, dont chacun devrait être considéré comme IC, et juste pas très intelligent 16Mhts architecture AVR. Mais seulement trois degrés de liberté. Et facile à deviner que le point arbitraire dans dotyahuvannya "peut atteindre une seule façon. La décision a mûri dans ma tête.
Mais vint Février et de colis - un de la Chine, un autre au Royaume-Uni. La première chose que je ai habituellement juste pohravsya Pay arduyinov - LED popylykal pomorhal et un haut-parleur relié il. Puis a commencé la mise en œuvre effective IC, dans la glande. Qu'est-ce qu'il a construit un prototype pieds à partir de matériaux de rebut (plutôt de plastmasska doux qui est facile à couper avec des ciseaux, vis et pièces jointes - tous des kits actionneurs). Cette étape de terminaison fixé directement au conseil arduynы. Vous pouvez examiner comment le budget a fait articulations.
Pomyluvavsya cette affaire et que si je pomriyav basé ce travail dans le terminateur de l'avenir, qui déclare la guerre à l'humanité, puis plus tard avec John Connor Schwarzenegger sera de retour à moi ici dans le passé et choisira ce prototype et son rasplavyat dans Orodruyne. Mais personne ne est revenu, rien enlevé, et je suis allé tranquillement.
Étape 4
. Il a été constaté que l'IR n'a pas besoin de craindre, dans mon cas, il est descendu à la géométrie triviale, la trigonométrie. Plus facile à appliquer pour les joints, se tourna vers Wikipedia et honoré d'insectes. Ils ont des noms spéciaux pour les membres:
Russe a aussi ses noms très intéressants pour cela, mais le «bol», «vertluh", "jambe", etc., tandis que dans le code ne me permettait pas de dormir. Je ai donc trois membres et pertinente nom de congé de servo Coxa, fémur, tibia. Du prototype pieds au-dessus montre que je ne ai même pas à Coxa parties distinctes. Ce est juste deux servo collé des bandes élastiques. Fémur - mis en œuvre une bande de plastique, dont les deux côtés sont montés leviers serfs. Ainsi, la dernière servodvyzhok restant - le début du tibia, de prolonger à laquelle elle est vissée une pièce en matière plastique.
Etape 5
. Lancé l'éditeur, pas mudstvuya créé Leg.h fichier, et il classe Leg. Et un tas de Muti auxiliaire. Supposons qu'il y ait un point dans l'espace A (ax, ay, az), qui devrait atteindre. A la vue de dessus ressemble à ceci:
La figure I montre immédiatement un moyen de calcul du premier angle - l'angle de rotation du servomoteur, contrôler Coxa, qui fait tourner l'ensemble du membre dans un plan horizontal. Le schéma immédiatement marqué les variables rouges utilisés dans le code (pas tous). Pas très mathématiquement, mais confortable. Il est évident que nous sommes intéressés coin est élémentaire. Première primaryCoxaAngle - est juste l'angle (0; A) à l'axe X (équivalent à un point en coordonnées polaires de coin). Mais le schéma montre que tandis que la jambe elle-même - pas raspalozhena à ce point. La raison en est que l'axe de rotation des hanches ne est pas de "se aligner" - Je ne sais pas comment le dire correctement. Pas dans le plan dans lequel le joint tournant et l'autre est deux pieds pointe, ici. Cela peut facilement être compensée, considérant additionalCoxaAngle (car il considère - même arrêt utruzhdayus parce étaient encore à l'école, non?).
Ensemble, nous avons le premier morceau de code, cette méthode portée intérieur (Point & dest):
flotter hDist = sqrt (SQR (dest.x - _cStart.x) + SQR (dest.y - _cStart.y));
flotter additionalCoxaAngle = hDist == 0.0? DONT_MOVE
: Asin (_cFemurOffset / hDist);
flotter primaryCoxaAngle = polarAngle (dest.x - _cStart.x, dest.y - _cStart.y, _thirdQuarterFix);
flotter cAngle = hDist == 0.0? DONT_MOVE
: PrimaryCoxaAngle - additionalCoxaAngle - _cStartAngle;
Voici dest - ce est le point où nazho glisser, _cStart - les coordonnées du matériel (et le centre de rotation) coxa, dans hDist considérer la distance entre _cStart dest dans le plan horizontal. DONT_MOVE - ce est juste un drapeau, ce qui signifie que coxa pas besoin nulle part où aller et laisser la position actuelle (comme dest - quelque part à droite sur l'axe de rotation hanches - rarement, mais ça arrive). Voici cAngle - ce est un coin où vous voulez que le servo se écarter de son angle d'origine (qui est au milieu de sa plage de fonctionnement). On peut voir que comme yuzaetsya _cStartAngle - est l'angle dans l'espace, qui est renvoyé par la devoltu d'asservissement, lors de l'installation. À propos _thirdQuarterFix vous dire plus tard si vous ne oubliez pas.
Etape 6
. Puis les choses deviennent encore plus facile. Nous avons juste besoin de regarder le plan précité "aligner":
Ainsi, le problème soudain réduit à trouver le point d'intersection des deux cercles. One - au point où «croissance» de notre fémur, le second - le point où nous devons atteindre (coordonnées locales 2d). Les rayons des cercles - la longueur du fémur et du tibia, respectivement. Si les cercles se coupent dans l'un des 2 points peuvent être placés conjointe. Nous choisissons toujours le haut pour «genou» dans les monstres ont été déformée vers le haut, pas vers le bas. Si ne se chevauchent pas - il ne est pas dotyanemsya au point cible. Un peu de code, le commutateur au plan est tout simplement un couple de pièges est prise en compte et documentée dans les commentaires que je ne ai pas intrigué puis en examinant le code. Par souci de simplicité, dans ce repère local "plan jusqu'à« Je ai choisi le point d'origine où la croissance du fémur:
// Déplacement à Coxa-Fémur cible système de coordonnées local
// Notez le cas lorsque hDist
<= _cfemuroffset.="" this="" is="" for="" the="" blind="">=> // Nous pouvons ne jamais atteindre le point qui est plus proche de la _cStart puis
// Fémur décalage (_fStartFarOffset)
flotter localDestX = hDist sqr (_fLength + _tLenght))
{
log ("ne peut pas atteindre!");
return false;
}
Etape 7
. Maintenant localDestX et localDestY - les coordonnées du point cible. Tout ce qui reste - pour trouver les cercles d'intersection centrés à (00) et (localDestX, localDestY), et les rayons _fLength et _tLength (respectivement la longueur et la longueur du fémur tibia). Avec cet étudiant échoue également, mais je reconnais qu'il ya beaucoup d'erreurs pour vérifier par vous-même et tout le monde peut faire pour vérifier ce genre de formules muets, laissant une référence qui est clair ce problème razzhovana géométriques élémentaires:
// Trouve conjointe comme cercle croiser (équations de http://e-maxx.ru/algo/circles_intersection & http://e-maxx.ru/algo/circle_line_intersection)
flotteur A = -2 * localDestX;
flotter B = -2 * localDestY;
flotter C = SQR (localDestX) + SQR (localDestY) + SQR (_fLength) - sqr (_tLenght);
flotteur X0 = -A * C / (SQR (A) + SQR (B));
flotter Y0 = -B * C / (SQR (A) + SQR (B));
flotter D = sqrt (SQR (_fLength) - (SQR (C) / (SQR (A) + SQR (B))));
flotter mult = sqrt (SQR (D) / (SQR (A) + SQR (B)));
flotteur ax, ay, bx, par;
ax = X0 + B * Plus d'informations;
bx = X0 - B * Plus d'informations;
ay = Y0 - A * Plus d'informations;
par = Y0 + A * Plus d'informations;
// Sélection solution sur le dessus comme commune
flotter jointLocalX = (ax & gt; bx)? ax: bx;
flotter jointLocalY = (ax & gt; bx)? Ay: par;
Tout y est encore un peu des coordonnées reçues pour calculer les angles appropriés pour fémur et le tibia serfs:
Etape 8
. Эlementarschyna Again - angulaire coordonne tous. Je espère que l'appellation des variables devraient déjà être clair, par exemple, _fStartAngle - il fémur angle, l'angle sous lequel fémur est dirigée par défaut commencer. Et la méthode dernière ligne portée () (il a dit qu'il est allé et agita):
déplacer (cAngle, FANGLE, enchevêtrement);
Méthode mouvement est de taper directement servo. En fait, il avait même alors d'ajouter toutes sortes de choses pour la protection contre les mauvais angles (qui servo ne peut pas revenir, mais va essayer), ainsi que d'autres jambes qui sont zarkalno et / ou envoyé à l'autre partie. Mais aussi longtemps que nous travaillons uniquement avec une patte.
Étape 9
. Ces morceaux - ce est le code final, ce qui est loin d'être parfait, et il a certainement peuvent être considérablement améliorées. Mais cela fonctionne! Jamais allé pour les polnofunktsyonalnuyu cinématique ynversnuyu géométrie lycée, la trigonométrie, nous avons mis en place pour les pieds 3DOF! Oui, et nous obtenons la solution tout de suite, dans une itération. Pour faire fonctionner le tout, la jambe a dû être soigneusement mesuré et configurer les données de classe obtenus. y compris l'angle que le plus difficile à mesurer dans le produit fini. Peut-être que si un avtokad de projet et de faire quelques belles rend - il serait plus facile avec la mesure des angles, mais je ne ai pas eu le temps ou le désir de faire face à cette émotion.
Février ne fait que commencer, et vidéos pied a été déjà fait. Pour tester l'IC, je ai fait la jambe décrire toutes sortes de figures dans l'espace (vous devez déclencher systématiquement portée, en évitant le point sur le rectangle ou un cercle Code terne et ennuyeux, donc ne pas citer (et expériences finis afin de tracer primitives, je ai vypylyav général)):
Etape 10
. Puis il a fallu pour terminer le jeu avec ce produit sur une jambe ne est pas uprыhaesh (bien que ce robot serait vraiment intéressant). Mais je ai besoin heksapod. Je suis allé à la recherche des plus proches plexiglas du marché aux puces. Trouvé 2 pièces différentes - une épaisseur de 3 mm (seulement pour le corps, je ai pensé), un autre 2 mm et bleu (autres membres, pour correspondre à la servo). Dans quelques semaines, je ai taillé une nuit pour faire quelque chose avec elle. Il fait des croquis sur papier. essayé - comme si tout est OK, puis le cas pour une scie à métaux.
Etape 11
. Et ce est ici, à l'étranger monstre shestylapoe. Lorsque je teste une jambe, je ai eu cette chose en quelque sorte laissé questionnaires sur les vis extérieures. Assez. Mais nourrir six pieds de lui était trop effrayant. Donc, pendant un certain temps je ai raccroché ses mains, pensant que je dois obtenir un questionnaire plus approprié. Mais il se est avéré beaucoup plus facile, je l'ai mentionné ci-dessus - est venu de questionnaire Eee PC 901. Eh bien, très bien.
Etape 12
. Établir travail 6 pieds avéré plus difficile que d'écrire une moteur de pied. Demi-jambes étaient des images en miroir de l'autre. En plus de tout visant dans des directions différentes. Dans nalashtovuvav konfyhuryroval général et moi-même sommes très long, et ce ne était pas très inspirant, donc l'argent ne étais pas l'ajustement commode, maximum que je pouvais espérer - en conclusion EPS série. Et cela a fonctionné très bien avec fichier * .ino de base, le Leg.h connecté - ne ont pas vu l'objet. Béquilles cadencés pour EPS (facepalm). Finalement otrefaktoryu. Et ici, ce est un ressort est venu velosezon a été ouvert en pleine force, et je ai donné votre animal en cas shestylapoho. Ainsi se passa l'été et l'automne de la chaleur.
Etape 13
. Mais les pluies sont arrivées, ce était froid et heksapod a été extraite. Ses pieds ont été établis, y compris même a été introduit _thirdQuarterFix calcul de la fonction polarAngle. Le problème était que deux pieds (au milieu à gauche et à l'arrière gauche) déplacés de sorte que la plupart du temps étaient dans le quartier III:
Un polarAngle je étais naïve - il se est avéré coins de pi-pi à, l'axe X. Et si parfois l'un de ces deux pieds avaient pour revenir à la II-ème trimestre, la valeur polarAngle bondi de Pi à Pi qui a effectivement eu un impact négatif sur la poursuite de calcul. Pofyksyl béquille - pour ces deux pieds polarAngle considérée «différente». Honte, honte sur moi le code, mais l'ensemble du projet - une preuve de concept, le seul but de qui - pas seulement à comprendre, je peux recueillir heksapoda réaliste mobiles ou non. Par conséquent, le code devrait fonctionner, et en ce moment. Et puis refactoriser - pererefaktorynh.
Cope au 3ème trimestre, a commencé à pédaler motifs étape. Pour cette classe introduit au point Leg défaut, qui est, dans laquelle le pied est où le travail est silencieusement et en douceur. Ce point peut tyuninhuvaty, important pour tous les pieds étaient sur la même coordonnée z (avec jambes étaient en fait physiquement sur le même plan, la jambe est encore tuneRestAngles très faible niveau ()). Et dans le même coordonnée Z, ils peuvent se déplacer de façon arbitraire. Presque - parce que l'amplitude de mouvement ne est pas infinie, et qui à leur tour ne sera pas aller au-delà de cette dyapazoda - la position par défaut des pieds en essayant de placer quelque part près du milieu de cette fourchette.
Etape 14
. Le code ne est pas dans le texte de la citation, il est trop basique et je vais amener l'extrémité d'un lien vers la version complète de tous sortsa - en même temps apprendre à utiliser github.
Séquence choisi une simple étape - 3 pieds sur le terrain, 3 - dans l'air réarrangé. Ainsi, les coordonnées de pieds à leur position par défaut - peuvent être divisés en deux groupes. Pour ces deux groupes I et étape de provertav dans le cycle (voir fonction de marche () dans Buggy.ino). Et à la fin, chaque jambe a calculé une coordonner leur personne, en fonction de son emplacement par défaut.
Et il est allé! Mais si loin en avant. Sur ses pieds, il portait des bandes de caoutchouc à la mauvaise glissé sur le linoléum. Je me suis précipité à tirer sur la vidéo pour montrer à vos amis.