3 使用与开发 Getting Started

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

3.1 使用与操作

检查

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

检查急停开关状态。确认尾部Q6急停按钮处于释放 状态;

初次使用时确认尾部电气面板中Q2(电源开关)是否 被按下,如按下,请按下后释放,则处于释放状态;

启动

按下电源开关(电气面板中Q2),正常情况下,电源开 关的灯会亮起,电压表正常显示电池电压;

检查电池电压,如电压大于48V,表示电池电压正常, 若电量低,请充电;

关闭操作

按下电源开关,即可切断电源;

急停

按下BUNKER车体尾部的急停开关即可;

遥控控制基本操作流程

正常启动BUNKER机器人底盘后,启动遥控器,将控制模式选择为遥控控制模式,即可通过遥控器控制BUNKER 平台运动。

3.2 充电

BUNKER产品默认随车配备一个标准充电器,可满足客户的充电需求。

充电具体操作流程如下:

确保BUNKER底盘处于停机断电状态。充电前请确认尾部电气控制台中Q2(电源开关)处于关闭状态;

将充电器的插头插入车尾电气控制面板中Q3充电接口;

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

默认充电时,底盘没有指示灯,具体是否正在充电需要看充电器的状态指示。

3.3 开发

BUNKER产品针对用户的开发提供了CAN接口,用户可通过该接口对车体进行指令控制。

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

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

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

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

指令名称

系统状态回馈指令

发送节点

接收节点

ID

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

线控底盘

决策控制单元

0x211

200ms 无

数据长度

0x08

位置

功能

数据类型

说明

byte [0]

当前车体状态

unsigned int8

0x00 系统正常

0x01 紧急停车模式

0x02 系统异常

byte [1]

模式控制

unsigned int8

0x00 待机模式

0x01 CAN指令控制模式

0x03遥控控制模模式

byte [2]

byte [3]

电池电压高八位

电池电压低八位

unsigned int16

实际电压X 10 (精确到0.1V)

byte [4]

保留

-

0x00

byte [5]

故障信息

unsigned int8

详见[故障信息说明]

byte [6]

保留

-

0x00

byte [7]

计数校验 (count)

unsigned int8

0~255循环计数,每发送一条指令计数加一次

表格 3.2 故障信息说明表

故障信息说明

字节

含义

bit [0]

电池欠压故障

bit [1]

电池欠压警告

bit [2]

遥控器失联保护(0:正常,1:遥控器失联)

byte [5]

bit [3]

驱动1通讯故障(0:无故障,1:故障)

bit [4]

驱动2通讯故障(0:无故障,1:故障)

bit [5]

预留,默认0

bit [6]

预留,默认0

bit [7]

预留,默认0

运动控制回馈帧指令包含了当前车体的运动线速度、运动角速度回馈,协议具体内容如表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所示。

表格 3.4 运动控制指令控制帧

指令名称

控制指令

发送节点

接收节点

ID

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

决策控制单元

底盘节点

0x111

20ms 无

数据长度

0x08

位置

功能

数据类型

说明

byte [0]

byte [1]

线速度高八位

线速度低八位

signed int16

车体行进速度,单位mm/s,值域[-1500,1500]

byte [2]

byte [3]

角速度高八位

角速度低八位

signed int16

车体旋转角速度,单位0.001rad/s, 值域[-1000,1000]

byte [4]

保留

--

0x00

byte [5]

保留

--

0x00

byte [6]

保留

--

0x00

byte [7]

保留

--

0x00

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

表格 3.5 控制模式设定帧

指令名称

控制模式设定指令

发送节点

接收节点

ID

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

决策控制单元

底盘节点

0x421

20ms 500ms

数据长度

0x01

位置

功能

数据类型

说明

byte [0]

CAN控制使能

unsigned int8

0x00 待机模式

0x01 CAN指令模式使能

注[1]控制模式说明

