3 使用与开发 Getting Started

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

3.1 使用与操作

检查

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

检查急停开关状态。确认两个急停按钮均处于释放状态;

启动

旋转旋钮开关(电气面板中Q4),正常情况下,电压表正常显示 电池电压,前后尾灯均正常亮起;

检查电池电压,如未有“滴-滴-滴…”连续蜂鸣器声音,表示电 池电压正常,若电量低,请充电;

关闭操作

旋转旋钮开关,即可切断电源。

急停

按下SCOUT2.0车体左右两侧的急停开关即可。

遥控控制基本操作流程

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

3.2 充电

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

3.2.1充电具体操作流程

确保SCOUT2.0底盘处于停机断电状态。充电前请确认尾部电 气控制台中Q1(旋钮开关)处于关闭状态;

将充电器的插头插入车尾电气控制面板中Q2充电界面中;

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

注意:当前电池从22V充满电状态大约需要3小时,电池 充满电电压约为29.2V(此处的电池电压为三元锂电池 类型,如果电池类型为磷酸铁锂最高电压为26.8V);充 电时间计算30aH÷10A=3H。

3.2.2 更换电池

SCOUT2.0为了方便用户采取了可拆卸电池方案,在一些特殊情 况下直接可以更换电池,操作步骤和示意图如下(操作之前确保 SCOUT2.0是断电状态):

把SCOUT2.0上面舱室面板打开,将主控板上两个XT60电源接 头(两个接头是等效的)和电源CAN线接头拔掉;

把SCOUT2.0悬空,从底部用国标内六角扳手拧下八颗螺钉,然 后将电池拖出;

将需要更换的电池装上,把底部螺钉固定;

把XT60接口和电源CAN线接口插到主控板,确认所有连接线正 确之后然后上电测试;

3.3 开发

SCOUT2.0产品针对用户的开发提供了CAN和RS232的接口,用户可选择其中一种接口对车体进行指令控制。

3.3.1 CAN线的连接

SCOUT2.0随车发货提供了两个航空插头公头如图3.2。线的定义可 参考表2.2。

3.3.2 CAN指令控制的实现

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

3.3.3 CAN接口协议

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

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

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

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

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

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

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

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

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

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

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

2.小车以0.2RAD/S旋转

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

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

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

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

3.4串口通信协议

3.4.1 串口协议介绍

它是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯 的标准。它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”该标准规定采用 一个25个脚的DB-25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。后来IBM的PC机 将RS232简化成了DB-9连接器,从而成为事实标准。而工业控制的RS-232口一般只使用RXD、TXD、GND三条线。

3.4.2 串口的连接

使用我们的通讯配套工具里面的USB转RS232串口线,与车尾部的串口相连,使用串口工具,设置好相应波特率,使用上 面提供的示例数据即可测试,如果遥控器是开启的状态,需要将遥控器切换至指令控制模式,如果遥控器未开启,直接发 送控制指令即可,需要注意的是,指令必须要是周期性的发送,如果底盘超过500MS未接收到串口指令,进入失联保护状 态。

3.4.3 串口协议内容

通讯基本参数

协议说明

协议包含起使位,帧长度,帧指令类型,指令ID,数据域,帧ID, 校验和组成。其中帧长度是指除去起始位和校验和以外的长 度,校验和为起使位到帧ID所有数据求和;帧ID位0~255循环计数,每发送一条指令计数自加一次。

串口校验算法代码示例

// Some code
/**
*@brief serial message checksum example code 
*@param[in] *data : serial message data struct pointer 
*@param[in] len :serial message data length
*@return the checksum result
*/

static uint8 Agilex_SerialMsgChecksum(uint8 *data, uint8 len)
{
    uint8 checksum = 0x00;
    for(uint8 i = 0 ; i < (len-1); i++)
    {
        checksum += data[i];
    }
}

协议内容

注[1]:机器人底盘固件版本V1.2.8后续版本支持,之前版本需要升级固件方可支持

运动控制回馈指令

运动控制指令

控制模式设定指令

状态设定指令

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

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

灯光控制帧

灯光控制反馈帧

里程计反馈帧

版本信息请求帧

版本信息反馈帧

遥控信息反馈帧

BMS反馈帧

示例数据

通过控制底盘以0.15m/s的线速度进行前进运动,下面是具体数据内容

下面是数据域内容:

整串数据内容为:5A A5 0A 55 01 00 96 00 00 00 00 00 F5

其他说明:本协议需要固件版本V1.5.12以上

3.5固件升级

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

升级准备

串口线 X 1

USB转串口 X 1

SCOUT2.0 底盘 X 1

电脑(WINDOWS 操作系统) X 1

固件升级软件

升级过程

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

使用串口线连接至SCOUT2.0底盘顶部串口;

串口线连接至电脑;

打开客户端软件;

选择端口号;

SCOUT2.0底盘上电,立即点击开始连接(SCOUT2.0底 盘会在上电前3S,如果时间超过3S则会进入应用程序);

若连接成功,会在文本框提示“连接成功”;

加载BIN文件;

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

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

3.6 SCOUT2.0 SDK 使用示例

为了使用户更加便捷的进行机器人相关方面的开发,我 们针对SCOUT2.0移动机器人平台开发了相应的跨平台 支持的SDK。SDK软件包中提供一个基于C++接口,用于 与SCOUT2.0移动机器人底盘进行通讯,可以获取机器人 的最新状态和控制机器人的基本动作。目前通讯适配的 有CAN和RS232。我们在NVIDIA JETSON TX2进行了相关 测试。

3.7 SCOUT2.0 ROS Package 使用示例

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

开发准备

硬件准备:

CANlight can通讯模块 X1

Thinkpad E470 笔记本电脑 X1

AGILEX SCOUT 2.0 移动机器人底盘 X1

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

AGILEX SCOUT 2.0顶部航空插座 X1

使用示例环境说明:

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

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

Git

硬件连接与准备

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

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

将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 2.0 机器人相连,且 小车已经开启的情况下,使用下列指令可以监听来自 SCOUT 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 2.0 ROS PACKAGE 下载与编译

下载ros 依赖包

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

$ sudo apt install libasio-dev

克隆编译scout_ros源码

$ 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_ros

启动ROS 节点

启动基础节点

$ roslaunch scout_bringup scout_minimal.launch

启动键盘远程操作节点

$ roslaunch scout_bringup scout_teleop_keyboard.launch

Last updated

Was this helpful?