3 使用与开发 Getting Started

本部分主要介绍SCOUT MINI平台的基本操作与使用 ,介绍如何通过外部CAN口 ,通过CAN总线协议来对车体进行二次开发。

3.1 使用与操作

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

检查

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

启动

按下SCOUT MINI电源按键,等待数秒即可;

将SWB拨至中间;

可尝试手动切换灯光模式,确定模式选择是否正确;

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

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

释放左边摇杆,小车停下;

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

尝试将右边摇杆轻轻往右推,推一小部分即可,可见小车 缓慢往右旋转;

释放右边摇杆,小车停下;

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

关闭操作

按下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。

注 : 当前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底盘的状态信息等。

协议包含系统状态回馈帧、运动控制回馈帧、控制帧,协议内容具体如下:

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

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

指令名称

系统状态回馈指令

发送节点

接收节点

ID

周期(ms) 接收超时(ms)

线控底盘

决策控制单元

0x211

200ms 无

数据长度

0x08

位置

功能

数据类型

说明

byte [0]

当前车体状态

unsigned int8

0x00 系统正常

0x02 系统异常

byte [1]

模式控制

unsigned int8

0x00 待机模式

0x01 CAN指令控制模式

0x02 串口控制模模式[1]

0x03遥控控制模模式

byte [2]

byte [3]

电池电压高八位

电池电压低八位

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

位置

功能

数据类型

说明

byte [0]

byte [1]

移动速度高八位

移动速度低八位

signed int16

实际速度X 1000 (精确到0.001m/s)

byte [2]

byte [3]

旋转速度高八位

旋转速度低八位

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

位置

功能

数据类型

说明

byte [0]

byte [1]

线速度高八位

线速度低八位

signed int16

车体行进速度,单位mm/s,

值域 [-3000,3000]

byte [2]

byte [3]

角速度高八位

角速度低八位

signed int16

车体旋转角速度,单位0.001rad/s,

值域[-2523,2523]

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

0x00 待机模式

0x01 CAN指令模式使能

控制模式说明:

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

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

表格 3.6状态置位帧

指令名称

状态设定指令

发送节点

接收节点

ID

周期(ms) 接收超时(ms)

决策控制单元

底盘节点

0x441

无 无

数据长度

0x01

位置

功能

数据类型

说明

byte [0]

错误清除指令

unsigned int8

0x00 清除所有错误

0x01 清除电机1错误

0x02 清除电机2错误

0x03 清除电机3错位

0x04 清除电机4错误

[注3]示例数据,以下数据仅供测试使用

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

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

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

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

指令名称

电机驱动器高速信息反馈帧

发送节点

接收节点

ID

周期(ms) 接收超时(ms)

线控底盘

决策控制单元

0x251~0x254

20ms 无

数据长度

0x08

位置

功能

数据类型

说明

byte [0]

byte [1]

电机转速高八位

电机转速低八位

signed int16

电机当前转速 单位RPM

byte [2]

byte [3]

电机电流高八位

电机电流低八位

signed int16

电机当前电流 单位0.1A

byte [4]

byte [5]

byte [6]

byte [7]

保留

保留

保留

保留

--

0x00

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

指令名称

电机驱动器低速信息反馈帧

发送节点

接收节点

ID

周期(ms) 接收超时(ms)

线控底盘

决策控制单元

0x261~0x264

100ms 无

数据长度

0x08

位置

功能

数据类型

说明

byte [0]

byte [1]

驱动器电压高八位

驱动器电压低八位

unsigned int16

当前驱动器电压 单位0.1V

byte [2]

byte [3]

驱动器温度高八位

驱动器温度低八位

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

0x00 控制指令无效

0x01灯光控制使能

byte [1]

前侧灯光模式

unsigned int8

0x00 常关

0x01 常开

0x02 呼吸灯模式

0x03 客户自定义亮度

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

0x00 控制指令无效

0x01灯光控制使能

byte [1]

当前前侧灯光模式

unsigned int8

0x00 常关

0x01 常开

0x02 呼吸灯模式

0x03 客户自定义亮度

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

位置

功能

数据类型

说明

byte [0]

byte [1]

主控硬件版本号高八位

主控硬件版本号低八位

unsigned int16

高八位为主版本号,低八位为次版本号

byte [2]

byte [3]

驱动器硬件版本号高八位

驱动器硬件版本号低八位

unsigned int16

高八位为主版本号,低八位为次版本号

byte [4]

byte [5]

主控软件版本号高八位

主控软件版本号低八位

unsigned int16

高八位为主版本号,低八位为次版本号

byte [6]

byte [7]

驱动器软件版本号高八位

驱动器软件版本号低八位

unsigned int16

高八位为主版本号,低八位为次版本号

表格 3.14 里程计信息反馈

指令名称

里程计信息反馈

发送节点

接收节点

ID

周期(ms) 接收超时(ms)

线控底盘

决策控制单元

0x311

20ms 无

数据长度

0x08

位置

功能

数据类型

说明

byte [0]

byte [1]

byte [2]

byte [3]

左轮里程计最高位

左轮里程计低高位

左轮里程计次低位

左轮里程计最低位

signed int32

底盘左轮里程计反馈 单位:mm

byte [4]

byte [5]

byte [6]

byte [7]

右轮里程计最高位

右轮里程计次高位

右轮里程计次低位

右轮里程计最低位

signed int32

底盘右轮里程计反馈 单位:mm

表格 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]

右边拨杆左右

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所示。

升级准备

串口线 X 1

USB转串口 X 1

SCOUT MINI 底盘 X 1

电脑(Windows 操作系统) X 1

固件升级软件

升级过程

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

使用串口线连接至SCOUT MINI底盘内部串口;

串口线连接至电脑;

打开客户端软件;

选择端口号;

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

加载Bin文件;

点击升级,等待升级完成的提示即可;

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

3.5 SCOUT MINI 2.0 ROS Package 使用示例

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

开发准备

硬件准备

CANlight can通讯模块 X1

Thinkpad E470 笔记本电脑 X1

AGILEX SCOUT MINI 2.0 移动机器人底盘 X1

AGILEX SCOUT MINI 2.0配套遥控器FS-i6s X1

AGILEX SCOUT MINI 2.0顶部航空插座 X1

使用示例环境说明

Ubuntu 16.04 LTS(此为测试版本,在Ubuntu 18.04 LTS测试过)

ROS Kinetic (后续版本亦测试过)

Git

硬件连接与准备

将SCOUT MINI尾部航空插头或者尾部插头CAN线引出,将CAN线中的CAN_H和CAN_L分别与CAN_TO_USB适配器相连;

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

将CAN_TO_USB连接至笔记本的usb口。连接示意如图3.4所示。

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已经和SCOUT MINI 2.0机器人相连, 且小车已经开启的情况下,使用下列指令可以监听来 自SCOUT MINI 2.0底盘的数据了

$ candump can0

参考来源: [1] https://github.com/agilexrobotics/agx_sdk [2]https://wiki.rdu.im/_pages/Notes/Embedded-System/Linux/can-bus-in-linux.html

AGILEX SCOUT MINI 2.0 ROS Package 下载与编译

下载ros 依赖包

$ sudo apt install -y libasio-dev

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

克隆编译scout mini_ros 2.0源码

$ cd ~/catkin_ws/src

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

$ git clone https://github.com/agilexrobotics/scout_ros.git

$ cd ..

$ catkin_make

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

启动ROS 节点

启动基础节点

$ roslaunch scout_bringup scout_mini_robot_base.launch

启动键盘远程操作节点

$ roslaunch scout_bringup scout_teleop_keyboard.launch

Last updated