servoBeginSplineMotion()

説明

サーボ動作の軌道補間方法として、曲線計画を指定できます。曲線補間を有効にすると、ロボット動作中の振動を適切に抑制し、ロボットの動作をより安定させることができます。この機能は、Coding 300 以降の 86Duino IDE でサポートされています。

構文

servoBeginSplineMotion(mode, frames, frameTime, numFrames)

パラメータ

mode: 3つのモードから選択できます。

  1. NATURAL_CUBIC:このモードは振動を適度に低減し、ロボットの動きを滑らかにします。ただし、NATURAL CUBIC SPLINE 式に準拠するため、ロボットフレームの配置によっては、補間された軌道が意図した動きから逸脱する可能性があることに注意してください。これを回避するには、CONSTRAINED_CUBIC モードを使用してください。
  2. CONSTRAINED_CUBIC:このモードはCONSTRAINED CUBIC SPLINE 式に準拠し、前述の NATURAL_CUBIC の欠点を解消します。ただし、これにより滑らかさの効果は低下します。
  3. 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

12

13

14

15

16

17

18

19

20

21

22

23

24

25

#include "Servo86.h"

Servo Servo1;

Servo Servo2;

Servo Servo3;

 

ServoFrame Frames[3];

unsigned long playtime[3] = {200, 500, 100};

void setup() {

  Servo1.attach(21); Servo2.attach(22); Servo3.attach(23);

  Frames[0].positions[0] = 1500; Frames[0].positions[1] = 1500; Frames[0].positions[2] = 1310;

  Frames[1].positions[0] = 2040; Frames[1].positions[1] = 1450; Frames[1].positions[2] = 1840;

  Frames[2].positions[0] = 2040; Frames[2].positions[1] = 1060; Frames[2].positions[2] = 1840;

  Frames[0].playPositions(playtime[0]);

  Serial.println("Natural CUBIC");

 

 

void loop() {

  servoBeginSplineMotion(NATURAL_CUBIC, Frames, playtime, 3);

  // 次の再生モーションは、カーブ補間を使用したスムージング効果を持ちます

  for (int i=0; i<3; i++) {

    Frames[i].playPositions(playtime[i]);

    while(isServoMultiMoving() == true);

  >

  servoEndSplineMotion();  // 曲線補間関数をオフにします

>

参照

- attach()
- ServoFrame
- positions[]
- playPositions()
- isServoMultiMoving()
- servoEndSplineMotion()


 

ライブラリリファレンスページ

86Duinoリファレンス資料のテキストは、クリエイティブ・コモンズ 表示-継承 3.0 ライセンス。参考資料に含まれるコード例はパブリックドメインとして公開されています。