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