# 姿势模仿教程

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/)。
