# 3 使用与开发 Getting Started

### 3.1 使用与操作

启动操作基本操作流程如下：

#### 检查

检查车体状态。检查车体是否有明显异常；如有，请联系 售后支持。

#### 启动

按下SCOUT MINI电源按键，等待数秒即可；&#x20;

将SWB拨至中间；&#x20;

可尝试手动切换灯光模式，确定模式选择是否正确；&#x20;

尝试将左边摇杆轻轻往前推，推一小部分即可，可见小车 缓慢速度往前移动；&#x20;

尝试将左边摇杆轻轻往后推，推一小部分即可，可见小车 缓慢速度往后移动；

释放左边摇杆，小车停下；&#x20;

尝试将右边摇杆轻轻往左推，推一小部分即可，可见小车 缓慢往左旋转；&#x20;

尝试将右边摇杆轻轻往右推，推一小部分即可，可见小车 缓慢往右旋转；&#x20;

释放右边摇杆，小车停下；&#x20;

可尝试在相对空旷的区域自由控制，熟悉车辆移动速度。

#### 关闭操作

按下SCOUT MINI电源按键，释放即可。

#### 遥控控制基本操作流程

正常启动SCOUT MINI底盘后，启动遥控器，将控制模式选择为遥控控制模式，即可通过遥控器控制SCOUT MINI平台运动。

### 3.2 充电

SCOUT MINI产品默认随车配备一个10A的充电器，可满足客户的充电需求。默认关机充电，正常充电时，底盘没有指 示灯说明。具体指示灯请看充电器上说明。

> 确保SCOUT MINI底盘处于停机断电状态。
>
> 将充电器的插头插入车尾充电接口；
>
> 将充电器连接电源，将充电器开关打开，即可进入充电状态。

注意：当前电池从22V充满电状态大约需要1.5小时， 电池充满电电压约为29.2V；

充电时间计算 15Ah÷10A=1.5H

### 3.3 开发

SCOUT MINI产品针对用户的开发提供了CAN的接口，用户可用CAN指令对车体进行指令控制。

#### 3.3.1 CAN线的连接

SCOUT MINI随车发货提供了一个航空插头公头如 图3.2，线的定义可参考表2.2。

