> For the complete documentation index, see [llms.txt](https://agilexrobotics.gitbook.io/hunter-2-0/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://agilexrobotics.gitbook.io/hunter-2-0/3-shi-yong-yu-kai-fa-getting-started.md).

# 3 使用与开发 Getting Started

### 3.1 使用与操作

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

#### 检查

检查HUNTER 2.0状态。检查HUNTER 2.0是否有明显异常； 如有，请联系 售后支持；&#x20;

检查急停开关状态。确认急停按钮处于释放状态；&#x20;

初次使用时确保尾部电气面板中Q3(旋钮开关)竖直状态， 此时HUNTER2.0处于断电状态，

#### 启动

把旋钮开关旋到水平状态（Q3），正常情况下，电压表正常 显示电池电压；&#x20;

检查电池电压，正常电压范围为24\~26.8V,如有“滴-滴- 滴...”连续蜂鸣器声音，表示电池电压过低，请及时充电。

#### 关闭操作

把旋钮开关旋到竖直即可切断电源。

#### 急停

按下HUNTER 2.0车体顶部的急停开关即可。

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

正常启动HUNTER 2.0移动机器人底盘后，启动遥控器，将SWB为遥控控制模式，即可通过遥控器控制HUNTER 2.0平台运动。

#### 驻车

驻车采用失电式抱闸以实现驻车功能，因此在车辆行驶时必须关闭驻车功能后才能开始运动；&#x20;

遥控模式下，SWA为驻车功能开关，将拨杆拨至上方关闭驻车功能后方可控制运动，拨杆拨至下方开启驻车模式，若此时车速不为零， 则会自动减速至零再开启驻车功能；&#x20;

指令模式下，上电时默认是驻车模式，此时发送速度指令无响应，需要发送驻车解除指令后才能够发送速度指令进行控制。运动控制完 成后如需驻车，发送驻车指令即可。&#x20;

当触发急停后，驻车会自动开启，此时释放急停，无论遥控器SWA处于何处，都需要再解锁一次，才能正常运动。若断电后，因故障(如电 池电压过低)无法重新上电，可使用Q2旋钮开关手动解锁驻车，以方便移动车辆或者拖车。要注意的是手动（尾部旋钮开关Q2）解锁驻 车优先级最高，会使程序上的驻车失效，因此仅限于特殊情况使用，使用完请及时关闭。&#x20;

坡道驻车，当HUNTER 2.0处于斜坡上时，如果速度为零，HUNTER 2.0会自动检测电流，当达到一定值并持续一段时间时，HUNTER 2.0 会自动开启坡道驻车功能，再次接收到运动指令后，坡道驻车会自动解除并开始运动。

### 3.2 充电和电池更换

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

充电具体操作流程如下：

确保HUNTER 2.0底盘处于停机断电状态。充电前请确认尾部电 气 控制台中电源开关处于关闭状态；&#x20;

将充电器的插头插入车尾电气控制面板Q6充电界面中；&#x20;

将充电器连接电源，将充电器上开关打开，即可进入充电状态。

注意：当前电池从21V充满电状态大约需要4小时，电 池充满电电压约为26.8v；

#### 电池更换

关闭HUNTER2.0底盘的电源开关&#x20;

按下电池更换面板上的按钮锁，打开电池面板&#x20;

将当前连接的电池接口拔开，分别为（XT60电源接头）（ BMS接头）锁扣

取出电池，注意此过程电池禁止撞击和碰撞&#x20;

把将要使用的电池装上，然后把接口插回&#x20;

关闭电源更换面板，按下锁扣

### 3.3 开发

HUNTER 2.0产品针对用户的开发提供了CAN和RS232（当前版本未开放）的接口，用户可选择其中一种接口对车体进行指令控制。

#### 3.3.1 CAN接口协议

HUNTER 2.0 产品中CAN通信标准采用的是CAN2.0B标准，通讯波特率为500K，报文格式采用MOTOROLA格式。通过外部CAN总线 接口可以控制底盘的移动的线速度以及转向角度；HUNTER 2.0会实时反馈当前的运动状态信息以及HUNTER底盘的状态信息等。 系统状态回馈指令包含了当前车体状态回馈、控制模式状态回馈、电池电压回馈以及故障回馈，协议内容如表3.1所示。

表格 3.1 HUNTER2.0底盘系统状态回馈帧

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

|           |          |          故障信息说明         |
| :-------: | :------: | :---------------------: |
|     字节    |     位    |            含义           |
|           | bit \[0] |    驱动器状态错误（0：无故障1：故障）   |
|           | bit \[1] |  上层通讯连接状态（0： 无故障 1： 故障） |
|           | bit \[2] |          预留，默认0         |
|           | bit \[3] |          预留，默认0         |
| byte \[4] | bit \[4] |          预留，默认0         |
|           | bit \[5] |          预留，默认0         |
|           | bit \[6] |          预留，默认0         |
|           | bit \[7] |          预留，默认0         |
|           | bit \[0] |    电池欠压故障（0:无故障 1：故障）   |
|           | bit \[1] |          预留，默认0         |
|           | bit \[2] |  遥控器失联保护（0： 无故障 1： 故障）  |
|           | bit \[3] | 转向电机驱动器通讯故障（0:无故障 1：故障） |
| byte \[5] | bit \[4] | 后右电机驱动器通讯故障（0:无故障 1：故障） |
|           | bit \[5] | 后左电机驱动器通讯故障（0:无故障 1：故障） |
|           | bit \[6] |          预留，默认0         |
|           | bit \[7] | 前轮转向编码器掉线故障（0：无故障 1：故障） |

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

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

|               指令名称               |                              |              |         运动控制回馈指令         |
| :------------------------------: | :--------------------------: | :----------: | :----------------------: |
|               发送节点               |             接收节点             |      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) |
|             byte \[2]            |              保留              |       -      |           0x00           |
|             byte \[3]            |              保留              |       -      |           0x00           |
|             byte \[4]            |              保留              |       -      |           0x00           |
|             byte \[5]            |              保留              |       -      |           0x00           |
| <p>byte \[6]</p><p>byte \[7]</p> |   <p>转角高八位</p><p>转角低八位</p>   | signed int16 | 实际内转角X 1000 (单位0.001rad) |

