# 反馈舵机

我们为2024年3月之后生产的舵机引入了位置反馈功能。该功能利用相同的PWM信号线返回舵机的实际位置，为机器人开辟了新的控制接口。

该功能从2024年5月在所有带有标签或激光标记的舵机上实现。如果标签缺失，它们可能仍然具备该功能。然而，该功能仅适用于基于ESP32主控芯片的BiBoard主板（不包括NyBoard主板）。

如果您想检查是否具备此功能，需要先升级机器人的固件。然后在Arduino的[串口监视器](https://docs.petoi.com/chinese/arduino-ide/chuan-kou-jian-shi-qi#da-kai-chuan-kou-jian-shi-qi)或移动应用的[创建自定义命令](https://docs.petoi.com/chinese/shou-ji-ying-yong/kong-zhi-mian-ban#zi-ding-yi-ming-ling-dong-zuo)中发送串口命令“**f**”。如果在您转动动舵机时，串口监视器界面中持续打印变化的数值，那么它们是位置反馈。数值表的列数对应于具有反馈的舵机的数量。

为了执行以下功能，所有舵机必须全部是反馈舵电机：

### 自动校准关节舵机

* 串口监视器\
  在串口监视器中[发送串口指令](https://docs.petoi.com/chinese/arduino-ide/chuan-kou-jian-shi-qi#da-kai-chuan-kou-jian-shi-qi)“**c16**”。机器人将进入休息姿态。将机器人身体在桌面上按压平整，将头转向正前方，并在串口监视器中发送任意英文字符。机器人将自动设置所有关节的校准值。
* 手机app\
  [创建](https://docs.petoi.com/chinese/shou-ji-ying-yong/kong-zhi-mian-ban#chuang-jian-dan-ge-ming-ling)一个名为“**自动校准**”（可自定义）的命令按钮，并使用代码：“`c16`”。点击此按钮，机器人将进入其休息姿势。将机器人到桌子上按压平整，并将其头部转正前方。创建一个名为“**退出**”（可自定义）的命令按钮，并使用代码：“`d`”。点击此按钮，机器人将自动设置其所有关节的校准值。

{% embed url="<https://www.bilibili.com/video/BV1zW7JzJEdW/>" %}

自动校准后，部分关节的角度与标准位置可能仍然存在一些偏差，需要进一步精细校准，但这样已节省了大量时间。

### 运动跟随

* 串口监视器\
  在串口监视器中[发送串口指令](https://docs.petoi.com/chinese/arduino-ide/chuan-kou-jian-shi-qi#da-kai-chuan-kou-jian-shi-qi)“fF”，然后慢慢拖动其中一条腿。其他腿会跟随其运动。
* 手机app\
  [创建](https://docs.petoi.com/chinese/shou-ji-ying-yong/kong-zhi-mian-ban#chuang-jian-dan-ge-ming-ling)一个名为“**跟随**”（可自定义）的命令按钮，并使用代码：“`fF`”。点击此按钮后，慢慢拖动其中一条腿。其他腿会跟随其运动。\
  创建一个名为“**退出**”（可自定义）的移动应用程序命令，并使用代码：“`d`”。点击此按钮，可以退出此模式。

{% embed url="<https://www.bilibili.com/video/BV1Cn7HzFELb/>" %}

### 通过直接扭转关节学习新技能

* 串口监视器\
  在串口监视器中[发送串口指令](https://docs.petoi.com/chinese/arduino-ide/chuan-kou-jian-shi-qi#da-kai-chuan-kou-jian-shi-qi)“**`fl`**”，表示学习新动作。先将腿部移动到起始位置，保持机器人稳定大约2秒钟。机器人将倒计时，听到蜂鸣器发出轻微地哔哔声表示开始录制。然后你可以旋转各关节舵机，它不会记录微小动作，您可以在过程中间稍做暂停。录制124帧后，如果您在串口监视器中输入任意英文字符或停止移动超过2秒钟，它将停止录制。发送串口指令“`fr`”，表示回放所教动作。\
  \&#xNAN;**{反馈舵机学习技能动作演示视频}**
* 手机app\
  [创建](https://docs.petoi.com/chinese/shou-ji-ying-yong/kong-zhi-mian-ban#chuang-jian-dan-ge-ming-ling)一个名为“**开始学习**”（可自定义）的命令按钮，并使用代码：“`fl`”，点击此按钮后，机器人会倒计时，然后发出轻微的哔哔声，表示机器人开始学习新的动作。将机器人的关节（比如：腿）移动到您想要的起始位置，然后保持机器人稳定大约2秒钟，它不会记录小的动作，所以你可以在中间暂停。124帧后，如果您在串行监视器中输入任何字符或停止移动它超过2秒，它将停止录制。创建一个名为“**执行**”（可自定义）的命令按钮，并使用代码：“`fr`” ，点击此按钮后，机器人会执行所教的动作。
* 该技能也将打印在[串口监视器](https://docs.petoi.com/chinese/arduino-ide/chuan-kou-jian-shi-qi#da-kai-chuan-kou-jian-shi-qi)中（如下图所示），并且您可以将其导入到[技能创作坊](https://docs.petoi.com/chinese/zhuo-mian-ying-yong/ji-neng-chuang-zuo-fang#dao-ru-dong-zuo)和[手机应用](https://docs.petoi.com/chinese/shou-ji-ying-yong/kong-zhi-mian-ban#dao-ru-ben-di-chuang-zuo-de-ji-neng-ji-neng-chuang-zuo-fang)中。

<figure><img src="https://docs.petoi.com/~gitbook/image?url=https%3A%2F%2F1565080149-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-MQ6a951Q6Jn1Zzt5Ajr-887967055%252Fuploads%252FhJLDjV69fPNOjQ3qhh3S%252Fimage.png%3Falt%3Dmedia%26token%3D3a70f065-5739-474d-a1fe-943bf450460d&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=7ed88513&#x26;sv=2" alt=""><figcaption></figcaption></figure>

{% embed url="<https://www.bilibili.com/video/BV1RR7EzuEAD/>" %}

如果您想基于反馈舵机编写新的应用程序，请参&#x8003;***`OpenCatEsp32/src/espServo.h`***&#x4E2D;的源代码。