![图 3.2 航空插头公头示意图](https://337190597-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MgPFNlsoEoBDxgcBIgK%2F-Mgmnjoqd9MXkm5yYy_R%2F-MgmseNHlZsnP6S3MsEx%2F464f662e5d16856a6193491d1bd2d9f.png?alt=media\&token=c879d012-601c-4434-9e1c-9dea00e9df11)

#### 注 ： 当前SCOUT MINI版本对外扩展接口仅尾部接 口开放 。 此版本中电源最大可提供5A的电流。

#### 3.3.2 CAN指令控制的实现

正常启动SCOUT MINI移动机器人底盘 ，打开富斯遥控器 ，然后将控 制模式切换至指令控制，即将富斯遥控器SWB模式选择拨至最上方， 此时SCOUT MINI底盘会接受来自CAN接口的指令 ， 同时主机也可以 通过CAN总线回馈的实时数据，解析当前底盘的状态，具体协议内容 参考CAN通讯协议。

#### 3.3.3 CAN接口协议

SCOUT MINI产品中CAN通信标准采用的是CAN2.0B标准，通讯波特率为500K，报文格式采用MOTOROLA格 式。通过外部CAN总线接口可以控制底盘的移动的线速度以及旋转的角速度；SCOUT MINI会实时反馈当前 的运动状态信息以及SCOUT MINI底盘的状态信息等。

协议包含系统状态回馈帧、运动控制回馈帧、控制帧，协议内容具体如下：&#x20;

系统状态回馈指令包含了当前车体状态回馈、控制模式状态回馈、电池电压回馈以及故障回馈，协议内容如 表3.1所示。

#### 表格 3.1 SCOUT MINI底盘系统状态回馈帧

|               指令名称               |                              |                |                                    系统状态回馈指令                                    |
| :------------------------------: | :--------------------------: | :------------: | :----------------------------------------------------------------------------: |
|               发送节点               |             接收节点             |       ID       |                                周期（ms）   接收超时(ms)                               |
|               线控底盘               |            决策控制单元            |      0x211     |                           200ms                     无                          |
|               数据长度               |             0x08             |                |                                                                                |
|                位置                |              功能              |      数据类型      |                                       说明                                       |
|             byte \[0]            |            当前车体状态            |  unsigned int8 |                        <p>0x00 系统正常</p><p>0x02 系统异常</p>                        |
|             byte \[1]            |             模式控制             |  unsigned int8 | <p>0x00 待机模式</p><p>0x01 CAN指令控制模式</p><p>0x02 串口控制模模式\[1]</p><p>0x03遥控控制模模式</p> |
| <p>byte \[2]</p><p>byte \[3]</p> | <p>电池电压高八位</p><p>电池电压低八位</p> | unsigned int16 |                               实际电压X 10 (精确到0.1V)                               |
|             byte \[4]            |              保留              |       --       |                                      0x00                                      |
|             byte \[5]            |             故障信息             |  unsigned int8 |                                详见表格3.2\[故障信息说明]                                |
|             byte \[6]            |              保留              |       --       |                                      0x00                                      |
|             byte \[7]            |         计数校验 (count)         |  unsigned int8 |                             0\~255循环计数，每发送一条指令计数加一次                            |

|           |          |              故障信息说明              |
| :-------: | :------: | :------------------------------: |
|     字节    |     位    |                含义                |
|           | bit \[0] |   电池欠压故障（0:无故障 1：故障）保护电压为20.5V   |
|           | bit \[1] | 电池欠压警告\[2]（0:无警告 1：警告）报警电压为22.5V |
|           | bit \[2] |       遥控器失联保护（0：正常，1：遥控器失联）      |
| byte \[5] | bit \[3] |        驱动1通讯故障(0：无故障，1：故障)       |
|           | bit \[4] |        驱动2通讯故障(0：无故障，1：故障)       |
|           | bit \[5] |        驱动3通讯故障(0：无故障，1：故障)       |
|           | bit \[6] |        驱动4通讯故障(0：无故障，1：故障)       |
|           | bit \[7] |              预留，默认0              |

\[1]：机器人底盘固件版本V1.2.8后续版本支持，之前版本需要升级固件方可支持 \[2]：电池欠压警告标志置位时蜂鸣器响，但是底盘控制不受影响，欠压故障后会切断动力输出

运动控制回馈帧指令包含了当前车体的运动线速度、运动角速度回馈，协议具体内容如表3.3所示。

#### 表格 3.3 运动控制回馈帧

|               指令名称               |                              |              |          运动控制回馈指令          |
| :------------------------------: | :--------------------------: | :----------: | :------------------------: |
|               发送节点               |             接收节点             |      ID      |      周期（ms）   接收超时(ms)     |
|               线控底盘               |            决策控制单元            |     0x221    | 20ms                     无 |
|               数据长度               |             0x08             |              |                            |
|                位置                |              功能              |     数据类型     |             说明             |
| <p>byte \[0]</p><p>byte \[1]</p> | <p>移动速度高八位</p><p>移动速度低八位</p> | signed int16 |  实际速度X 1000 (精确到0.001m/s)  |
| <p>byte \[2]</p><p>byte \[3]</p> | <p>旋转速度高八位</p><p>旋转速度低八位</p> | signed int16 | 实际速度X 1000 (精确到0.001rad/s) |
|             byte \[4]            |              保留              |      --      |            0x00            |
|             byte \[5]            |              保留              |      --      |            0x00            |
|             byte \[6]            |              保留              |      --      |            0x00            |
|             byte \[7]            |              保留              |      --      |            0x00            |

运动控制帧包含了线速度控制开度、角速度控制开度，其具体协议内容如表3.4所示。

|               指令名称               |                            |              |                         控制指令                        |
| :------------------------------: | :------------------------: | :----------: | :-------------------------------------------------: |
|               发送节点               |            接收节点            |      ID      |                  周期（ms）   接收超时(ms)                  |
|              决策控制单元              |            底盘节点            |     0x111    |            20ms                     500ms           |
|               数据长度               |            0x08            |              |                                                     |
|                位置                |             功能             |     数据类型     |                          说明                         |
| <p>byte \[0]</p><p>byte \[1]</p> | <p>线速度高八位</p><p>线速度低八位</p> | signed int16 |     <p>车体行进速度，单位mm/s,</p><p>值域 \[-3000,3000]</p>    |
| <p>byte \[2]</p><p>byte \[3]</p> | <p>角速度高八位</p><p>角速度低八位</p> | signed int16 | <p>车体旋转角速度，单位0.001rad/s, </p><p>值域\[-2523,2523]</p> |
|             byte \[4]            |             保留             |      --      |                         0x00                        |
|             byte \[5]            |             保留             |      --      |                         0x00                        |
|             byte \[6]            |             保留             |      --      |                         0x00                        |
|             byte \[7]            |             保留             |      --      |                         0x00                        |

模式设定帧用于设定终端的控制接口，其具体协议内容如表3.5所示。

#### 表格 3.5 控制模式设定帧

|    指令名称   |         |               |                控制模式设定指令               |
| :-------: | :-----: | :-----------: | :-----------------------------------: |
|    发送节点   |   接收节点  |       ID      |           周期（ms）   接收超时(ms)           |
|   决策控制单元  |   底盘节点  |     0x421     |        无                     无        |
|    数据长度   |   0x01  |               |                                       |
|     位置    |    功能   |      数据类型     |                   说明                  |
| byte \[0] | CAN控制使能 | unsigned int8 | <p>0x00 待机模式</p><p>0x01 CAN指令模式使能</p> |

控制模式说明：&#x20;

SCOUT MINI在开机上电，遥控器未连接的情况下，控制模式默认是待机模式，此时底盘只接收控制模式指令，速度指令不 做响应，要使用CAN控制就需要先使能CAN控制模式。若打开遥控器，遥控器具有最高权限，可以屏蔽指令的控制，可以切 换控制模式。

状态置位帧用于清除系统错误，其具体协议内容如表3.6所示。

#### 表格 3.6状态置位帧

|    指令名称   |        |               |                                             状态设定指令                                             |
| :-------: | :----: | :-----------: | :--------------------------------------------------------------------------------------------: |
|    发送节点   |  接收节点  |       ID      |                                        周期（ms）   接收超时(ms)                                       |
|   决策控制单元  |  底盘节点  |     0x441     |                                      无                   无                                     |
|    数据长度   |  0x01  |               |                                                                                                |
|     位置    |   功能   |      数据类型     |                                               说明                                               |
| byte \[0] | 错误清除指令 | unsigned int8 | <p>0x00 清除所有错误</p><p>0x01 清除电机1错误</p><p>0x02 清除电机2错误</p><p>0x03 清除电机3错位</p><p>0x04 清除电机4错误</p> |

\[注3]示例数据，以下数据仅供测试使用&#x20;

1，小车以0.15m/S的速度前进

| byte \[0] | byte \[1] | byte \[2] | byte \[3] | byte \[4] | byte \[5] | byte \[6] | byte \[7] |
| --------- | --------- | --------- | --------- | --------- | --------- | --------- | --------- |
| 0x00      | 0x96      | 0x00      | 0x00      | 0x00      | 0x00      | 0x00      | 0x00      |

2\. 小车以0.2RAD/S旋转

| byte \[0] | byte \[1] | byte \[2] | byte \[3] | byte \[4] | byte \[5] | byte \[6] | byte \[7] |
| --------- | --------- | --------- | --------- | --------- | --------- | --------- | --------- |
| 0x00      | 0x00      | 0x00      | 0xc8      | 0x00      | 0x00      | 0x00      | 0x00      |

除了底盘的状态信息会进行反馈以外，底盘反馈的信息还包括电机的电流信息、编码器数据以及温度信息。下面的帧反馈 是电机的电流信息、编码器信息以及电机温度信息：&#x20;

在底盘中四个电机电机编号对应为如下图所示：

![图3.0 电机反馈ID示意图](https://337190597-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MgPFNlsoEoBDxgcBIgK%2F-MhBWaC64b8zT9TU4M9p%2F-MhBiHo-pBBsR3m4oMrv%2F788647406f82722cfe4e865196f7fa7.png?alt=media\&token=a3a57687-7137-453d-b4ff-f5b6dfc08b95)

#### 表格 3.7 电机转速电流位置信息反馈

|                               指令名称                               |                                      |              |        电机驱动器高速信息反馈帧        |
| :--------------------------------------------------------------: | :----------------------------------: | :----------: | :------------------------: |
|                               发送节点                               |                 接收节点                 |      ID      |      周期（ms）   接收超时(ms)     |
|                               线控底盘                               |                决策控制单元                | 0x251\~0x254 | 20ms                     无 |
|                               数据长度                               |                 0x08                 |              |                            |
|                                位置                                |                  功能                  |     数据类型     |             说明             |
|                 <p>byte \[0]</p><p>byte \[1]</p>                 |     <p>电机转速高八位</p><p>电机转速低八位</p>     | signed int16 |        电机当前转速 单位RPM        |
|                 <p>byte \[2]</p><p>byte \[3]</p>                 |     <p>电机电流高八位</p><p>电机电流低八位</p>     | signed int16 |        电机当前电流 单位0.1A       |
| <p>byte \[4]</p><p>byte \[5]</p><p>byte \[6]</p><p>byte \[7]</p> | <p>保留</p><p>保留</p><p>保留</p><p>保留</p> |      --      |            0x00            |

#### 表格 3.8 电机驱动器信息反馈

|               指令名称               |                                |                |         电机驱动器低速信息反馈帧        |
| :------------------------------: | :----------------------------: | :------------: | :-------------------------: |
|               发送节点               |              接收节点              |       ID       |      周期（ms）   接收超时(ms)      |
|               线控底盘               |             决策控制单元             |  0x261\~0x264  | 100ms                     无 |
|               数据长度               |              0x08              |                |                             |
|                位置                |               功能               |      数据类型      |              说明             |
| <p>byte \[0]</p><p>byte \[1]</p> | <p>驱动器电压高八位</p><p>驱动器电压低八位</p> | unsigned int16 |        当前驱动器电压 单位0.1V       |
| <p>byte \[2]</p><p>byte \[3]</p> | <p>驱动器温度高八位</p><p>驱动器温度低八位</p> |  signed int16  |             单位1℃            |
|             byte \[4]            |              电机温度              |   signed int8  |             单位1℃            |
|             byte \[5]            |              驱动器状态             |  unsigned int8 |            详见表3.9           |
|             byte \[6]            |               保留               |       --       |             0x00            |
|             byte \[7]            |               保留               |       --       |             0x00            |

#### 表格 3.9驱动器状态

|     字节    |     位    |          含义         |
| :-------: | :------: | :-----------------: |
|           | bit \[0] | 电源电压是否过低（0：正常 1：过低） |
|           | bit \[1] |  电机是否过温（0：正常 1：过温）  |
|           | bit \[2] |  电机是否过流（0：正常 1：过流）  |
| byte \[5] | bit \[3] |  驱动器是否过温（0：正常 1：过温） |
|           | bit \[4] |          保留         |
|           | bit \[5] |          保留         |
|           | bit \[6] |          保留         |
|           | bit \[7] |          保留         |

前部和外部的灯光也支持指令控制，下表为控制的指令：

#### 表格 3.10 灯光控制帧

|    指令名称   |              |               |                               灯光控制帧                              |
| :-------: | :----------: | :-----------: | :--------------------------------------------------------------: |
|    发送节点   |     接收节点     |       ID      |                         周期（ms）   接收超时(ms)                        |
|   决策控制单元  |     线控底盘     |     0x121     |                  100ms                     500ms                 |
|    数据长度   |     0x08     |               |                                                                  |
|     位置    |      功能      |      数据类型     |                                说明                                |
| byte \[0] |   灯光控制使能标志   | unsigned int8 |                <p>0x00 控制指令无效</p><p>0x01灯光控制使能</p>               |
| byte \[1] |    前侧灯光模式    | unsigned int8 | <p>0x00 常关</p><p>0x01 常开</p><p>0x02 呼吸灯模式</p><p>0x03 客户自定义亮度</p> |
| byte \[2] |   前侧灯光自定义亮度  | unsigned int8 |                     \[0,100],其中0为不亮，100最亮\[5]                    |
| byte \[3] |      保留      |       --      |                               0x00                               |
| byte \[4] |      保留      |       --      |                               0x00                               |
| byte \[5] |      保留      |       --      |                               0x00                               |
| byte \[6] |      保留      |       --      |                               0x00                               |
| byte \[7] | 计数校验 (count) | unsigned int8 |                      0\~255循环计数，每发送一条指令计数加一次                     |

注\[5]: 此值只在自定义模式下有效

#### 表格 3.11 灯光控制反馈帧

|    指令名称   |              |               |                              灯光控制反馈帧                             |
| :-------: | :----------: | :-----------: | :--------------------------------------------------------------: |
|    发送节点   |     接收节点     |       ID      |                         周期（ms）   接收超时(ms)                        |
|    线控底盘   |    决策控制单元    |     0x231     |                    500ms                     无                   |
|    数据长度   |     0x08     |               |                                                                  |
|     位置    |      功能      |      数据类型     |                                说明                                |
| byte \[0] |  当前灯光控制使能标志  | unsigned int8 |                <p>0x00 控制指令无效</p><p>0x01灯光控制使能</p>               |
| byte \[1] |   当前前侧灯光模式   | unsigned int8 | <p>0x00 常关</p><p>0x01 常开</p><p>0x02 呼吸灯模式</p><p>0x03 客户自定义亮度</p> |
| byte \[2] |  当前前侧灯光自定义亮度 | unsigned int8 |                       \[0,100],其中0为不亮，100最亮                      |
| byte \[3] |      保留      |       --      |                               0x00                               |
| byte \[4] |      保留      |       --      |                               0x00                               |
| byte \[5] |      保留      |       --      |                               0x00                               |
| byte \[6] |      保留      |       --      |                               0x00                               |
| byte \[7] | 计数校验 (count) | unsigned int8 |                      0\~255循环计数，每发送一条指令计数加一次                     |

#### 表格 3.12系统版本信息查询帧

|    指令名称   |        |               |        系统版本信息查询指令       |
| :-------: | :----: | :-----------: | :---------------------: |
|    发送节点   |  接收节点  |       ID      |    周期（ms）   接收超时(ms)    |
|   决策控制单元  |  底盘节点  |     0x411     | 无                     无 |
|    数据长度   |  0x08  |               |                         |
|     位置    |   功能   |      数据类型     |            说明           |
| byte \[0] | 查询系统版本 | unsigned int8 |          固定0x01         |

#### 表格 3.13系统版本信息查询帧

|               指令名称               |                                      |                |        系统版本信息反馈帧       |
| :------------------------------: | :----------------------------------: | :------------: | :--------------------: |
|               发送节点               |                 接收节点                 |       ID       |    周期（ms）   接收超时(ms)   |
|               线控底盘               |                决策控制单元                |      0x41A     | 无                    无 |
|               数据长度               |                 0x08                 |                |                        |
|                位置                |                  功能                  |      数据类型      |           说明           |
| <p>byte \[0]</p><p>byte \[1]</p> |  <p>主控硬件版本号高八位</p><p>主控硬件版本号低八位</p>  | unsigned int16 |    高八位为主版本号，低八位为次版本号   |
| <p>byte \[2]</p><p>byte \[3]</p> | <p>驱动器硬件版本号高八位</p><p>驱动器硬件版本号低八位</p> | unsigned int16 |    高八位为主版本号，低八位为次版本号   |
| <p>byte \[4]</p><p>byte \[5]</p> |  <p>主控软件版本号高八位</p><p>主控软件版本号低八位</p>  | unsigned int16 |    高八位为主版本号，低八位为次版本号   |
| <p>byte \[6]</p><p>byte \[7]</p> | <p>驱动器软件版本号高八位</p><p>驱动器软件版本号低八位</p> | unsigned int16 |    高八位为主版本号，低八位为次版本号   |

#### 表格 3.14 里程计信息反馈

|                               指令名称                               |                                                              |              |           里程计信息反馈          |
| :--------------------------------------------------------------: | :----------------------------------------------------------: | :----------: | :------------------------: |
|                               发送节点                               |                             接收节点                             |      ID      |      周期（ms）   接收超时(ms)     |
|                               线控底盘                               |                            决策控制单元                            |     0x311    | 20ms                     无 |
|                               数据长度                               |                             0x08                             |              |                            |
|                                位置                                |                              功能                              |     数据类型     |             说明             |
| <p>byte \[0]</p><p>byte \[1]</p><p>byte \[2]</p><p>byte \[3]</p> | <p>左轮里程计最高位</p><p>左轮里程计低高位</p><p>左轮里程计次低位</p><p>左轮里程计最低位</p> | signed int32 |       底盘左轮里程计反馈 单位：mm      |
| <p>byte \[4]</p><p>byte \[5]</p><p>byte \[6]</p><p>byte \[7]</p> | <p>右轮里程计最高位</p><p>右轮里程计次高位</p><p>右轮里程计次低位</p><p>右轮里程计最低位</p> | signed int32 |       底盘右轮里程计反馈 单位：mm      |

#### 表格 3.15 遥控器信息反馈

|    指令名称   |         |               |                                                                 遥控器信息反馈帧                                                                |
| :-------: | :-----: | :-----------: | :-------------------------------------------------------------------------------------------------------------------------------------: |
|    发送节点   |   接收节点  |       ID      |                                                            周期（ms）   接收超时(ms)                                                            |
|    线控底盘   |  决策控制单元 |     0x241     |                                                        20ms                     无                                                       |
|    数据长度   |   0x08  |               |                                                                                                                                         |
|     位置    |    功能   |      数据类型     |                                                                    说明                                                                   |
| byte \[0] |  遥控SW反馈 | unsigned int8 | <p>bit\[0-1]: SWA ：2-上档 3-下档</p><p>bit\[2-3]: SWB：2-上档 1-中档 3-下档</p><p>bit\[4-5]: SWC：2-上档 1-中档 3-下档</p><p>bit\[6-7]: SWD：2-上档 3-下档</p> |
| byte \[1] |  右边拨杆左右 |  signed int8  |                                                              值域：\[-100,100]                                                             |
| byte \[2] |  右边拨杆上下 |  signed int8  |                                                              值域：\[-100,100]                                                             |
| byte \[3] |  左边拨杆上下 |  signed int8  |                                                              值域：\[-100,100]                                                             |
| byte \[4] |  左边拨杆左右 |  signed int8  |                                                              值域：\[-100,100]                                                             |
| byte \[5] | 左边旋钮VRA |  signed int8  |                                                              值域：\[-100,100]                                                             |
| byte \[6] |    保留   |       --      |                                                                   0x00                                                                  |

### 3.4固件升级

为了方便解决用户对SCOUT MINI所使用的固件版本进 行升级，给客户带来更加完善的体验，SCOUT MINI提供 了固件升级的硬件接口以及与之对应的客户端软件。其 客户端界面如图3.3所示。

![图 3.3 固件升级客户端界面](https://337190597-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MgPFNlsoEoBDxgcBIgK%2F-MhBWaC64b8zT9TU4M9p%2F-MhBvmyZ_CDJc59-OWOv%2F08067253c90883f4edabc528fa0915b.png?alt=media\&token=dc8e1ca3-d515-4a94-ba45-0a7a9c2e425c)

#### 升级准备

串口线 X 1&#x20;

USB转串口 X 1

SCOUT MINI 底盘 X 1

电脑(Windows 操作系统) X 1

#### 固件升级软件

{% embed url="<https://github.com/agilexrobotics/agilex_firmware>" %}

#### 升级过程

连接前保证机器人底盘电源处于断开状态；&#x20;

使用串口线连接至SCOUT MINI底盘内部串口；&#x20;

串口线连接至电脑；

打开客户端软件；&#x20;

选择端口号；

SCOUT MINI底盘上电，立即点击开始连接（SCOUT MINI底盘会在上电前3S等待，如果时间超过3S则会进 行进入应用程序）；若连接成功，会在文本框提示“连 接成功”；&#x20;

加载Bin文件；&#x20;

点击升级，等待升级完成的提示即可；&#x20;

断开串口线，底盘断电，再次通电即可。

### 3.5 SCOUT MINI 2.0 ROS Package 使用示例

ROS提供一些标准操作系统服务，例如硬件抽象，底层设备控制，常用功能实现，进程间消息以及数据包管理。ROS是基于 一种图状架构，从而不同节点的进程能接受，发布，聚合各种信息（例如传感，控制，状态，规划等等）。目前ROS主要支持 UBUNTU。

### 开发准备

#### 硬件准备&#x20;

CANlight can通讯模块 X1&#x20;

Thinkpad E470 笔记本电脑 X1&#x20;

AGILEX SCOUT MINI 2.0 移动机器人底盘 X1&#x20;

AGILEX SCOUT MINI 2.0配套遥控器FS-i6s X1&#x20;

AGILEX SCOUT MINI 2.0顶部航空插座 X1

#### 使用示例环境说明&#x20;

Ubuntu 16.04 LTS（此为测试版本，在Ubuntu 18.04 LTS测试过）&#x20;

ROS Kinetic （后续版本亦测试过）&#x20;

Git

### 硬件连接与准备

将SCOUT MINI尾部航空插头或者尾部插头CAN线引出，将CAN线中的CAN\_H和CAN\_L分别与CAN\_TO\_USB适配器相连；&#x20;

打开SCOUT MINI移动机器人底盘旋钮开关;

将CAN\_TO\_USB连接至笔记本的usb口。连接示意如图3.4所示。

![图3.4连接示意图](https://337190597-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MgPFNlsoEoBDxgcBIgK%2F-MhBWaC64b8zT9TU4M9p%2F-MhC60cjLcp9uCcAmkee%2F1b046540dc873735dc19870a65f3ebf.png?alt=media\&token=b7d2e41e-b3c1-4b1b-9bcc-0c54ac9bd8ce)

#### ROS 安装和环境设置

安装具体可以参考[HTTP://WIKI.ROS.ORG/KINETIC/INSTALLATION/UBUNTU](http://wiki.ros.org/KINETIC/INSTALLATION/UBUNTU\[]\(\))

### 测试CANable硬件与CAN 通讯

#### 设置CAN-TO-USB适配器

使能 gs\_usb 内核模块

`$ sudo modprobe gs_usb`

设置500k波特率和使能can-to-usb适配器

`$ sudo ip link set can0 up type can bitrate 500000`

如果在前面的步骤中没有发生错误，您应该可以使用 命令立即查看can设备

`$ ifconfig -a`

安装并使用can-utils来测试硬件

`$ sudo apt install can-utils`

若此次can-to-usb已经和SCOUT MINI 2.0机器人相连， 且小车已经开启的情况下，使用下列指令可以监听来 自SCOUT MINI 2.0底盘的数据了

`$ candump can0`

参考来源： \[1] <https://github.com/agilexrobotics/agx_sdk> \[2][https://wiki.rdu.im/\_pages/Notes/Embedded-System/Linux/can-bus-in-linux.html](https://wiki.rdu.im/_pages/Notes/Embed%02ded-System/Linux/can-bus-in-linux.html)

#### AGILEX SCOUT MINI 2.0 ROS Package 下载与编译

下载ros 依赖包

`$ sudo apt install -y libasio-dev`&#x20;

`$ sudo apt install -y ros-$ROS_DISTRO-teleop-twist-keyboard`

克隆编译scout mini\_ros 2.0源码

`$ cd ~/catkin_ws/src`&#x20;

`$ git clone --recursive https://github.com/agilexrobotics/ugv_sdk.git`

`$ git clone https://github.com/agilexrobotics/scout_ros.git`&#x20;

`$ cd ..`&#x20;

`$ catkin_make`

参考来源： <https://github.com/agilexrobotics/scout_base>

#### 启动ROS 节点

启动基础节点

`$ roslaunch scout_bringup scout_mini_robot_base.launch`

启动键盘远程操作节点

`$ roslaunch scout_bringup scout_teleop_keyboard.launch`
