説明 サーボ動作の軌道補間方法として、曲線計画を指定できます。曲線補間を有効にすると、ロボット動作中の振動を適切に抑制し、ロボットの動作をより安定させることができます。この機能は、Coding 300 以降の 86Duino IDE でサポートされています。 構文 servoBeginSplineMotion(mode, frames, frameTime, numFrames) パラメータ mode: 3つのモードから選択できます。 NATURAL_CUBIC:このモードは振動を適度に低減し、ロボットの動きを滑らかにします。ただし、NATURAL CUBIC SPLINE 式に準拠するため、ロボットフレームの配置によっては、補間された軌道が意図した動きから逸脱する可能性があることに注意してください。これを回避するには、CONSTRAINED_CUBIC モードを使用してください。 CONSTRAINED_CUBIC:このモードはCONSTRAINED CUBIC SPLINE 式に準拠し、前述の NATURAL_CUBIC の欠点を解消します。ただし、これにより滑らかさの効果は低下します。 CATMULL_ROM: CATMULL-ROM SPLINE 式に基づいており、NATURAL_CUBIC によるオーバーシュートを効果的に抑制し、CONSTRAINED_CUBIC よりも優れた平滑化を実現します。(この設定は Coding 315 以降でサポートされています。) frames: カーブプランニングのためのフレームの配列。 frameTime: 各フレーム間の時間間隔の配列(ミリ秒単位)。 numFrames: カーブプランニングのためのフレーム数(つまり、フレーム配列のサイズ)。 ポストバック なし 例 1 2 3 4 5 6 7 8 9 10 11 […]
86Duinoモーションエディタ(86ME)は、86Duino開発ボードをサポートし、ロボットモーションの編集を大幅に高速化します。また、ロボットの操作と編集に必要な86Duinoプログラムを自動生成します。86MEコンセプトビデオ: インストール手順 現在、86MEはWindows XP/Vista/7/8/10をサポートしています。Microsoft .NET Framework 4.0がインストールされている必要があります。86MEをダウンロードして解凍すると、「86ME」フォルダが作成されます。フォルダ内のファイルには、以下に示すように、86ME実行ファイル、必要なライブラリ、および説明書が含まれています。86MEを使用するには、サポートされている環境で86ME.exeを実行するだけです。 準備 したがって、オフラインモードではファイル編集と 86Duino プログラム生成のみがサポートされ、リアルタイムモーター制御はサポートされません。モーターの動作を直接制御するには、86DuinoのUSBデバイスをコンピュータのUSBポートに接続し、86Duinoが接続されているCOMポートを選択します(自動または既知のCOMポートを選択)。86Duinoが接続されているポートを確認するには、デバイスマネージャーで86Duinoと接続されているCOMポートを確認してください。以下の例では、86DuinoはコンピュータのCOM4に接続されています。86Duinoが接続されていない状態で自動モードを選択した場合、プログラムは実行中にオフラインモードに戻ります。 一般的に、オフラインモードは、ロボットの動作に既に慣れているユーザーに適しており、既存のファイルを簡単に編集して調整できます。自動モードでは、ユーザーは86MEを簡単に使い始めることができます。ただし、コンピュータに複数の86Duinoまたは複数の異なるCOMポートが接続されている場合は、混乱を避けるため、選択モードを使用することをお勧めします。COMポートの設定が完了したら、「スタート」ボタンを押して86MEのメインウィンドウを開くか、「終了」ボタンを押して終了してください。 機能説明 ここではまず、プログラミングインターフェースをいくつかのセクションに分けて説明します。 (1) 同期機能では、現在選択されているフレームをロボットに即座に同期させるかどうかを選択できます。 (2) スロットマシンでは、同期中のモーターの速度を設定できます。速度は5段階あり、右側が最も速く、左側が最も遅くなります。 (3) モーターを解放します。これにより、モーターは電力を出力しなくなります。 (4) キャプチャー。現在のモーター角度を読み取るために使用されます。現在サポートされているモーターは、Kondo、Hitec、およびFutabaシリーズのモーターです。キャプチャー機能は最初にすべてのモーターを解放するため、使用時にはご注意ください。ロボットが適切に支えられていない場合、落下する可能性があります。 (1) このアクションへの移動時間をミリ秒単位で設定します。 (2) 選択されたアクションがフレームの場合、アクションエリアに86Duinoフレームファイルの保存/読み込みボタンが2つ表示されます。「保存」ボタンは、現在選択されているフレームを現在のフレームに保存します。サーボの角度はテキストファイルに保存され、「読み込み」ボタンは、保存されたフレームファイルの値を現在のフレームに読み込みます。 86Duinoと86ME間のブリッジの確立: 86MEはFirmataライブラリを介して86Duinoにコマンドを送信します。そのため、86MEを使用する前に、86Duino Coding 210のサンプルプログラム([ファイル] -> [例] -> [Servo86] -> [MotionEditor])を86Duinoにダウンロードする必要があります。通信ブリッジが確立されると、86MEの操作を正式に開始できます。 接続方法と手順: 現在、86MEはコンピュータのCOMポートを介して86Duinoに接続し、モーション信号を送信することができます。86MEは最初に、86Duinoとコンピュータ間のインターフェースを選択するようにユーザーに求めます。接続の初期化には、自動、オフライン、および選択の3つのモードがあります。86ME.exeを実行する前に、これらのモードを理解しておく必要があります。図の–auto–オプションは、最後に追加されたCOMポートを開きます。COM4は、86MEがコンピュータの現在のCOMポートを検出したことを示します。 –offline– オプションはオフラインモードを示し、86Duino との通信をブロックします。 このセクションには、「ファイル」、「オプション」、「ヘルプ」 の 3 つのドロップダウンメニューがあります。拡張オプションは以下のとおりです。 (1) ファイルメニューの機能には、新規プロジェクトの追加、プロジェクトの読み込み、プロジェクトの保存、プログラムの終了などがあります。鋭い目を持つ読者の方は、多くのボタンが最初はグレー表示でクリックできないことにお気づきかもしれません。アクションを編集またはテストするには、まず「ファイル」->「新規プロジェクト」でプロジェクトを作成するか、「ファイル」->「プロジェクトを開く」で以前に保存したプロジェクトを読み込む必要があります。ファイル->プロジェクトを保存で現在編集中のプロジェクトを保存でき、ファイル->終了でプログラムを終了できます。では、新しいプロジェクトを追加するにはどうすればよいでしょうか。ファイル->新しいプロジェクトをクリックすると、ロボット設定ウィンドウが開き、ロボットに関する4つの設定を行うことができます。 (1) 86Duinoボード:ロボットが使用する86Duinoモデルを選択します。現在、ユーザーは86Duino One/Zero/EduCakeから選択できます。異なる86Duinoモデルを選択すると、ユーザーが設定できるSetServoピンの数が異なります。たとえば、86Duino Oneにはモーターを制御できるピンが45本あるため、SetServo 0-44が表示されますが、86Duino ZeroにはSetServo 0-13と42-44のみがあります。 […]
プロジェクトの起源 機能の説明 資料の準備 ハードウェアのセットアップ 歩行の説明 モーション編集 結果のプレゼンテーション 関連リンク プロジェクトの起源 このプロジェクトは、Scrap Six Legsプロジェクトから派生しました。「Scrap Six Legsによく似たPrintBot Crabプロジェクトがあるんですよ?」と上司は言いました。 「エンドロ博士のソルジャーC、このプリントボット・クラブ・プロジェクトは君のものだ!」そして、ソルジャーCがプロジェクトリーダーに任命されました。 機能説明 Thingiverseには、プリントボット・クラブという興味深いプロジェクトがあります。このプロジェクトには、GUIA_Printbot_Cangrejoのアセンブリファイルが含まれています。 これを実装するには、86Duino Enjoy と 86Duino Zero を使用します。さらに 86ME と組み合わせれば、コードを1行も書かずに PrintBot Crab をアニメーション化できます! マテリアルの準備 — 3Dプリントパーツ — 86Duinoを使って部品を印刷する まず、86Duino Enjoyを使ってPrintBot Crabの全パーツを印刷します。(86Duino Enjoyの使用中に問題が発生した場合は、こちらのチュートリアルを参照してください。)スライスソフトウェアを使用してGコードを作成する際、PrintBot Crabの2つのパーツが86Duino Enjoyの印刷範囲を超えていることに気付きました。その2つのパーツとは、以下の2つです。 STLファイル編集ソフトを使って、印刷可能領域からはみ出した2つのパーツを2つに分割します。こうすることで、86Duino Enjoyの印刷可能領域内に収まります。必要な場合は、こちらからソフトウェアをダウンロードできます。 下の画像は、印刷したすべてのパーツです。印刷用に分割したパーツは、瞬間接着剤で接着されています: プリントしたパーツに加えて、プリントボットクラブを組み立てるには他のパーツも用意する必要があります。ここで使用するパーツは、プリントボットクラブプロジェクトで使用したパーツと全く同じではありません。 — ネジ — ここでは既存のネジとナットを使用しているため、仕様は原作者のものと異なります。原作者のネジの仕様は、GUIA_Printbot_Cangrejo のアセンブリファイルに記載されています。 —Servo— サーボにはEMAX ES08MAIIが使用されており、4.8V~6Vの電圧で動作します。 […]
説明 現在のフレームを指定されたファイルに保存します。 構文 aiservoframerobotis.save(filename) パラメータ aiservoframerobotis: AIServoFrameRobotis 型の変数。 filename: 86Duino フレームファイル名。ファイルは SD カードのルートディレクトリにのみ保存できます。86Duino に SD カードが挿入されていない場合は、保存に失敗します。 戻る true: ファイルは正常に保存されました。 false: ファイルは保存されませんでした。 例 1 2 3 4 5 6 7 8 9 10 11 12 13 #include <AIServo86.h> AIServoFrameRobotis myframe; void setup() { myframe.positions[0] = 180; //フレームの内容をセット myframe.positions[1] = 130; myframe.positions[2] = 200; myframe.save("frm0.txt"); […]
説明 フレームを表す目標位置のリストを各サーボに割り当て、フレームで指定された角度までサーボを即座に制御します。 構文 aiservoframerobotis.playPositions() aiservoframerobotis.playPositions(servo1) aiservoframerobotis.playPositions(servo1,servo2) aiservoframerobotis.playPositions(servo1,servo2,… 、サーボ64) aiservoframerobotis.playPositions(時間) aiservoframerobotis.playPositions(time,servo1) aiservoframerobotis.playPositions(time, servo1, servo2) aiservoframerobotis.playPositions(time, servo1, servo2, … , servo64) <スパンパラメーター aiservoframerobotis: AIServoFrameRobotis 型の変数。 servo1 -servo64: AIServo 型の変数。 time (オプション): サーボが目標位置に到達するまでの時間。値が入力されていないか、値が 0 の場合、サーボは最高速度で回転します。 ポストバック なし 例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 #include […]
説明 各サーボに、フレームを表すターゲット位置のリストを割り当てます。 文法 asiervoframerobotis.setPositions() asiervoframerobotis.setPositions(servo1) asiervoframerobotis.setPositions(servo1, servo2) asiervoframerobotis.setPositions(servo1, servo2, ... , servo64) asiervoframerobotis.setPositions(time) asiervoframerobotis.setPositions(time, servo1) asiervoframerobotis.setPositions(time, servo1, servo2) asiervoframerobotis.setPositions(time, servo1, servo2, ... , servo64) パラメーター asiervoframerobotis: AIServoFrameRobotis 型の変数。 servo1 ~servo64: AIServo 型の変数。 time (オプション): サーボが目標位置に到達するまでの時間。値が設定されていないか、値が 0 の場合、サーボは全速力で回転します。 ポストバック なし 例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 […]
説明 すべてのサーボ位置のリストが格納されます。このリストにはすべてのチャンネルのAIServo位置が含まれており、その値はユーザー定義です。position[]の最初の要素は最初のチャンネルのAIServo位置を表し、2番目の要素は2番目のチャンネルのAIServo位置を表します。以降も同様です。positions[]に対応するAIServo IDを指定するには、attach()を呼び出します。 構文 aiservoframerobotis.positions[channel] パラメータ aiservoframerobotis: AIServoFrameRobotis 型の変数。 channel: 範囲: 0~63。この値はチャンネル n のサーボを表します。 load()を使用してRoboPlus Motionフレームファイルを読み取る場合、チャネル数は26に固定されます。0番目から25番目のチャネルグループのサーボ角度は、それぞれpositions[0]、positions[1] … positions[25]に保存されます。 26番目のグループ以降のpositions[]の内容はすべて0です。 ポストバック なし 例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include <AIServo86.h> AIServoPort(ROBOTIS, AX12) バス; AIServo myservo0; AIServo […]
説明 RoboPlus Motion Editor によって生成された .mtn フレームファイルをロードします。 構文 aiservoframerobotis.load(filename, motionname, step) パラメータ aiservoframerobotis: AIServoFrameRobotis 型の変数。 filename: RoboPlus Motion Editor によって生成された .mtn ファイルの名前。現在、SD カードのルートディレクトリにあるファイルのみダウンロードできます。 86DuinoにSDカードが挿入されていない場合、または指定されたファイルがSDカード上に存在しない場合、ダウンロードは失敗します。 motionname: .mtnファイルから読み込むモーションの名前。 framename: 読み込むモーションのステップ数。 戻り値 true: ファイルの読み込みに成功しました。False: ファイルの読み込みに失敗しました。 例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include <AIServo86.h> […]
説明 AIServoFrameRobot クラスを初期化します。AIServoFrameRobot は AIServoFrame クラスを継承します。AIServoFrame クラス内の positions[]、setPositions()、playPositions()、save() などのメンバー関数を直接呼び出すことで、フレームを設定、保存、再生できます。 構文 AIServoFrameRobotis myframe AIServoFrameRobotis myframe(filename, motionname, step) パラメータ filename: RoboPlus Motion Editor によって生成される .mtn ファイルの名前。ファイル名を指定すると、AIServoFrameRobotis クラスの初期化時に指定されたファイルが読み込まれます。現在、SD カードのルートディレクトリからのファイルのダウンロードのみをサポートしています。86Duino に SD カードが挿入されていない場合、または指定されたファイルが SD カード上に存在しない場合、読み込みは失敗します。 motionname: 読み込む .mtn ファイル内のモーションの名前。 step: 読み込むモーションのステップ数。 例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 […]
説明 ロボット上のすべてのAIServoのオフセット(つまり、offsets[]配列)を指定されたファイルに保存します。 構文 servooffset.save(filename) パラメータ servooffset: AIServoOffset型の変数。 filename: ファイル名。現在、ファイルの保存先はSDカードのルートディレクトリのみとなっていますのでご注意ください。86DuinoにSDカードが接続されていない場合は、保存に失敗します。 戻る true: ファイルの保存に成功しました。 false: ファイルの保存に失敗しました。 例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #include <AIServo86.h> AIServoPort(ROBOTIS, AX12) bus; AIServo myservo0; AIServo myservo1; AIServo myservo2; AIServoOffset myoffset; void setup() { bus.begin(Serial1, […]