Petoi Doc Center
🇨🇳中文版
🇨🇳中文版
  • 欢迎查阅派拓艺文档中心
  • 快速上手指南
  • Petoi 机器人关节序号
  • 蓝牙连接
  • 上传固件
  • 关节校准
  • 红外遥控
    • 遥控器
  • 手机应用
    • 总览
    • 关节校准
    • 控制面板
  • 桌面应用
    • 总览
    • 固件上载
    • 关节校准
    • 技能创作坊
    • 调试器
  • 图形化编程
    • Petoi 编程积木
    • Mind+中的Python代码模式
    • Arduino UNO 编程积木
  • Arduino IDE
    • 为NyBoard上传程序
    • 为BiBoard上传程序
    • 使用Arduino IDE校准舵机
    • 串口监视器
  • API
    • 🖇️串口协议
      • 反馈舵机
      • 嵌套任务队列和信号发生器
    • 🐍Python serialMaster使用指南
    • 🐛MicroPython控制器
      • MicroPython上手玩
      • 配置WebREPL
      • 使用ESP-NOW协议
    • 🍓通过树莓派控制机器人
    • 🤖ROS
  • NYBOARD
    • 总述
    • NyBoard V1_0
    • NyBoard V1_1 & NyBoard V1_2
  • BiBoard
    • BiBoard V0 快速上手指南
    • 例程介绍
      • 1. GPIO例程
      • 2. 串口
      • 3. 模拟-数字转换器
      • 4. 数字-模拟转换器
      • 5. EEPROM(电擦除存储器)
      • 6. 陀螺仪IMU(MPU6050)
      • 7. 红外遥控
      • 8. PWM
      • 9. 舵机(施工)
      • 10. 经典蓝牙串口SPP
      • 11. 蓝牙低功耗(BLE)串口透传
      • 12. 文件系统SPIFFS
      • 13. Arduino IDE增加硬件分区配置选项
      • 14. 播放MP3
      • 15. WiFi和OTA的使用
    • BiBoard V1 用户指南
  • 通信模块
    • 通信模块概要说明
    • USB上载模块(CH340C)
    • 双模蓝牙模块
    • WiFi模块(ESP8266)
      • 使用ESP8266 + Python 脚本实现无线群控
  • 扩展模块
    • 扩展模块概要说明
    • MU摄像头模块
    • 超声波传感器
    • 光强传感器
    • 触摸传感器
    • 手势传感器
    • 人体移动探测器
    • 语音指令模块
    • Petoi AI Vision摄像头模块
    • 深度开发应用AI视觉模块
      • 🏋️模型训练
      • ⚖️模型量化
      • 🏌️模型部署
      • COCO数据集DIY训练
    • 机械臂
      • 升级旧款 Bittle/Bittle X
    • Micro:bit 游戏手柄
  • 应用实例
    • 技能创作
    • 姿势模仿教程
    • 可编程木偶角色
  • 历史文档
    • 为NyBoard上传1.0版本程序
  • 技术支持
    • 🛠️配套应用软件
    • 🙋‍♂️常见问题 (FAQ)
    • 烧录Bootloader
  • 资源链接 🕸
    • 🔭Official Site of Petoi
    • 💿GitHub of OpenCat
    • 📀GitHub of OpenCatEsp32
    • 🎪PetoiCamp (Forum)
Powered by GitBook
On this page
  • 嵌套任务队列
  • 对每个关节使用三角函数生成角度值,以组成平滑且周期性的运动
  • 关节舵机旋转角度计算函数
  • 代码实现计算公式

Was this helpful?

Export as PDF
  1. API
  2. 串口协议

嵌套任务队列和信号发生器

Previous反馈舵机NextPython serialMaster使用指南

Last updated 24 days ago

Was this helpful?

嵌套任务队列

您可以合并多个串口命令作为一个任务队列:

  • 令牌是T_TASK_QUEUE('q')

  • 使用'q'来开始任务队列

  • 添加串口指令做为子命令

  • 使用':'来添加延迟时间(必须)

  • 添加 '>' 来结束子命令

例如:qksit:1000>m 8 0 8 -30 8 0:500> 将使机器人坐下然后移动肩关节。

对每个关节使用三角函数生成角度值,以组成平滑且周期性的运动

关节舵机旋转角度计算函数

JointAngle[index]= signalGenerator(amplitude, midpoint, freq, phase, resolution, frame)
  • 令牌是T_SIGNAL_GEN('o')

  • 命令格式是:o 分辨率, 速度,关节序号1, 中位角度值,幅度, 频率,相位,关节序号2, 中位角度值, 幅度, 频率,相位,...... 例如:o 1 0, 0 40 -20 4 0, 1 -30 20 4 30, 8 -70 10 4 60, 12 -10 10 4 0, 15 10 0 4 0

  • 分辨率决定了它是如何增加到 360 :t += 分辨率

  • 速度定义了过渡速度。它将朝着目标角度移动[1~125]度。0 表示最大速度

  • 频率定义了关节在一个循环中可以振荡的周期数。

  • 相位取值范围是-120 到 120。比如相位=30 表示平移 Pi/2。因为120 是一个完整周期(2Pi)。

  • 使用逗号或空格来分隔数字,使用逗号分组可以更清晰地表示一个关节的参数(frame)

代码实现计算公式

for (int t = 0; t < 360; t += resolution)  
  angle = midpoint + 
         round(amp * sin(2.0 * M_PI * ((t + phase * 3 / freq) / (360.0 / freq))));
  • 运动的迭代器从 0 循环到 360

  • 例如,头的俯仰(对应关节序号1)/偏航角(对应关节序号0)可以绑定形成利萨如图形 qksit:100>o 1 8, 0 0 30 4 0, 1 -30 30 4 30:100>o 1 0, 0 0 30 4 0, 1 -30 30 4 15:100>o 1 0, 0 0 30 4 0, 1 -30 30 8 30:100>o 1 8, 0 0 30 8 0, 1 -30 30 4 30:100>o 1 8, 0 0 30 4 0, 1 -30 30 16 30:100>o 1 0, 0 0 30 32 0, 1 -30 30 8 0:100>Wash face:qksit:100>i0 20 1 0 8 -70 12 0 15 10:0>o1 0, 0 40 -20 4 0, 1 -30 20 4 30, 8 -70 10 4 60, 12 -10 10 4 0, 15 10 0 4 0:100>m0 0 1 -20 2 0:0>ksit:0

详细实现,请参考 OpenCatEsp32/src/OpenCat.h 和 reaction.h 中的源代码。

🖇️