BUNKER在遥控器不上电的情况下,控制模式默认是待机模式,需要切换到指令模式才能发送运动控制指令。若打 开遥控器,遥控器拥有最高权限,可以屏蔽指令的控制。当遥控器切换到指令模式时,还是需要先发送控制模式设 定指令才能响应速度指令。

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

表格 3.6状态置位帧

指令名称

状态设定指令

发送节点

接收节点

ID

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

决策控制单元

底盘节点

0x441

无 无

数据长度

0x01

位置

功能

数据类型

说明

byte [0]

错误清除指令

unsigned int8

0x00 清除所有错误

0x01 清除电机1错误

0x02 清除电机2错误

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

1.小车以0.15/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]

保留

0x00

byte [3]

驱动器温度低八位

单位1℃

byte [4]

保留

0x00

byte [5]

驱动器状态

详见表3-9

byte [6]

保留

0x00

byte [7]

保留

0x00

表格 3.8 电机温度电压及状态信息反馈

指令名称

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

发送节点

接收节点

ID

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

线控底盘

决策控制单元

0x261~0x264

无 无

数据长度

0x08

位置

功能

数据类型

说明

byte [0]

byte [1]

保留

保留

--

0x00

0x00

byte [2]

byte [3]

驱动器温度高八位

驱动器温度低八位

signed int16

单位1℃

byte [4]

保留

--

0x00

byte [5]

驱动器状态

unsigned int8

详见表3-9

byte [6]

保留

--

0x00

byte [7]

保留

--

0x00

表格 3.9驱动器状态

字节

含义

bit [0]

电源电压是否过低(0:正常 1:过低)

bit [1]

电机是否过温(0:正常 1:过温)

bit [2]

保留

byte [5]

bit [3]

保留

bit [4]

保留

bit [5]

保留

bit [6]

保留

bit [7]

保留

表格 3.10里程计反馈帧

指令名称

里程计信息反馈帧

发送节点

接收节点

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.11 遥控器信息反馈

指令名称

遥控器信息反馈帧

发送节点

接收节点

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

byte [7]

计数校验

unsigned int8

0-255循环计数

3.3.2 CAN线的连接

BUNKER随车发货提供了一个航空插头公头如图3.2,线的定义 黄色为CANH、蓝色为CANL、红色为电源正、黑色为电源负。

图 3.2 航空插头公头示意图

注:当前BUNKER版本对外扩展接口仅顶部接口开放。此版本 中电源最大可提供10A的电流。

3.3.3 CAN指令控制的实现

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

3.4固件升级

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

图 3.3 固件升级客户端界面

升级准备

串口线 X 1

USB转串口 X 1

BUNKER 底盘 X 1

电脑(WINDOWS 操作系统) X 1

固件升级软件

升级准备

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

使用串口线连接至BUNKER底盘升级串口(需拆卸后电气板);

串口线连接至电脑;

打开客户端软件;

选择端口号;

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

加载BIN文件;

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

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

3.5 BUNKER ROS Package 使用示例

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

开发准备

硬件准备

CANlight can通讯模块 X1

Thinkpad E470 笔记本电脑 X1

AGILEX BUNKER 移动机器人底盘 X1

AGILEX BUNKER配套遥控器FS-i6s X1

AGILEX BUNKER顶部航空插座 X1

使用示例环境说明

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

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

Git

硬件连接与准备

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

打开BUNKER移动机器人底盘旋钮开关,检查来两侧的急停开关是否释放;

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

图3.4CAN线连接示意图

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

$ 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 BUNKER ROS PACKAGE 下载与编译

下载ros 依赖包

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

$ sudo apt install libasio-dev

克隆编译bunker_ros源码

$ cd ~/catkin_ws/src

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

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

$ cd ..

$ catkin_make

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

启动ROS 节点

启动基础节点

$ roslaunch bunker_bringup bunker_minimal.launch

启动键盘远程操作节点

$ roslaunch bunker_bringup bunker_teleop_keyboard.launch

Last updated

Was this helpful?