
# 配置端侧
#### R2C SDK已适配本体
当前R2C SDK已内置有SO-ARM101等机械臂的相关配置，请将在CloudRobo平台下载的配置文件放置到r2c_sdk_python/config目录下，可快速接入机械臂。
1. 进入r2c_sdk_python目录下。
2. 进入conda的lerobot环境。 
   ```
   conda activate lerobot
   ```
   
   
3. 配置so101机械臂参数。 
   - 查看Follower臂的port并记录。
     ```
     lerobot-find-port
     ```
     请根据界面提示拔出Follower臂USB信号线并在界面单击"Enter"键，可查看到Follower臂的端口号。
     Linux系统下，端口类似：
     ```
     /dev/ttyACM0
     ```
     Windows系统下，端口类似：
     ```
     COM1
     ```
     
   
   - 查看相机的设备号并记录。在当前运行命令的路径下会生成outputs/captured_images文件夹，可查看图片确定相机对应端口号。
     ```
     lerobot-find-cameras opencv
     ```
     Linux系统下，端口类似：
     ```
     /dev/video0
     ```
     Windows系统下，端口类似：
     ```
     0
     ```
     
   
   - 在R2C SDK主目录下，打开机器人配置文件config/robot_so101_lerobot_config.yaml，修改机器人当前相机设备号和so101从臂的id和port。
     Linux系统下：
     ```
     hardware:
        lerobot_config:
          type: so101_follower
          id: my_follower_arm         --修改成标定时设备的机械臂id
          calibration_dir: null
          # Replace with the actual serial device used by your SO101 robot.
         port: /dev/ttyACM0           --修改成查到的port
          cameras:
            front:
              type: opencv
              index_or_path: /dev/video0       --修改成查到顶部相机的设备号
              width: 640
              height: 480
              fps: 30       --修改为相机实际的fps,如不知道或没显示就保持默认30
           wrist:
              type: opencv
              index_or_path: /dev/video2         --修改成查到的腕部相机的设备号
              width: 640
              height: 480
              fps: 30       --修改为相机实际的fps,如不知道或没显示就保持默认30
     ```
     Windows系统下：
     ```
     hardware:
        lerobot_config:
          type: so101_follower
          id: my_follower_arm          --修改成标定时设备的机械臂id
          calibration_dir: null
          # Replace with the actual serial device used by your SO101 robot.
         port: COM1           --修改成查到的port
          cameras:
            front:
              type: opencv
              index_or_path: 0      --修改成查到顶部相机的设备号
              width: 640
              height: 480
              fps: 30       --修改为相机实际的fps,如不知道或没显示就保持默认30
           wrist:
              type: opencv
              index_or_path: 2         --修改成查到的腕部相机的设备号
              width: 640
              height: 480
              fps: 30       --修改为相机实际的fps,如不知道或没显示就保持默认30
     ```
     
   
   
   
   
   
4. 运行如下命令完成机器人接入。 
   ```
   python -m r2c_sdk.cloudroboclient --bundle config/配置文件名.zip --robot-config config/robot_so101_lerobot_config.yaml
   ```
   如无报错，即表示机器人接入CloudRobo平台成功，在CloudRobo平台的机器人列表页，可查看到该机器人状态变为在线。
   
   
 
#### 使用skills适配本体
**场景介绍**
使用**Coding Agent**可以实现将任意机器人接入R2C。
**前提条件**
1. 已经安装任意**Coding Agent** （如[码道](https://codearts.huaweicloud.com/)等）。
2. Python的最小样例（包括观测获取与动作运行），并能在机器人上运行，且提供三个安全的action样例。
   - 如果无最小样例，可以使用厂商提供的SDK示例让**Coding Agent**写一个。
   
   
   
   - 如果无Python版本的SDK或最小样例，可以让**Coding Agent**使用python重写。
    
**通过skills快速接入步骤**
1. 将已下载的[R2C SDK](https://support.huaweicloud.com/sdkreference-cloudrobo/cloudrobo_03_0002.html#cloudrobo_03_0002__section1328823919411)中的skills/r2c添加到项目级skills文件夹（项目根目录/.codeartsdoer/skills）或个人级skills文件夹(\~/.codeartsdoer/skills)。
2. 使用接入SKILL根据最小样例生成完整的R2C接入代码。（建议显式调用技能：/r2c根据@robot_minimal_test.py的样例来适配机械臂，机械臂的型号为{厂商的SDK或用户自定义型号}） 
   **Coding Agent**新增或修改文件应包含：
   - config/robot_{机械臂型号}_config.yaml。
   
   - examples/{机械臂型号}_cloud_adapter.py。
   
   - src/r2c_sdk/robots/{机械臂型号}_hardware_adapter.py。
   
   
   
   
3. 打开调试开关。 
   为了避免Coding Agent代码有问题导致机器人发生碰撞，在测试前请确认config/robot_{机械臂型号}_config.yaml中的dry_run字段为True。
   图1dry_run字段   
   ![](https://support.huaweicloud.com/sdkreference-cloudrobo/zh-cn_image_0000002592429996.png "点击放大")
   
   
4. 订阅观测验证，该流程用于验证机器人能正确运行动作。 
   打开两个终端，并依次分别运行下列命令：
   ```
   python examples/observation_subscriber.py --project-id test_project --device-id {机械臂型号} --client-id obs_sub  --endpoints tcp/127.0.0.1:7447 --endpoint-role  listen
   ```
   ```
   python -m r2c_sdk.cloudroboclient --project-id test_project --device-id {机械臂型号} --robot-config config/robot_{机械臂型号}_config.yaml
   ```
   
   
5. 发布动作测试，该流程用于验证机器人能正确运行动作。 
   ```
   python examples/{机械臂型号}_cloud_adapter.py --project-id test_project --device-id {机械臂型号} --client-id obs_sub
   ```
   ```
   python -m r2c_sdk.cloudroboclient --project-id test_project --device-id {机械臂型号} --robot-config config/robot_{机械臂型号}_config.yaml
   ```
   
   
6. 测试完成后，关闭dry_run模式，然后启动机器人客户端（接入CloudRobo平台）。 
   ```
   python -m r2c_sdk.cloudroboclient --bundle config/cert_xxx.zip --robot-config config/robot_{机械臂型号}_config.yaml
   ```
   
   
 