运动控制帧包含了线速度控制指令、前轮内转角控制指令，其具体协议内容如表3.3所示

#### 表格 3.3 运动控制指令控制帧

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

PS：在CAN指令模式下，需要保证0X111指令帧以小于500MS的周期（建议周期20MS）发送，否则HUNTER2.0会 判定为控制信号心跳丢失而进入报错（0X211反馈上层通讯失联），系统报错后会进入待机模式，若此时0X111 控制帧恢复正常发送周期，上层通讯失联错误可自动清除，同时控制模式恢复为CAN控制模式。

模式设定帧用于设定HUNTER 2.0的控制接口，协议具体内容如表3.4所示 表格3.4控制模式设定指令 。

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

控制模式说明：HUNTER 2.0 在开机上电，遥控器未连接的情况下，控制模式默认是待机模式，此时底盘只接收控制模式指 令，其他指令不做响应，要使用CAN进行控制需要先切换到CAN指令模式。若打开遥控器，遥控器具有最高权限，可以屏蔽 指令的控制，切换控制模式。

状态置位帧用于清除系统错误，协议内容如表3.5所示，

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

| 指令名称      |        |    控制模式设定指令   |                                                                                                                                                                |
| --------- | ------ | :-----------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------: |
| 发送节点      | 接收节点   |       ID      |                                                                        周期（ms）  接收超时(ms)                                                                        |
| 决策控制单元    | 底盘节点   |     0x441     |                                                                      无                  无                                                                      |
| 数据长度      | 0x01   |               |                                                                                                                                                                |
| 位置        | 功能     |      数据类型     |                                                                               说明                                                                               |
| byte \[0] | 错误清除指令 | unsigned int8 | <p>0x00清除全部非严重故障</p><p>0x01清除转向电机驱动器通讯故障</p><p>0x02清除后右电机驱动器通讯故障</p><p>0x03 清除后左电机驱动器通讯故障</p><p>0x05 清除电池欠压故障</p><p>0x06 清除转向编码器通讯故障</p><p>0x07 清除遥控信号丢失故障</p> |

\[注]示例数据，以下数据仅供测试使用&#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

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

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

在底盘中四个电机电机编号对应为：转向1号，右后轮2号，左后轮3号

电机转速电流位置信息反馈如表3.6、3.7所示。

#### 表格3.6电机驱动器高速信息反馈帧

| 指令名称                                                             |                                                  |              |   电机驱动器高速信息反馈帧   |
| ---------------------------------------------------------------- | ------------------------------------------------ | :----------: | :--------------: |
| 发送节点                                                             | 接收节点                                             |      ID      | 周期（ms）  接收超时(ms) |
| 线控底盘                                                             | 决策控制单元                                           | 0x251\~0x253 |   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> | signed int32 |   电机当前位置 单位：脉冲数  |

