描述 允许使用者指定曲线规划作为伺服机运动轨迹的插补方法,开启曲线插补功能后,可适度抑制机器人运动过程产生的震动,让机器人动作更稳定。 86Duino IDE 从 Coding 300 开始支援此函式。 语法 servoBeginSplineMotion(mode, frames, frameTime, numFrames) 参数 mode:有 3 种模式可选择。 NATURAL_CUBIC:可适度降低机器人运动中的震动,平滑化机器人动作,需要注意的是,为了符合 NATURAL CUBIC SPLINE 公式定义,机器人的 Frame 编排在某些方式下,插补出来的轨迹可能会超出预期动作,如果不希望此状况发生,可使用 CONSTRAINED_CUBIC 模式。 CONSTRAINED_CUBIC:依据 CONSTRAINED CUBIC SPLINE 公式定义,可保证不会有上述 NATURAL_CUBIC 的缺点,但会降低平滑化的效果。 CATMULL_ROM:依据 CATMULL-ROM SPLINE 公式定义,能有效抑制 NATURAL_CUBIC 所产生的 overshooting,且平滑化的效果优于 CONSTRAINED_CUBIC。 (从 Coding 315 开始支援此设定) frames:要进行曲线规划的 frame 阵列。 frameTime:每个 frame 播放的间隔时间阵列(时间单位为 ms)。 numFrames:要进行曲线规划的 frames 数量(即 […]
86Duino Motion Editor (86ME) 支援 86Duino 开发板来编辑机器人动作,让编辑机器人动作的流程更加快速,并且能够自动产生 86Duino 程式让机器人操作编辑好动作。 86ME 概念影片: 安装教学 目前 86ME 支援 Windows XP/Vista/7/8/10,环境内必须安装 MicroSoft .NET framework 4.0。 下载86ME并解压缩后会得到资料夹 86ME ,里头的档案如下图所示,包含 86ME 执行档与所需的函式库和相关说明,在支援的环境下直接执行 86ME.exe 即可开始操作 86ME 。 事前准备 建立 86Duino 与 86ME 的桥梁:86ME 会透过 Firmata 函式库与 86Duino 做指令的传输,因此在使用 86ME 之前要将 86Duino Coding 210 的范例草稿(档案->范例->Servo86->MotionEditor)烧录到 86Duino 中,建立好双方沟通的桥梁之后便可以正式开始操作 86ME。 连线方式与说明:目前 86ME 支援电脑以 COM […]
专案起源 功能说明 准备材料 硬体架设 步态解说 动作编辑 成果展示 相关连结 专案起源 此专案源起自废材小六足专案的衍伸, 「竟然有个 PrintBot Crab 专案和废材小六足那麽类似?」老大说道。 「恩卓博士的士兵C,这个 PrintBot Crab 专案就交给你啦!」 随后士兵C就被指派为此专案的负责人。 功能说明 在 Thingiverse 上有一个有趣的专案叫做 PrintBot Crab,它包含了 GUIA_Printbot_Cangrejo 的组装文件。 我们可以使用 86Duino Enjoy 和 86Duino Zero 实作,并搭配 86ME 使用,就能要让 PrintBot Crab 动起来,连一行程式都不用写呢! 准备材料 把零件用 86Duino Enjoy 印出 首先把 PrintBot Crab 所有的零件用 86Duino Enjoy 印出来(如果在使用 86Duino Enjoy 时有问题可以参考这份教学文件),在用切片软体製作 g-code […]
描述 储存目前的 Frame 至指定档案。 语法 aiservoframerobotis.save(filename) 参数 aiservoframerobotis:AIServoFrameRobotis 型别的变数。 filename:86Duino Frame 档案名称。请注意,档案目前只支援储存至 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; // 设定 Frame 内容 myframe.positions[1] = 130; myframe.positions[2] […]
描述 将代表 Frame 的目标位置列表指定给各伺服机并立即控制伺服机移动到 Frame 指定的角度。 语法 aiservoframerobotis.playPositions() aiservoframerobotis.playPositions(servo1) aiservoframerobotis.playPositions(servo1, servo2) aiservoframerobotis.playPositions(servo1, servo2, … , servo64) aiservoframerobotis.playPositions(time) 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 <AIServo86.h> […]
描述 将代表 Frame 的目标位置列表分别指定给各伺服机。 语法 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 16 17 18 19 […]
描述 储存所有伺服机位置的列表。 此列表中存放所有 channel 的 AIServo 位置,其值可由使用者自行指定。 position[] 中第一个元素值,代表第一 channel 的 AIServo 位置,第二个元素值代表第二 channel 的 AIServo 位置,依此类推。 您可以呼叫 attach() 来指定 positions[] 对应到的 AIServo ID。 语法 aiservoframerobotis.positions[channel] 参数 aiservoframerobotis:AIServoFrameRobotis 型别的变数。 channel:范围:0 ~ 63,其值代表第 n channel 的 Servo。 假如您是使用 load() 读取 RoboPlus Motion 帧档案,那么 channel 数将会固定是 26 组,第 0 至第 25 组 channel 的 Servo 角度分别存放在 positions[0]、positions[1] […]
描述 载入 RoboPlus Motion 编辑器产生的 .mtn Frame 档案。 语法 aiservoframerobotis.load(filename, motionname, step) 参数 aiservoframerobotis:AIServoFrameRobotis 型别的变数。 filename:RoboPlus Motion 编辑器产生的 .mtn 档案名称。请注意,目前只支援从 SD 卡根目录下载入档案,假如您的 86Duino 上面没有置入 SD 卡,或者 SD 卡中没有指定的档案,载入则会失败。 motionname:欲载入 .mtn 档案中的 Motion 名称。 framename:欲读取的 Motion 之 Step 数目。 回传 true:档案载入成功。 false:档案载入失败。 范例 1 2 3 4 5 6 7 8 9 10 11 12 13 […]
描述 初始化 AIServoFrameRobotis 类别。 AIServoFrameRobotis 是继承于 AIServoFrame 类别,您可以直接呼叫 AIServoFrame 类别里面的函式成员,如 positions[]、setPositions()、playPositions()、save() 来设定、储存或播放 Frame。 语法 AIServoFrameRobotis myframe AIServoFrameRobotis myframe(filename, motionname, step) 参数 filename:RoboPlus Motion 编辑器产生的 .mtn 档案名称。当有指定档案名称时,初始化 AIServoFrameRobotis 类别的过程中,会载入指定的档案。请注意,目前只支援从 SD 卡根目录下载入档案,假如您的 86Duino 上面没有置入 SD 卡,或者 SD 卡中没有指定的档案,载入则会失败。 motionname:欲载入 .mtn 档案中的 Motion 名称。 step:欲读取的 Motion 之 Step 数目。 范例 1 2 3 4 5 6 7 8 […]
描述 储存机器人身上所有 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; […]