# 姿势模仿教程

Demo:[ https://www.bilibili.com/video/BV16d4y1t7nF/](https://www.bilibili.com/video/BV16d4y1t7nF/)

在本教程中，我们将介绍如何使用 python 语言中的 ailia，来实现OpenCat机器人模仿人类的各种肢体动作。

### 从GitHub 代码仓库克隆或下载代码

使用以下命令克隆代码：

```
git clone https://github.com/PetoiCamp/OpenCat-Imitation
```

### 在常规电脑主机上运行姿势模仿程序（Mac/Linux）

{% hint style="info" %}
请使用python 3.6及以上的版本
{% endhint %}

1. 建议安装[Anaconda3](https://www.anaconda.com/products/distribution) 开发环境，具体安装方法请参考以下链接：\
   <https://docs.anaconda.com/anaconda/install/><br>
2. &#x20;打开 Anacconda Prompt（Windows）,或者 Terminal （Linux / macOS）输入以下命令创建并激活虚拟环境（环境名称为 venv, 也可以自定义为其他名称）：\
   `conda create --name venv`\
   `conda activate venv`<br>
3. 按照[指南](https://github.com/axinc-ai/ailia-models/blob/master/TUTORIAL.md)安装 ailia SDK，它将用于姿势检测。指南中主要包括以下步骤：下载并安装 ailia SDK， 以及安装相关的 python 库文件。\
   \
   下载 ailia SDK时，需要输入正确的邮箱地址，用来接收下载链接地址和证书文件。\
   \
   将下载的证书文件（`AILIA.lic`）移动到`bootstrap.py`文件所在的目录（`ailia_sdk/python`）中之后，再按照步骤继续安装 ailia SDK。

   ```
   cd {ailia sdk directory}/python
   python3 bootstrap.py
   pip3 install .
   ```

   \
   将此页面（<https://github.com/axinc-ai/ailia-models>）中的`requirements.txt`下载到`bootstrap.py`文件所在的目录，然后再运行以下命令：

   ```
   pip install -r requirements.txt
   ```
4. 使用USB上载器或蓝牙模块连接机器人并上电，电脑端需要连接摄像头设备。
5. 运行以下命令，即可开启姿势模仿程序：

   ```
   cd {your file directory}/OpenCat-Imitation/
   # set python import path
   export PYTHONPATH=$PWD:$PWD/serialMaster
   python opencat_imitation/imitation.py -v0
   ```

{% hint style="info" %}
您也可以在**OpenCat-Imitation/** 路径下直接用 Shell运行**run.sh**，它基本上就是给上述指令打了个包。
{% endhint %}

### 在Jetson Nano 2GB Developer kit 上运行姿势模仿程序

您可以在 Jetson Nano 上运行这个 demo 来实验一些 GPU 的加速。

Jetson Nano 开发板使用 microSD 卡作为启动设备和主存储。 拥有一张足够快、足够大的卡来满足您的项目非常重要； 最低要求是 32GB UHS-1 卡。由于只有 2GB 物理内存，许多使用 Jetson Nano 2GB 开发人员套件的项目将利用 microSD 卡上的交换空间。 因此，我们建议使用高耐力的 64GB 或更大的 microSD 卡。&#x20;

1. 请参考[使用指南](https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-2gb-devkit#write)将系统镜像文件（[JetPack 4.6](https://developer.nvidia.com/embedded/l4t/r32_release_v6.1/jeston_nano_2gb/jetson-nano-2gb-jp46-sd-card-image.zip)）煤录到microSD 卡中，并完成系统初始化。

{% hint style="info" %}
使用指南（<https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-2gb-devkit#write>）中的系统镜像文件链接指向是 JetPack 4.6.1, 下载烧录到microSD 卡后，插入Jetson Nano启动时可能无法进行系统初始化。所以我们建议使用稍早的一个版本：JetPack 4.6。
{% endhint %}

2\. 使用网线连接Jetson Nano 开发板与路由器或者其他电脑主机，使其能够正常上网。

{% hint style="info" %}
连接其他电脑主机联网时，需要将电脑主机中已有的网络连接设为共享状态。还有一些其他联网方法，请参考[相关技术文档](https://blog.csdn.net/Tsing_qsu/article/details/106331725)。
{% endhint %}

3\. 从GitHub [代码仓库](https://github.com/TomCC7/OpenCat-Imitation)克隆或下载姿势模仿程序代码（命令[如上所述](#cong-github-dai-ma-cang-ku-ke-long-huo-xia-zai-dai-ma)），并按照[指南](https://github.com/axinc-ai/ailia-models/blob/master/TUTORIAL.md)安装 ailia SDK，具体方法与在电脑主机上运行姿势模仿程序的第3步相同，但是不需要执行语句：`pip install -r requirements.txt`

4\. 使用以下命令安装相关的python库文件

```
sudo apt install python3-pip
sudo apt install python3-matplotlib
sudo apt install python3-scipy
pip3 install cython
pip3 install numpy
sudo apt install nvidia-jetpack
pip3 install dataclasses
pip3 install pyserial
```

5\. 连接摄像头，参考[相关指南](https://developer.nvidia.com/embedded/learn/tutorials/first-picture-csi-usb-camera)完成摄像头配置。如果您使用USB 摄像头，请参考[相关技术文档](https://forums.developer.nvidia.com/t/jetson-nano-faq/82953)完成设置。连接USB上载器，需要使用以下命令  `sudo usermod -a -G dialout $USER` 增加用户权限。&#x20;

6\. 开启姿势模仿程序请参照在电脑主机上运行姿势模仿程序的第4和第5步。

至此姿势模仿程序就可以在Jetson Nano开发板上正常运行了。您可以参考其他相关技术文档进一步提升程序的性能，比如[使opencv支持CUDA加速](https://jetsonhacks.com/2019/11/22/opencv-4-cuda-on-jetson-nano/)。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.petoi.com/chinese/ying-yong-shi-li/zi-shi-mo-fang-jiao-cheng.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