#### 表格3.7电机驱动器低速信息反馈帧

| 指令名称                             |                                |                | 电机驱动器低速信息反馈帧             |
| -------------------------------- | ------------------------------ | :------------: | ------------------------ |
| 发送节点                             | 接收节点                           |       ID       | 周期（ms）      接收超时(ms)     |
| 线控底盘                             | 决策控制单元                         |  0x261\~0x263  | 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 | 详见\[驱动器控制状态]             |
| byte \[6]                        | 保留                             |        -       | 0x00                     |
| byte \[7]                        | 保留                             |        -       | 0x00                     |

驱动器状态信息具体内容如表3.8所示。

#### 表格3.8驱动器状态说明

|           |   驱动器状态  |                     |
| --------- | :------: | :-----------------: |
| 字节        |     位    |          说明         |
|           | bit \[0] | 电源电压是否过低（0：正常 1：过低） |
|           | bit \[1] |  电机是否过温（0：正常 1：过温）  |
|           | bit \[2] |  驱动器是否过流（0：正常 1：过流） |
| byte \[5] | bit \[3] |  驱动器是否过温（0：正常 1：过温） |
|           | bit \[4] |   传感器状态（0：正常 1：异常）  |
|           | bit \[5] |  驱动器错误状态（0：正常 1：错误） |
|           | bit \[6] |  驱动器使能状态（0：失能 1：使能） |
|           | bit \[7] |          保留         |

驻车控制指令用于控制驱动轮的电机抱闸，协议具体内容如表3.9所示。

#### 表格3.9驻车控制指令

|    指令名称   |           |     驻车控制指令    |                                                                   |
| :-------: | :-------: | :-----------: | :---------------------------------------------------------------: |
|    发送节点   |    接收节点   |       ID      |                          周期（ms）  接收超时(ms)                         |
|   决策控制单元  |    底盘节点   |     0x131     |                       无                    无                      |
|    数据长度   |    0x01   |               |                                                                   |
|     位置    |     功能    |      数据类型     |                                 说明                                |
| byte \[0] | 设定当前位置为零点 | unsigned int8 | <p>0x00关闭驻车(解锁抱闸)</p><p>0x01打开驻车(锁抱闸)</p><p>抱闸需要解锁才能进行底盘的速度控制</p> |

转向零点设定和反馈指令用于校准零位，协议具体内容如表3.10、3.11所示。

#### 表格3.10转向零点设定指令

|    指令名称   |                         |               |             转向零点设定指令            |
| :-------: | :---------------------: | :-----------: | :-----------------------------: |
|    发送节点   |           接收节点          |       ID      |          周期（ms）接收超时(ms)         |
|   决策控制单元  |           底盘节点          |     0x431     |       无                 无       |
|    数据长度   |           0x01          |               |                                 |
|     位置    |            功能           |      数据类型     |                说明               |
| byte \[0] | <p>设定当前位置</p><p>为零点</p> | unsigned int8 | <p>设置当前位置为零点</p><p>固定值：0xAA</p> |

#### 表格3.11转向零点设定反馈指令

| 指令名称      |                        |   转向零点设定反馈指令  |                        |
| --------- | ---------------------- | :-----------: | :--------------------: |
| 发送节点      | 接收节点                   |       ID      |     周期（ms）接收超时(ms)     |
| 决策控制单元    | 底盘节点                   |     0x43A     | 无                    无 |
| 数据长度      | 0x01                   |               |                        |
| 位置        | 功能                     |      数据类型     |           说明           |
| byte \[0] | <p>应答转向</p><p>零点设置</p> | unsigned int8 |    0xEE 设置当前位置为零点成功    |

BMS数据反馈帧如表3.12、3.13所示。

#### 表格3.12BMS数据反馈

| 指令名称                             |                                |     BMS数据反馈    |                        |
| -------------------------------- | ------------------------------ | :------------: | :--------------------: |
| 发送节点                             | 接收节点                           |       ID       |     周期（ms）接收超时(ms)     |
| 线控底盘                             | 决策控制单元                         |      0x361     | 500ms                无 |
| 数据长度                             | 0x08                           |                |                        |
| 位置                               | 功能                             |      数据类型      |           说明           |
| byte \[0]                        | 电池SOC                          |  unsigned int8 |        范围 0\~100       |
| byte \[1]                        | 电池SOH                          |  unsigned int8 |        范围 0\~100       |
| <p>byte \[2]</p><p>byte \[3]</p> | <p>电池电压值高八位</p><p>电池电压值低八位</p> | unsigned int16 |        单位：0.01V        |
| <p>byte \[4]</p><p>byte \[5]</p> | <p>电池电流值高八位</p><p>电池电流值低八位</p> |  signed int16  |         单位：0.1A        |
| <p>byte \[6]</p><p>byte \[7]</p> | <p>电池温度高八位</p><p>电池温度低八位</p>   |  signed int16  |         单位：0.1℃        |

#### 表格3.13BMS状态反馈

|    指令名称   |                  |    BMS状态反馈    |                                           |
| :-------: | :--------------: | :-----------: | :---------------------------------------: |
|    发送节点   |       接收节点       |       ID      |               周期（ms）接收超时(ms)              |
|    线控底盘   |      决策控制单元      |     0x362     |           500ms                无          |
|    数据长度   |       0x04       |               |                                           |
|     位置    |        功能        |      数据类型     |                     说明                    |
| byte \[0] |  Alarm Status 1  | unsigned int8 | BIT1：过压 BIT2：欠压 BIT3：高温 BIT4：低温 BIT7：放电过流 |
| byte \[1] |  Alarm Status 2  | unsigned int8 |                 BIT0：充电过流                 |
| byte \[2] | Warning Status 1 | unsigned int8 | BIT1：过压 BIT2：欠压 BIT3：高温 BIT4：低温 BIT7：放电过流 |
| byte \[3] | Warning Status 2 | unsigned int8 |                 BIT0：充电过流                 |

里程计信息反馈帧如表3.14所示。

#### 表格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 | <p>底盘左轮里程计反馈 </p><p>单位：mm</p> |
| <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 |  <p>底盘右轮里程计反馈</p><p>单位：mm</p> |

遥控器信息反馈帧如图3.15所示。

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

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

#### 3.3.2 CAN线的连接

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

![图 3.2 航空插头公头示意图](/files/-MgiA-q6uWmDZwDQx3_h)

### 3.4 固件升级

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

#### 升级准备&#x20;

串口线 X 1&#x20;

USB转串口 X 1&#x20;

HUNTER 2.0底盘 X 1&#x20;

电脑(WINDOWS 操作系统) X 1

#### 升级过程

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

使用串口线连接至HUNTER 2.0底盘顶部串口；

串口线连接至电脑；&#x20;

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

选择端口号；&#x20;

HUNTER 2.0底盘上电，立即点击开始连接（HUNTER 2.0 底盘会在上电前3S等待，如果时间超过3S则会断开进入 应用程序）；

若连接成功，会在文本框提示“连接成功”；&#x20;

加载BIN文件；&#x20;

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

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

![图 3.3 固件升级客户端界面](/files/-MgiAqF0E1ewQ3wPLha5)

### 3.5 HUNTER2.0 ROS Package 使用示例

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

#### 开发准备

硬件准备

CANlight can通讯模块 X1&#x20;

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

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

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

AGILEX HUNTER 2.0 顶部航空插座 X1

使用示例环境说明

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

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

Git

#### 硬件连接与准备

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

打开HUNTER 2.0移动机器人底盘旋钮开关，检查来两侧的急停开关是否释放；

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

![图3.4CAN线连接示意图](/files/-Mgi_NvFRE1oFRTxvfDn)

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

安装具体可以参考<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已经和HUNTER 2.0机器人相连，且 小车已经开启的情况下，使用下列指令可以监听来自 HUNTER 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ded-System/Linux/can-bus-in-linux.html>)

#### AGILEX HUNTER 2.0 ROS PACKAGE 下载与编译

下载ros 依赖包

`$ sudo apt install libasio-dev`

`$ sudo apt install ros-$ROS_DISTRO-teleop-twistkeyboard`

克隆编译hunter\_2\_ros源码

`$ cd ~/catkin_ws/src`

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

`$ git clone https://github.com/agilexrobotics/ hunter_ros.git`

`$ cd ..`

`$ catkin_make`

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

#### 启动ROS 节点

启动基础节点

`$ roslaunch hunter_bringup hunter_robot_base.launch`

启动键盘远程操作节点

`$ roslaunch hunter_bringup hunter_teleop_keyboard.launch`


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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://agilexrobotics.gitbook.io/hunter-2-0/3-shi-yong-yu-kai-fa-getting-started.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.
