[公开] HEXMOVE 文档
- HEXMOVE 文档索引
- 快速使用指南
- FAQ
- 产品资料
- ROS 使用指南
- XSTD 标准化通讯接口
- 硬件连接标准
- CAN总线配置
- CAN协议构架说明
- COM协议构架说明
- 通用CAN协议标准
- 底盘类CAN协议标准
- 运载平台类CAN协议标准
- 灯光类CAN协议标准
- 电源类CAN协议标准
- 电子开关类CAN协议标准
- 惯导类CAN协议标准
- 应用软件
- xpkg_carrier Interface Description
HEXMOVE 文档索引
快速使用指南
第一次使用请先阅读快速使用指南来了解大概的使用步骤
FAQ
如遇到问题请先查阅FAQ,常见问题基本都可以解决
产品资料
产品资料包含对应的用户手册与简化模型,URDF模型请查阅ROS使用指南
ROS使用指南
XSTD 标准化通讯接口
-
硬件连接标准
-
CAN总线配置
-
CAN协议构架说明
-
COM协议构架说明
-
通用CAN协议标准
-
底盘类CAN协议标准
-
移动平台类CAN协议标准
-
灯光类CAN协议标准
-
电源类CAN协议标准
-
电子开关类CAN协议标准
-
惯导类CAN协议标准
应用软件
快速使用指南
第一次使用设备请按以下步骤执行:
- 下载并查阅 产品用户手册和简化模型,特别是遥控器控制部分
- 将底盘架起,确保轮子都离开地面
- 打开底盘电源,听到蜂鸣声4声升调代表开机正常,观察电量显示是否正常
- 如果有遥控器请拨到CAN模式,切换遥控控制模式请查阅产品用户手册
- 缓慢推动遥控器摇杆,观察运动是否正常
- 关闭电源,连接好CAN和电源线,请查阅 CAN硬件连接标准和CAN总线配置
- 使用ROS的用户请安装ROS包,请查阅 ROS-SDK
- 使用ROS的demo,请查阅 ROS-demo
- 如有测试需求,可以下载 测试系统XVIEW
- 如果直接使用CAN指令控制,请先阅读CAN协议框架说明,然后阅读具体设备类的CAN协议标准,并配合XVIEW或者CAN分析仪使用,操作流程如下:
-
-
将产品用户手册中的型号和编号(默认为1)替换标准CAN协议中的对应部分,例如NEOS底盘ID如下图
替换 底盘类CAN协议标准中下面对应的型号和编号
-
使用xview调试请先阅读连接设备的方法
-
通讯设备中CAN-COM HUB是支持串口和CAN调试的,WIFI HUB只支持串口调试:
-
如果使用串口来调试,进入XVIEW->工具->COM助手,如下图:
-
请先点击
XSTD标准设置再打开串口,然后直接填入数据发送标准消息即可,如下图: -
计算校验和,参考串口通讯协议部分。使用xview计算校验和,会自动算出SUM值,如下图,其他串口功能请在XVIEW内置的说明中查看:
- 如果使用CAN调试则进入XVIEW->工具->CAN分析仪
-
如果设备没有反应,可能是指令输入有误或错误更改了编号等参数,可通过xview直接示教:
- 请先确保遥控器关闭或切换至CAN模式,具体可在底盘手册里查看
- 连接好HUB到电脑,并重启设备
- 点击 xview->底盘->通讯消息
- 点击 连接->使能设备->CAN模式
- 拖动虚拟摇杆
以上步骤可以参考前面的xview使用内容,确定底盘能运动后,观察SEND MESSAGE框内内容,每次点击按钮发出的指令都会在该处显示,可更具需要复制对应的到串口发送,如下图:
-
FAQ
提示 可通过右上角search快速寻找关键词
如何使用 SDK / 如何控制机器人移动
查阅使用ROS的demo。
SDK 刚安装时可以通过编译, 过一阵后无法通过编译
SDK 的 ROS 版本不能混用. 在 ROS1 下载的 SDK 无法在 ROS2 环境下通过编译。
-
外置 CAN HUB 用户, 请检查 CAN HUB 是否已经插入, USB线/CAN线 是否松动。 可以通过在终端使用
ip a命令检查是否有获取到相应的IP地址 -
如果是刚刚完成 SDK 的安装, 可能需要先重启电脑.
使用 ROS TOPIC 查看时,看到一些如 gps/arm 等并未购买的配件的 topic
发布 topic 的包为通用包,这些其他 topic 是给其他设备使用的。如果没有选配则没有任何影响,可以放心忽略。
多模电源如何能上电自动输出
多模电源有AUTO和MANU两种启动模式,在侧面有切换开关,请查阅多模电源用户手册
底盘移动过程中偶尔停顿或者失联
可能是CAN总线接头处没处理好出现偶发短路,请检查接线
产品资料
产品选型指南
底盘类设备
提示
产品资料链接中包含用户手册和 STEP 简化模型。
可使用XVIEW测试系统来测试底盘通讯和运动:XVIEW测试系统
HAMMER-80
TRIGGER-A
ARK
ARK-MINI
RAY
ORCS-DIFF
ORCS-MCNM
ORCS-MCNM-PRO
ORCS-MINI
NEOS
轮系类设备
轮系类设备
模组化麦克纳姆轮
通讯类设备
通讯类设备
提示
可使用XVIEW测试系统来测试设备通讯和工作
WiFi HUB
电源类设备
电源类设备
提示
可使用XVIEW测试系统来测试设备通讯和工作
多模电源
AUTO CHARGER-E
AUTO CHARGER-G
ROS 使用指南
ROS-SDK
安装 ROS 软件包
提示
支持的架构:
- x64
- arm64
注意, 不支持 RISCV
支持的ROS版本范围:
Ubuntu 20.04
- ROS1: Noetic
- ROS2: Foxy, Galactic
Ubuntu 22.04
- ROS2: Humble, Iron
注意, 不支持 Ubuntu18.04 版本。
如果一定要使用 Ubuntu 18.04,请在 18.04 中利用 Docker 安装其他 Ubuntu 版本。即使这样,以 Ubuntu 1804 做主机也无法支持USB格式的CAN转换器,需要购入以太网版本的 CAN 转换器。
警告 注意, 下载软件包之前, 需要先安装好 ROS. 并 source 你所需要使用的版本. 否则下载的软件包将 无法使用
SDK zip 不能单独使用。原先由 apt.hexfellow.com 安装的 ros-$ROS_DISTRO-xpkg-msgs 与 ros-$ROS_DISTRO-xpkg-comm 必须先用本页提供的 deb dpkg -i 安装(apt 站即将关闭,不要再配 hexfellow apt 源)。请按自己的 ROS 发行版和 CPU 架构下载对应两个包:
- Humble / Ubuntu 22.04 / x86_64
- Humble / Ubuntu 22.04 / arm64
- Iron / Ubuntu 22.04 / x86_64
- Iron / Ubuntu 22.04 / arm64
- Noetic / Ubuntu 20.04 / x86_64
- Noetic / Ubuntu 20.04 / arm64
以 Humble / x86_64 为例:
# 先安装官方 ROS(仍用 Ubuntu/ROS 上游源,不是 hexfellow apt)
source /opt/ros/humble/setup.bash
sudo dpkg -i ros-humble-xpkg-msgs_*.deb ros-humble-xpkg-comm_*.deb
sudo apt-get -f install -y # 若缺 ROS 依赖
同目录还有可选包(imu / vehicle / arm / bridge 等):/files/ros-sdk/debs/。底盘 SDK 最少只需 msgs + comm。静态 deb 覆盖 Noetic(20.04)、Humble/Iron(22.04);页面里提到的 Foxy/Galactic 没有对应 xpkg deb,请改用 Noetic 或 Humble。
请根据实际购买的产品,直接下载对应 SDK 压缩包(不再使用 hextool.bash / rosdl)。
- TRIGGER-A —
sdk_trigger_a_ws.zip - TRIGGER-X —
sdk_trigger_x_ws.zip - ORCS-DIFF —
sdk_orcs_diff_ws.zip - ORCS-MCNM —
sdk_orcs_mcnm_ws.zip - ORCS-MCNM-PRO —
sdk_orcs_mcnm_pro_ws.zip - ORCS-MINI —
sdk_orcs_mini_ws.zip - NEOS —
sdk_neos_ws.zip - ARK —
sdk_ark_ws.zip - ARK-MINI —
sdk_ark_mini_ws.zip - RAY —
sdk_ray_ws.zip - HAMMER-80 —
sdk_hammer_80_ws.zip - ECHO —
sdk_ehco_ws.zip - ECHO-PLUS —
sdk_echo_plus_ws.zip - MARK1-DIFF —
sdk_mark1_diff_ws.zip - MARK1-MCNM —
sdk_mark1_mcnm_ws.zip - MARK1-MCNM-PRO —
sdk_mark1_mcnm_pro_ws.zip - MARK2-MCNM —
sdk_mark2_mcnm_ws.zip - FIBOT-4A —
sdk_fibot_4a_ws.zip - FIBOT-4X —
sdk_fibot_4x_ws.zip - XGO-P —
sdk_xgo_p_ws.zip
依赖 deb 装好后,解压 SDK 并编译。以 ORCS-DIFF / ROS2 Humble 为例:
unzip sdk_orcs_diff_ws.zip
cd sdk_orcs_diff_ws
source /opt/ros/humble/setup.bash # ROS1 则 source /opt/ros/noetic/setup.bash
colcon build --symlink-install # ROS1 用 catkin_make
source install/setup.bash # ROS1 用 source devel/setup.bash
提示 为防止手敲命令敲错字符, 建议使用 Ubuntu 所带的浏览器直接打开本网址, 并将命令从浏览器中复制到终端.
SDK软件包结构说明
各个软件包大同小异, 这里以 ORCS-DIFF 为例.
root@1c2edac84f0b:~# tree -d -L 5
.
└── sdk_orcs_diff_ws
└── src
├── demo
│ └── demo_general_chassis
│ ├── demo_vehicle
│ └── tools
└── drivers
└── xpkg_vehicle
├── include
├── ini
├── launch
├── scripts
├── src
└── tools
14 directories
- demo 文件夹: 存放 demo launch 文件, 用户可以参考其中的内容编写自己的 launch 文件.
警告 注意, demo 文件夹中的 launch 文件均设计成为只能同时启动一个. 请不要同时 launch 多个 launch 文件
- drivers 文件夹: 基础机器人驱动软件, 例如充电桩(如果有), 底盘控制等
- urdf 文件夹: 用来放 URDF
- 此外,另有两个包必须用本页提供的 deb 安装(不要再用 apt.hexfellow.com)
- ros-$ROS_DISTRO-xpkg-comm 负责与底盘间的物理通信。
- ros-$ROS_DISTRO-xpkg-msgs 负责提供消息类型。
如果没有专业指导, 请勿改动除了 demo 文件夹之外的任何软件包.
使用SDK软件包
软件包提供了测试demo,请查阅使用ROS的demo
使用ROS的demo
启动前检查
请查阅 CAN硬件连接标准和CAN总线配置,确保硬件已经正确连接
请检查确保完成以下事项:
-
已经安装完成ROS-SDK,如果是第一次安装SDK,建议在 首次安装后重启 一次
-
已经通过了编译并没有报错
-
已经完成工作空间的source
-
如果使用CAN-COM HUB,请确定正确连接CAN总线,确定已经能够搜索到设备
- 在终端使用lsusb查询可看到以下设备
-
确保遥控器已经关闭;或者打开时,拨到的是 CAN 模式
关于遥控器与模式,请参阅产品用户手册中关于遥控器的部。
底盘类设备
警告 注意, 首次尝试使用软件控制机器人时,请确保机器人活动范围内没有其他障碍,或将机器人架起。
底盘的测试demo有以下两个:
* demo_basic_ctrl.launch
* demo_key_ctrl.launch
demo_basic_ctrl.launch是标准的启动文件,可以配套自动驾驶直接使用,通过使用 /cmd_vel 话题来控制机器人的移动。
demo_key_ctrl.launch是支持键盘控制的启动文件,使用 turtle_teleop_key 来利用键盘控制机器人。如果你还没有看过 ROS 的 turtlesim 教程,请先查看 turtlesim 教程。
提示 注意并不是使用方向键控制移动,请查看终端打印的使用方式提示,按下提示中的前进按钮。
成功启动launch后会得到以下终端消息
launch文件中参数设置和通讯msg请查阅src/drivers/xpkg_vehicle/README.md文件,以下解释几个关键参数:
calc_speed是设置里程计计算方式,true为用速度计算,false为用电机码盘值计算,建议采用默认false设置mode_can_lock是CAN模式锁定设置,true为强制CAN模式,如果用遥控器切换到其他模式会警告并等待恢复,设置false则由用户选择控制模式
!!!note 如果出现底盘无法控制,可能是mode_can_lock设置false,并且切换到了其他模式
rate_x是输入速度的倍率控制,1为全速,在测试时建议先设置为0.2以下
成功启动launch包后可以通过rostopic list查看ROS话题,以下为几个关键话题:
- 底盘节点向话题
/odom发送消息类型为nav_msgs/Odometry。此消息表示底盘里程计信息,包含底盘当前位姿信息以及线速度角速度信息。 - 底盘节点向话题
/tf发送消息类型为tf2_msgs/TFMessage,包含底盘tf变换信息,需要在launch参数中启动。 - 底盘节点从话题
/cmd_vel订阅消息类型为geometry_msgs/Twist。底盘接收到该消息后进行移动,其中linear.x/linear.y为线速度,angular.z为旋转角速度。
Rviz导航插件
该插件仅试用于ROS1版本
图标设置
用于设置目标点的图标大小,1.0是默认值,其他数值代表尺寸比例倍数,需要点击set刷星所有图标
marker图标由两部分组成,数字部分为该目标点的序列号,箭头部分为该目标点的停止朝向
添加目标点
- 请先使用Rviz自带功能
在地图上选取目标点
- 可通过输入X、Y、R值来微调坐标位置
- 如果需要直接前往目标点可点击 GOTO 按键
- 如果需要将目标加入到目标列表请点击 ADD GOAL TO LSIT 按键
- 如果目标与目标列表上一个目标距离过远,会在列表中自动插入中间目标值,容忍的最大距离差可在上图中修改,默认是10m
目标列表管理
- 添加后的目标点会在该列表中显示,列表中参数可以直接编辑修改,修改完成后点击 REFRESH MARKER 按键刷新所有标识
- 列表中绿色行代表下一个要执行的目标点,如果要切换下一个目标,可在列表中选择对应行,点击 SET NEXT GOAL 按键切换
- LOAD GOAL 和 SAVE GOAL用于保存和载入列表,列表将保存在ini/memory.txt中,可以在文档中直接修改数据
- 如果要删除单一目标,选择对应行,点击 DELETE GOAL 按键即可
- 如果要清空目标列表,点击 DELETE ALL GOAL 按键即可
模式选择
模式选择用于不同的列表目标点执行方式
| cycle mode | 循环模式,执行完最后一个目标点会继续执行第一个目标点 |
| sequence mode | 序列模式,执行完列表所有目标点会停止 |
| step mode | 单步模式,按列表顺序一次执行一个目标点 |
为了平滑路径可以调整Goal tolerance,进入目标点的该距离半径后会自动跳转到下一目标点,场景越小该值需要越小。该设置不影响最后的目标点到达
启动控制
- 默认情况列表会自上而下执行目标点,如果勾选 REVERSE 会反向执行目标点
- 使用 START 和 STOP 按键时由于系统问题可能需要多次点击,该控制按键只对列表中的目标点有效,启动后下一目标点信息会显示在 NEXT GOAL。
XSTD 标准化通讯接口
硬件连接标准
XSTD的标准规定了CAN接口的规范,目前所有具有CAN功能的设备皆采用此连接方式。该接口采用 EDGK3.5 4P 端子,一般为橘黄色,接线方式如下:
-
红线:V
-
黑线:G
-
黄线:CAN-H
-
绿/蓝线:CAN-L
端口定义如下图:
CAN通讯连接拓展案例如下图所示:
如果扩展网络中有电源转换器存在,请将底盘与电源先相连,防止大电流通过HUB等其他设备造成过流烧毁
端子使用时请注意正确拧开螺钉如下图,安装完成后请检查CAN是否有短路
连接底盘时请先断电,如果底盘使用航空接口一般会有方向性,请对准后插入,不要强行硬插
CAN总线配置
CAN总线原理
如果您没有购买IMU,距离传感器等独立于 底盘/机器人 设备的产品,您无需阅读本节。
读前知识点
CAN总线的物理限制要求,CAN总线的末端必须配备两个120欧姆的终端电阻。
HEXMOVE CAN 配置
HexMove的CAN设备均为CAN2.0B,500K。一般的使用场景如下图所示:
上图中的 End Device 一般是 工控机/工控机的USB转CAN 设备。结合以上使用场景,HEXMove只有两类设备默认接入了120欧姆:
- 底盘/导航塔(如上图左边的产品所示)
- CAN-HUB
HEXMove 提供的所有 CAN 转接器都默认开启 120 欧,这意味着您使用时,只需要保证最后一个插着的设备是CAN-HUB即可。如果您使用自己的CAN转接设备,需要保证转接设备上的120欧正确接入。
但如果您没有结合我们的底盘/导航塔 使用,这意味着上图左边的CAN终端电阻缺失。您需要通过焊线或其他方式(如在接一个CAN-HUB挂在那里纯充当120用)确保另一头也具有120欧姆的终端电阻。
CAN协议构架说明
XSTD是一套基于CAN网络,可扩展到ROS使用的通讯协议规范。该规范为支持多设备和模组设计,在保持简洁易懂的同时提供给各模组充分的拓展空间,并支持多个同种设备同时在线工作。协议对同类型设备采用统一规范,牺牲少量效率换来极大的便捷性,非常便于早期功能开发与学习。
1.设备状态定义
使能(通讯设备默认状态)
▪设备所有功能正常运行。
▪对CAN和COM指令做出反馈。
▪默认关闭次要反馈,可通过指令开启。
失能(普通设备默认状态)
▪设备进入通讯静默状态,内部任然运行。
▪只接受通用指令,不接受专用指令。
▪只发送心跳反馈和通用指令的反馈,不发送专用指令反馈。
▪射频遥控器等设备自身安装的控制设备任然有效,并拥有更高优先级。
2.设备的分类与识别
每个设备有三个主要识别属性:大类、型号、编号
▪大类是按设备类型共分为30类,编码从0x01~0x1E,0x1F作为广播编码 。
▪型号是从0x01~0xFE的序号,在同一大类中,型号是确定且唯一的,与设备名称绑定的,0xFF下作为广播编码。
▪编号是从0x01~0xFE的序号,可以在XVIEW上设置,用于区分同大类且同型号的设备,0xFF作下为广播编码。
在使用指令时,需要对应的大类、型号、编号,对应的大类与型号代码请在对应设备的用户手册中查询。
3.指令类型
指令分为通用指令和专用指令
▪通用指令只通过CAN ID区分接受设备,数据内容对所有大类都是相同的,主要用于基础功能下设置和反馈
▪专用指令是按大类区分,每个大类的功能是不同的,同个大类中功能按需取用
▪通用指令的功能编码从0x 01开始,对应反馈从 0x A1开始(心跳包反馈为0x B0)
▪专用指令的功能编码从0x 11开始,对应反馈从 0x B1开始
4.CAN数据结构
产品中CAN通讯采用CAN2.0B(扩展帧),通讯波特率为500K。
CAN ID 编码规范:
CAN 数据位:Byte[0]~Byte[7]:
CAN使用的CAN信息为上述提到的CANID与CAN_DATA,总计12个字节数据。使用时,针对不同CANID进行相应的CAN_DATA数据传输。
CANID中大类与型号是设备的固定参数,数值不会改变,编号默认为1,当有多个同类设备同时使用时,可以通过通用指令修改。
|
CAN数据帧 |
|||||
|
数据定义 |
ID[0] |
ID[1] |
ID[2] |
ID[3] |
DATA [4~11] |
|
数据类型 |
unsigned int8 |
unsigned int8 |
unsigned int8 |
unsigned int8 |
0~8 x unsigned int8 |
|
说明 |
设备大类 |
设备型号 |
设备编号 |
设备功能 |
0~8字节数据 |
5.指令集查询说明
CAN协议分为设备通用指令与设备专用指令。通用指令操作对系统所有模块配件均适用,常见用于设备启动,系统升级,版本查询,系统复位等;设备专用指令专属于不同设备模块,不同模块根据需要选择使用部分专用指令,对特殊设备可定制专用指令。
CAN闭环控制系统,对绝大数指令均有应答机制。即命令帧,反馈帧一一对应。根据反馈帧实时监控数据流准确性。对部分功能可能需要先使能反馈或设置反馈周期。
6.CAN分析仪
如果有使用CAN-COM HUB或WiFi HUB,可以使用XVIEW的CAN分析仪功能来测试
COM协议构架说明
为了简化协议和方便解析,COM协议本质上就是对CAN指令的封装,其中包含的4~12位数据为4位CAN ID和8位CAN数据。由于COM报文长度是8~16位,使用固定表头0x55,请先阅读标准CAN协议再阅读以下内容。
COM 报文设置
通信波特率:460800
标准:自定义协议串口
|
COM 报文结构 |
|||||
|
数据定义 |
HEAD |
LEN |
DATA [0~11] |
Frame ID |
Checksum |
|
数据类型 |
unsigned int8 |
unsigned int8 |
4~12 x unsigned int8 |
unsigned int8 |
unsigned int8 |
|
说明 |
表头固定0x55 |
COM报文长度0x08~0x10 |
4位CAN ID 0~8位CAN报文数据 |
帧ID 可固定也可累加 连贯数据的序列戳 |
前7~15位内容的累加和 再取最低位的int8反馈 |
|
DATA [0~11] |
|||||
|
数据定义 |
ID[0] |
ID[1] |
ID[2] |
ID[3] |
DATA [0~7] |
|
数据类型 |
unsigned int8 |
unsigned int8 |
unsigned int8 |
unsigned int8 |
0~8 x unsigned int8 |
|
说明 |
设备大类 |
设备型号 |
设备编号 |
设备功能 |
0~8字节数据 |
报文内容解释
Frame ID
- 设计上是一个序列戳,方便对连续的数据包进行校验,帮助发现掉包现象。
- 该序列从0到255,溢出后自动循环
- 对非连续指令或不需要严格防掉包指令可以固定某一数值
- 一般用于上位机校验,设备一般不使用该值
Checksum
- 对报文前7~15位(总共8~16位)的累加和,取和的最低位字节,用于简单的数据校验
- 代码案例如下:
unsigned char checksum(unsigned char* data) {
unsigned char sum = 0x00;
for (int i = 0; i < data[1] - 1; i++) {
sum += data[i];
}
return sum;
}
通用CAN协议标准
通用指令是所有设备都会用到的指令,包含了各项设备基础功能。
请注意使用设备CANID替换表中XX部分
请先确保阅读了CAN协议构架说明再开始以下内容
通用指令在设备失能情况下也是可以使用的,其中心跳包是任何情况下都会反馈的,是设备是否在线的标识
通用指令总表
此表展示了通用指令的所有指令内容,方便快速查询和定位
|
指令集 |
反馈集 |
重要性 |
说明 |
||||||||||
|
命令内容 |
大类 (00~1F) |
型号 (00~FF) |
编号 (00~FF) |
功能 (00~FF) |
大类 (00~1F) |
型号 (00~FF) |
编号 (00~FF) |
功能 (00~FF) |
反馈内容 |
周期性 |
|||
|
设备重启 |
xx |
xx |
xx |
01 |
xx |
xx |
xx |
A1 |
准备重启 |
对命令反馈 |
必备 |
设备完全重置,相当于上电操作 |
|
|
软体版本查询 |
xx |
xx |
xx |
02 |
xx |
xx |
xx |
A2 |
软体版本反馈 |
对命令反馈 |
必备 |
大版本查询,不同于bin文件固件号 |
|
|
通用设置 |
xx |
xx |
xx |
03 |
xx |
xx |
xx |
A3 |
通用设置成功 |
对命令反馈 |
必备 |
使能和编号设置 |
|
|
特殊状态复位 |
xx |
xx |
xx |
04 |
xx |
xx |
xx |
A4 |
特殊复位成功 |
对命令反馈 |
必备 |
清除错误等特殊状态 |
|
|
运动状态复位 |
xx |
xx |
xx |
05 |
xx |
xx |
xx |
A5 |
运动复位成功 |
对命令反馈 |
选备 |
清除里程计等运动数据,非运动设备可无视指令 |
|
|
编号设置 |
xx |
xx |
xx |
06 |
xx |
xx |
xx |
A6 |
编号设置成功 |
对命令反馈 |
必备 |
用于设置设备编号 |
|
|
查找设备 |
xx |
xx |
xx |
07 |
/ |
/ |
/ |
/ |
/ |
/ |
选备 |
收到后设备利用可用的方式 (包括不限于蜂鸣器,LED,灯光等) 将自身与其他同类设备区分出来 便于人类寻找到特定设备 |
|
|
/ |
/ |
/ |
/ |
/ |
xx |
xx |
xx |
B0 |
设备心跳包 |
周期反馈 |
必备 |
||
|
进入升级模式 |
xx |
xx |
xx |
F1 |
/ |
/ |
/ |
/ |
/ |
/ |
选备 |
如果没有boot loader则无视指令 |
|
|
升级模式专用 |
xx |
xx |
xx |
F2~FF |
xx |
xx |
xx |
F2~FF |
升级模式专用 |
对命令反馈 |
不需要 |
主程序直接忽略,bootloader使用 |
|
1. 设备重启/准备重启
设备重启会导致设备对外输出关闭,有其他用电设备例如工控机时,请谨慎使用
|
设备重启 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x XX XX XX 01 |
3 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
大类 |
unsigned int8 |
按设备型号分配表中大类(与ID中相同 ) |
|
|
byte[1] |
型号 |
unsigned int8 |
按设备型号分配表中型号(与ID中相同 ) |
|
|
byte[2] |
编号 |
unsigned int8 |
初始为1(与ID中相同 ) |
|
|
byte[3~7] |
/ |
/ |
/ |
|
|
准备重启反馈 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x XX XX XX A1 |
0 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0~7] |
/ |
/ |
/ |
|
注:当系统中有多台机器同时使用时,可更改设置设备编号,设备编号默认为0x01。发送指令数据长度为8,无效位补0(后文同)。
举例:向型号0x02 编号0x03的底盘发送CANID:0x01 02 03 01 数据:01 02 03,系统重启。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x01 02 03 01
数据帧
扩展帧
3
01 02 03
上位机
0x01 02 03 A1
数据帧
扩展帧
0
/
2. 固件版本查询
|
设备重启 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x XX XX XX 02 |
0 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
/ |
/ |
/ |
|
|
准备重启反馈 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x XX XX XX A2 |
8 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
硬件版本字符[0] |
unsigned int8ASCII |
用于电控的版本号,PCB修改时更新 |
|
|
byte[1] |
硬件版本字符[1] |
unsigned int8ASCII |
||
|
byte[2] |
硬件版本字符[2] |
unsigned int8ASCII |
||
|
byte[3] |
硬件版本字符[3] |
unsigned int8ASCII |
||
|
byte[4] |
软件版本字符[0] |
unsigned int8ASCII |
用于大更新的版本号,不同于bin文件的固件号 |
|
|
byte[5] |
软件版本字符[1] |
unsigned int8ASCII |
||
|
byte[6] |
软件版本字符[2] |
unsigned int8ASCII |
||
|
byte[7] |
软件版本字符[3] |
unsigned int8ASCII |
||
举例:向型号0x02 编号0x03 的底盘发送CANID:0x01 02 03 02 数据:NULL。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x01 02 03 02
数据帧
扩展帧
0
/
上位机
0x01 02 03 A2
数据帧
扩展帧
8
XX XX XX XX XX XX XX XX
3. 通用设置/通用设置成功
通用设置指令用于对设备进行设备使能操作,一般是上电后第一要使用的指令
|
通用设置 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x XX XX XX 03 |
4 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
大类 |
unsigned int8 |
按设备型号分配表中大类(与ID中相同) |
|
|
byte[1] |
型号 |
unsigned int8 |
按设备型号分配表中型号 (与ID中相同 ) |
|
|
byte[2] |
编号 |
unsigned int8 |
初始为1(与ID中相同 ) |
|
|
byte[3] |
使能 |
unsigned int8 |
0x00: 关闭设备 / 0x01: 使能设备 |
|
|
byte[4~7] |
/ |
/ |
/ |
|
|
设置成功反馈 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x XX XX XX A3 |
0 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0~7] |
/ |
/ |
/ |
|
注:底盘默认上电是失能状态。
举例:使能设备型号0x02 编号0x03 的底盘,向系统ID:0x01 02 03 03发送指令01 02 03 01,设备使能。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x01 02 03 03
数据帧
扩展帧
4
01 02 03 01
上位机
0x01 02 03 A3
数据帧
扩展帧
0
/
4. 特殊状态复位 / 特殊复位成功
特殊状态复位用于系统异常(发生错误)时清错重置
|
特殊状态复位 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x XX XX XX 04 |
1 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
状态复位 |
unsigned int8 |
0xCC:复位 / 其他值无操作 |
|
|
byte[1~7] |
/ |
/ |
/ |
|
|
复位成功反馈 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x XX XX XX A4 |
0 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0~7] |
/ |
/ |
/ |
|
举例:向型号0x02 编号0x03 的底盘发送CANID:0x01 02 03 04 数据:CC 。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x01 02 03 04
数据帧
扩展帧
1
CC
上位机
0x01 02 03 A4
数据帧
扩展帧
0
/
5. 运动状态复位 / 运动复位成功
运动状态复位用于系统重置运动数据,例如里程计数据,该指令只对有运动能力的设备有效
|
运动状态复位 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x XX XX XX 05 |
1 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
状态复位 |
unsigned int8 |
0xCC:复位 / 其他值无操作 |
|
|
byte[1~7] |
/ |
/ |
/ |
|
|
复位成功反馈 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x XX XX XX A5 |
0 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0~7] |
/ |
/ |
/ |
|
举例:向型号0x02 编号0x03 的底盘发送CANID:0x01 02 03 05 数据:CC 。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x01 02 03 05
数据帧
扩展帧
1
CC
上位机
0x01 02 03 A5
数据帧
扩展帧
0
/
6. 编号设置
编号设置指令用于对设备设置新编号。当系统只有单一设备时,编号始终默认为0x01,当系统中有多台设备时可自定义设置设备编号
|
编号设置 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x XX XX XX 06 |
4 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
大类 |
unsigned int8 |
按设备型号分配表中大类(与ID中相同) |
|
|
byte[1] |
型号 |
unsigned int8 |
按设备型号分配表中型号 (与ID中相同 ) |
|
|
byte[2] |
编号 |
unsigned int8 |
初始为1(与ID中相同 ) |
|
|
byte[3] |
新编号 |
unsigned int8 |
如果不改变编号则与原编号相同 |
|
|
byte[4~7] |
/ |
/ |
/ |
|
|
设置成功反馈 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x XX XX XX A6 (此处反馈为原编号) |
0 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0~7] |
/ |
/ |
/ |
|
举例:设备型号0x02 编号0x03 的底盘更改设备编号为0x02,向系统ID:0x01 02 03 06发送指令01 02 03 02 ;设备编号由0x03切换为0x02。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x01 02 03 06
数据帧
扩展帧
4
01 02 03 02
上位机
0x01 02 03 A6
数据帧
扩展帧
0
/
7. 查找设备
当有多个设备存在无法分辨需要寻找的设备时,可以使用该功能是设备LED或蜂鸣器做出响应,方便寻找
|
查找设备 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x XX XX XX 07 |
0 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0~7] |
/ |
/ |
/ |
|
该条指令无反馈消息
举例:查找设备大类0x02 型号0x02 编号0x03 的设备。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x02 02 03 07
数据帧
扩展帧
0
/
上位机
/
/
/
/
/
8. 设备心跳包
心跳包在设备失能和使能时都能持续发出,不需要任何指令控制,是设备是否在线的标识
|
设备心跳 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x XX XX XX B0 |
1 |
500 |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
使能状态 |
unsigned int8 |
0x00: 已关闭 / 0x01: 已使能 |
|
|
byte[1~7] |
/ |
/ |
/ |
|
该条反馈持续每500ms发出,不接受任何指令控制
举例: 型号0x02 编号0x03 使能的底盘反馈心跳包。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
/
/
/
/
/
上位机
0x01 02 03 B0
数据帧
扩展帧
1
01
底盘类CAN协议标准
为了更好的兼容不同设备,我们规范了CAN协议的标准,使得同类型不同型号设备能无缝切换,自动被ROS识别并直接使用,方便更换硬件时候的软件移植工作。以下为底盘使用的专用CAN协议。
请先确保阅读了CAN协议构架说明再开始以下内容
请注意使用设备CANID替换表中XX部分
底盘类设备的大类ID为 01
底盘指令总表
此表展示了专用指令的所有指令内容,方便快速查询和定位
|
指令集 |
反馈集 |
重要性 |
说明 |
|||||||||||
|
设备对象 |
命令内容 |
大类 (00~1F) |
型号 (00~FF) |
编号 (00~FF) |
功能 (00~FF) |
大类 (00~1F) |
型号 (00~FF) |
编号 (00~FF) |
功能 (00~FF) |
反馈内容 |
周期性 |
|||
|
移动底盘 |
底盘状态设置 |
01 |
xx |
xx |
11 |
01 |
xx |
xx |
B1 |
底盘状态信息 |
周期反馈 |
必备 |
||
|
底盘运动控制 |
01 |
xx |
xx |
12 |
01 |
xx |
xx |
B2 |
底盘运动信息 |
周期反馈 |
必备 |
|||
|
/ |
/ |
/ |
/ |
/ |
01 |
xx |
xx |
B3 |
主轮里程计 |
周期反馈 |
必备 |
|||
|
/ |
/ |
/ |
/ |
/ |
01 |
xx |
xx |
B4 |
次轮里程计 |
周期反馈 |
选备 |
主要用于正交轮和麦克纳姆轮体系 |
||
|
遥控器信息发送使能 |
01 |
xx |
xx |
15 |
01 |
xx |
xx |
B5 |
车载遥控器信息 |
使能后周期反馈 |
必备 |
|||
|
安全传感器发送使能 |
01 |
xx |
xx |
16 |
01 |
xx |
xx |
B6 |
车载安全传感器信息 |
使能后周期反馈 |
选备 |
|||
|
驱动器运动信息发送使能 |
01 |
xx |
xx |
17 |
01 |
xx |
xx |
B7 |
驱动器运动信息 |
使能后周期反馈 |
选备 |
|||
|
驱动器状态信息发送使能 |
01 |
xx |
xx |
18 |
01 |
xx |
xx |
B8 |
驱动器状态信息 |
使能后周期反馈 |
选备 |
|||
|
底盘零点较准 |
01 |
xx |
xx |
19 |
01 |
xx |
xx |
B9 |
零点较准信息 |
对命令反馈 |
选备 |
主要用于阿克曼底盘的方向舵较准 |
||
|
/ |
/ |
/ |
/ |
/ |
01 |
xx |
xx |
BA |
错误状态信息 |
周期反馈 |
必备 |
|||
|
获取RTC时间 |
01 |
xx |
xx |
1B |
01 |
xx |
xx |
BB |
RTC时间信息 |
对命令反馈 |
选备 |
需要具有板载时钟芯片 |
||
|
设置RTC时间 |
01 |
xx |
xx |
1C |
01 |
xx |
xx |
BC |
设置RTC时间反馈 |
对命令反馈 |
选备 |
|||
|
设置唤醒时间 |
01 |
xx |
xx |
1D |
01 |
xx |
xx |
BD |
设置唤醒时间反馈 |
对命令反馈 |
选备 |
用于需要睡眠模式的设备 |
||
|
电源输出控制 |
01 |
xx |
xx |
1E |
01 |
xx |
xx |
BE |
电源输出反馈 |
对命令反馈 |
选备 |
配合睡眠模式使用 |
||
|
机械参数设置 |
01 |
xx |
xx |
1F |
01 |
xx |
xx |
BF |
机械参数反馈 |
对命令反馈 |
必备 |
|
||
|
odom设置 |
01 |
xx |
xx |
20 |
01 |
xx |
xx |
C0 |
odom-位移反馈 |
周期反馈 |
选备 |
|
||
|
/ |
/ |
/ |
/ |
/ |
01 |
xx |
xx |
C1 |
odom-旋转反馈 |
周期反馈 |
选备 |
|
||
1. 底盘状态设置 / 底盘状态信息
底盘的基础设置,某些功能如刹车、特殊功能等只对部分车型有效,请查阅对应车型的用户手册
|
底盘状态设置 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 01 XX XX 11 |
4 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
设置控制模式 |
unsigned int8 |
0x00: 待机 / 0x01: 遥控 / 0x02: CAN控制 / 0x03: 随动 |
|
|
byte[1] |
使能蜂鸣器 |
unsigned int8 |
0x00: 关闭 / 0x01: 开启(默认) 手动控制蜂鸣器,不影响报警的蜂鸣器 |
|
|
byte[2] |
使能刹车 |
unsigned int8 |
0x00: 松开 / 0x01: 锁止(如有刹车则默认) |
|
|
byte[3] |
使能特殊功能 |
unsigned int8 |
0x00: 关闭(默认) / 0x01: 开启 |
|
|
byte[4~7] |
/ |
/ |
/ |
|
|
底盘状态信息 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 01 XX XX B1 |
8 |
100 |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
设备状态 |
unsigned int8 |
0x00: 正常 / 0x01: 异常(出现错误报警) |
|
|
byte[1] |
控制模式 |
unsigned int8 |
0x00: 待机 / 0x01: 遥控 / 0x02: CAN控制 / 0x03: 随动 |
|
|
byte[2] |
电池电压低8位 |
unsigned int16 |
单位:0.1V |
|
|
byte[3] |
电池电压高8位 |
|||
|
byte[4] |
蜂鸣器状态 |
unsigned int8 |
0x00: 关闭 / 0x01: 开启(默认) 手动控制蜂鸣器,不影响报警的蜂鸣器 |
|
|
byte[5] |
遥控器状态 |
unsigned int8 |
0: 在线 / 1: 离线 |
|
|
byte[6] |
刹车状态 |
unsigned int8 |
0x00: 松开 / 0x01: 锁止(如有刹车则默认) |
|
|
byte[7] |
特殊功能状态 |
unsigned int8 |
0x00: 关闭(默认) / 0x01: 开启 |
|
当使用有线方式控制底盘时,需先切换控制模式至CAN模式。如果使用了遥控器,请将遥控器SWA拨到最下面的CAN模式,遥控器说明请看设备的用户手册。
刹车使能只适用于有刹车功能的底盘,无刹车功能的默认该位保持0x00,有刹车功能的默认开启刹车。
特殊功能根据底盘而不同,例如阿克曼底盘为差速锁功能,不是所有底盘都有特殊功能。特殊功能也可由遥控器开启,参见对应设备的用户手册。
举例: 型号0x02 编号0x03 的底盘更改为CAN模式控制并使能蜂鸣器, 发送CANID:0x 01 02 03 11 数据:02 01 00 00。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x01 02 03 11
数据帧
扩展帧
4
02 01 00 00
上位机
0x01 02 03 B1
数据帧
扩展帧
7
00 02 XX XX 01 00 00
2. 底盘运动控制 / 底盘运动信息
底盘的基础控制指令,对不同车型有所不同,注意区分
|
底盘运动控制 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 01 XX XX 12 |
8 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
x方向速度低8位 |
signed int16 |
单位:mm/s |
|
|
byte[1] |
x方向速度高8位 |
|||
|
byte[2] |
y方向速度低8位 |
signed int16 |
单位:mm/s |
|
|
byte[3] |
y方向速度高8位 |
|||
|
byte[4] |
角速度低8位 |
signed int16 |
阿克曼模式不可作为输入控制,但可以反馈 单位:mrad/s |
|
|
byte[5] |
角速度高8位 |
|||
|
byte[6] |
角度低8位 |
signed int16 |
阿克曼模式专用 单位:mrad |
|
|
byte[7] |
角度高8位 |
|||
|
底盘运动信息 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 01 XX XX B2 |
8 |
20 |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
x方向速度低8位 |
signed int16 |
单位:mm/s |
|
|
byte[1] |
x方向速度高8位 |
|||
|
byte[2] |
y方向速度低8位 |
signed int16 |
单位:mm/s |
|
|
byte[3] |
y方向速度高8位 |
|||
|
byte[4] |
角速度低8位 |
signed int16 |
单位:mrad/s |
|
|
byte[5] |
角速度高8位 |
|||
|
byte[6] |
角度低8位 |
signed int16 |
阿克曼模式专用 单位:mrad |
|
|
byte[7] |
角度高8位 |
|||
Y方向速度只对麦克纳姆轮系等具有平移功能的车型才有效,其他车型默认为0
由于电机执行有精度问题,系统反馈值会与设定值有细微偏差
阿克曼车型只使用角度控制,但同时提供角度和角速度反馈。该处角度指前轮转向角
举例: 型号0x02 编号0x03 的底盘以0.5m/s的速度前进,同时以-0.1rad/s的角度转动,发送CANID:0x01 02 03 12 数据:F4 01 00 00 9C FF 00 00。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x01 02 03 12
数据帧
扩展帧
8
F4 01 00 00 9C FF 00 00
上位机
0x01 02 03 B2
数据帧
扩展帧
8
F4 01 00 00 9C FF 00 00
3. 里程计反馈
|
主里程计 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 01 XX XX B3 |
8 |
20 |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
左轮里程计 [7:0] |
signed int32 |
单位:mm |
|
|
byte[1] |
左轮里程计 [15:8] |
|||
|
byte[2] |
左轮里程计[23:16] |
|||
|
byte[3] |
左轮里程计[31:24] |
|||
|
byte[4] |
右轮里程计 [7:0] |
signed int32 |
单位:mm |
|
|
byte[5] |
右轮里程计[15:8] |
|||
|
byte[6] |
右轮里程计[23:16] |
|||
|
byte[7] |
右轮里程计[31:24] |
|||
|
次里程计 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 01 XX XX B4 |
8 |
20 |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
左后轮里程计[7:0] |
signedint32 |
适用全向轮和麦轮系统 单位:mm |
|
|
byte[1] |
左后轮里程计[15:8] |
|||
|
byte[2] |
左后轮里程计[23:16] |
|||
|
byte[3] |
左后轮里程计[31:24] |
|||
|
byte[4] |
右后轮里程计[7:0] |
signedint32 |
适用全向轮和麦轮系统 单位:mm |
|
|
byte[5] |
右后轮里程计[15:8] |
|||
|
byte[6] |
右后轮里程计[23:16] |
|||
|
byte[7] |
右后轮里程计[31:24] |
|||
两轮差速和四轮差速只使用主里程计,全向轮和麦克纳姆轮系统同时使用两组里程计
举例: 型号0x02 编号0x03 的底盘反馈里程计数据
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
/
/
/
/
/
上位机
0x01 02 03 B3
数据帧
扩展帧
8
XX XX XX XX XX XX XX XX
4. 遥控器信息发送使能 /遥控器信息
该指令用于配套的手持射频遥控器数据的设置,可以读取遥控器所有按键数据
|
遥控器信息发送使能 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 01 XX XX 15 |
1 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
发送周期设置 |
unsigned int8 |
0: 关闭(默认) / 1~20:20ms / 20~255:设定值 |
|
|
byte[1~7] |
/ |
/ |
/ |
|
|
车载遥控器信息 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 01 XX XX B5 |
7 |
20~255(默认关闭) |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
拨动开关 |
unsigned int8 |
按照拨动开关档位表 |
|
|
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] |
右旋钮VRA |
signed int8 |
范围:-100~100 |
|
|
byte[7] |
/ |
/ |
/ |
|
|
拨动开关档位表 |
||
|
位 |
值 |
说明 |
|
bit[0] |
0: 失效 1: 上档 2: 中档 3: 下档 |
SWA |
|
bit[1] |
||
|
bit[2] |
0: 失效 1: 上档 2: 中档 3: 下档 |
SWB |
|
bit[3] |
||
|
bit[4] |
0: 失效 1: 上档 2: 中档 3: 下档 |
SWC |
|
bit[5] |
||
|
bit[6] |
0: 失效 1: 上档 2: 中档 3: 下档 |
SWD |
|
bit[7] |
||
举例: 型号0x02 编号0x03 的底盘设置100ms遥控反馈,发送CANID:0x01 02 03 15 数据:64。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x01 02 03 15
数据帧
扩展帧
1
64
上位机
0x01 02 03 B5
数据帧
扩展帧
7
XX XX XX XX XX XX XX
5. 安全传感器信息发送使能 /安全传感器信息
该指令用提供碰撞传感器和超声波等安全传感器信息
|
安全传感器信息发送使能 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 01 XX XX 16 |
1 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
发送周期设置 |
unsigned int8 |
0: 关闭(默认) / 1~20:20ms / 20~255:设定值 |
|
|
byte[1~7] |
/ |
/ |
/ |
|
|
车载安全传感器信息 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 01 XX XX B6 |
7 |
20~255(默认关闭) |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
触碰开关 |
unsigned int8 |
参考触碰开关表 |
|
|
byte[1] |
超声波0 |
unsigned int8 |
0:失效/1~255:距离单位cm |
|
|
byte[2] |
超声波1 |
unsigned int8 |
0:失效/1~255:距离单位cm |
|
|
byte[3] |
超声波2 |
unsigned int8 |
0:失效/1~255:距离单位cm |
|
|
byte[4] |
超声波3 |
unsigned int8 |
0:失效/1~255:距离单位cm |
|
|
byte[5] |
超声波4 |
unsigned int8 |
0:失效/1~255:距离单位cm |
|
|
byte[6] |
超声波5 |
unsigned int8 |
0:失效/1~255:距离单位cm |
|
|
byte[7] |
/ |
/ |
/ |
|
|
触碰开关表 |
||
|
位 |
值 |
说明 |
|
bit[0] |
0:未触发 / 1:触发 |
触碰开关0 |
|
bit[1] |
0:未触发 / 1:触发 |
触碰开关1 |
|
bit[2] |
0:未触发 / 1:触发 |
触碰开关2 |
|
bit[3] |
0:未触发 / 1:触发 |
触碰开关3 |
|
bit[4] |
0:未触发 / 1:触发 |
触碰开关4 |
|
bit[5] |
0:未触发 / 1:触发 |
触碰开关5 |
|
bit[6] |
0:未触发 / 1:触发 |
触碰开关6 |
|
bit[7] |
0:未触发 / 1:触发 |
触碰开关7 |
仅限安装了防撞边条或触碰传感器的设备才反馈该数据
举例: 型号0x02 编号0x03 的底盘设置100ms安全反馈,发送CANID:0x01 02 03 16 数据:64 。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x01 02 03 16
数据帧
扩展帧
1
64
上位机
0x01 02 03 B6
数据帧
扩展帧
7
XX XX XX XX XX XX XX
6. 驱动器运动信息使能 / 驱动器运动信息
此数据为系统最底层来自驱动器的直接记数,用户可根据原始数据自行求解里程计和速度
|
驱动器运动信息发送使能 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 01 XX XX 17 |
1 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
发送周期设置 |
unsigned int8 |
0: 关闭(默认) / 1~20:20ms / 20~255:设定值 |
|
|
byte[1~7] |
/ |
/ |
/ |
|
|
驱动器运动信息 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 01 XX XX B7 |
7 |
20~255(默认关闭) |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
驱动编号 |
unsigned int8 |
可选0,1,2,3,4,5,6,7(轮流发送) |
|
|
byte[1] |
转速低8位 |
signed int16 |
单位:Rpm |
|
|
byte[2] |
转速高8位 |
|||
|
byte[3] |
位置值 [7:0] |
signed int32 |
单位:脉冲数 |
|
|
byte[4] |
位置值 [15:8] |
|||
|
byte[5] |
位置值 [23:16] |
|||
|
byte[6] |
位置值 [31:24] |
|||
|
byte[7] |
/ |
/ |
/ |
|
举例: 型号0x02 编号0x03 的底盘设置100ms驱动器运动反馈,发送CANID:0x01 02 03 17 数据:64 。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x01 02 03 17
数据帧
扩展帧
1
64
上位机
0x01 02 03 B7
数据帧
扩展帧
7
XX XX XX XX XX XX XX
7. 驱动器状态信息使能 / 驱动器状态信息
此数据为驱动器和电机的工作数据,可用于驱动的安全监控
|
驱动器状态信息发送使能 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 01 XX XX 18 |
1 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
发送周期设置 |
unsigned int8 |
0: 关闭(默认) / 1~100: 100ms / 100~255:设定值 |
|
|
byte[1~7] |
/ |
/ |
/ |
|
|
驱动器状态信息 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 01 XX XX B8 |
8 |
100~255(默认关闭) |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
驱动编号 |
unsigned int8 |
可选0,1,2,3,4,5,6,7(轮流发送) |
|
|
byte[1] |
电压低8位 |
unsigned int16 |
单位:0.1V |
|
|
byte[2] |
电压高8位 |
|||
|
byte[3] |
电流低8位 |
unsigned int16 |
单位:0.1A |
|
|
byte[4] |
电流高8位 |
|||
|
byte[5] |
驱动器温度 |
signed int8 |
单位:1°C |
|
|
byte[6] |
电机温度 |
signed int8 |
单位:1°C |
|
|
byte[7] |
特殊状态 |
unsignedint8 |
按照驱动器特殊状态表 |
|
|
触碰开关表 |
||
|
位 |
值 |
说明 |
|
bit[0] |
0: 正常 / 1: 过低 |
驱动低压报警 |
|
bit[1] |
0: 正常 / 1: 过温 |
驱动过温报警 |
|
bit[2] |
0: 正常 / 1: 过流 |
电机过流报警 |
|
bit[3] |
0: 正常 / 1: 过温 |
电机过温报警 |
|
bit[4] |
0: 正常 / 1: 卡死 |
电机卡死报警 |
|
bit[5~7] |
/ |
/ |
举例: 型号0x02 编号0x03 的底盘设置100ms驱动器状态反馈,发送CANID:0x01 02 03 18 数据:64 。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x01 02 03 18
数据帧
扩展帧
1
64
上位机
0x01 02 03 B8
数据帧
扩展帧
8
XX XX XX XX XX XX XX XX
8. 底盘零点较准 / 底盘零点较准信息
此数据为驱动器和
|
底盘零点较准 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 01 XX XX 19 |
8 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
零点偏移量1 |
int32 |
单位:mrad |
|
|
byte[1] |
||||
|
byte[2] |
||||
|
byte[3] |
||||
|
byte[4] |
零点偏移量2 |
int32 |
单位:mrad |
|
|
byte[5] |
||||
|
byte[6] |
||||
|
byte[7] |
||||
|
零点较准信息 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 01 XX XX B9 |
8 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
零点偏移量1 |
int32 |
单位:mrad |
|
|
byte[1] |
||||
|
byte[2] |
||||
|
byte[3] |
||||
|
byte[4] |
零点偏移量2 |
int32 |
单位:mrad |
|
|
byte[5] |
||||
|
byte[6] |
||||
|
byte[7] |
||||
单阿克曼使用偏移量1;前后阿克曼前转向用1,后转向用2;双舵轮左边用1,右边用2
举例: 型号0x02 编号0x03 的单阿克曼底盘设置1000mrad偏移,发送CANID:0x01 02 03 19 数据:E8 03 00 00 00 00 00 00
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x01 02 03 19
数据帧
扩展帧
8
E8 03 00 00 00 00 00 00
上位机
0x01 02 03 B9
数据帧
扩展帧
8
E8 03 00 00 00 00 00 00
9. 底盘错误状态
反馈底盘的报错信息
|
错误状态反馈 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 01 XX XX BA |
5 |
500 |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
电机故障 |
unsigned int8 |
查看电机故障表 |
|
|
byte[1] |
驱动故障 |
unsigned int8 |
查看驱动故障表 |
|
|
byte[2] |
通讯故障 |
unsigned int8 |
查看通讯故障表 |
|
|
byte[3] |
其他故障 |
unsigned int8 |
查看其他故障表 |
|
|
byte[4] |
电源故障 |
unsigned int8 |
查看其电源障表 |
|
|
byte[5] |
/ |
/ |
/ |
|
|
电机故障表 |
||
|
位 |
值 |
说明 |
|
bit[0] |
0: 正常 / 1:故障 |
电机过流报警 |
|
bit[1] |
0: 正常 / 1:故障 |
电机过温报警 |
|
bit[2] |
0: 正常 / 1:故障 |
编码器故障 |
|
bit[3] |
0: 正常 / 1:故障 |
霍尔传感器故障 |
|
bit[4~7] |
/ |
/ |
|
驱动故障表 |
||
|
位 |
值 |
说明 |
|
bit[0] |
0: 正常 / 1:故障 |
驱动低压报警 |
|
bit[1] |
0: 正常 / 1:故障 |
驱动过温报警 |
|
bit[2~7] |
/ |
/ |
|
通讯故障表 |
||
|
位 |
值 |
说明 |
|
bit[0] |
0: 在线 / 1:离线 |
1号驱动通讯故障 |
|
bit[1] |
0: 在线 / 1:离线 |
2号驱动通讯故障 |
|
bit[2] |
0: 在线 / 1:离线 |
3号驱动通讯故障 |
|
bit[3] |
0: 在线 / 1:离线 |
4号驱动通讯故障 |
|
bit[4~7] |
/ |
/ |
|
其他故障表 |
||
|
位 |
值 |
说明 |
|
bit[0] |
0: 正常 / 1:警告 |
电池低电压提醒 (<15%) ( 蜂鸣器提醒,设备正常工作)> |
|
bit[1] |
0: 正常 / 1:故障> |
电池低电压报警 (<5%)( 设备输出异常状态,驱动停止输出)> |
|
bit[2] |
0: 未触发 / 1:触发 |
触碰传感器触发 |
|
bit[3] |
0: 未触发 / 1:触发 |
急停开关 |
|
bit[4~7] |
/ |
/ |
|
电源故障表 |
||
|
位 |
值 |
说明 |
|
bit[0] |
0: 正常 / 1:故障> |
主继电器故障 |
|
bit[1] |
0: 正常 / 1:故障> |
缓启动故障 |
|
bit[2] |
0: 正常 / 1:故障> |
缓启动升压故障 |
|
bit[3] |
0: 正常 / 1:故障> |
输出过流故障 |
|
bit[4] |
0: 正常 / 1:故障> |
纽扣电池故障 |
|
bit[5~7] |
/ | / |
举例: 型号0x02 编号0x03 的底盘反馈触碰传感器触发。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
/
/
/
/
/
上位机
0x01 02 03 BA
数据帧
扩展帧
5
00 00 00 04 00
10. 获取RTC时间
对安装有RTC计数模块的底盘可以获取芯片时间
|
获取RTC时间 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 01 XX XX 1B |
0 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0~7] |
/ |
/ |
/ |
|
|
RTC时间信息 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 01 XX XX BB |
4 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
当前unix 时间[0:7] |
unsigned int32 |
unix时间,从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数 |
|
|
byte[1] |
当前unix 时间[8:15] |
|||
|
byte[2] |
当前unix时间[16:23] |
|||
|
byte[3] |
当前unix时间[24:31] |
|||
|
byte[4~7] |
/ |
/ |
/ |
|
底盘必须具有RTC时间功能,该功能为特别订制
举例: 型号0x02 编号0x03 的底盘获取时间为2024-01-01 00:00:30。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x01 02 03 1B
数据帧
扩展帧
0
/
上位机
0x01 02 03 BB
数据帧
扩展帧
4
1E 90 91 65
11. 设置RTC时间
|
设置RTC时间 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 01 XX XX 1C |
4 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
unix时间 [0:7] |
unsigned int32 |
unix时间,从格林威治时间 1970年01月01日00时00分 00 秒起至现在的总秒数 |
|
|
byte[1] |
unix时间[8:15] |
|||
|
byte[2] |
unix时间[16:23] |
|||
|
byte[3] |
unix时间[24:31] |
|||
|
byte[4~7] |
/ |
/ |
/ |
|
|
设置RTC时间反馈 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 01 XX XX BC |
1 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
设置RTC反馈 |
unsigned int8 |
0:设置成功 1:数据错误,设置失败 |
|
|
byte[1~7] |
/ |
/ |
/ |
|
举例: 型号0x02 编号0x03 的底盘设置RTC时间为2024-01-01 00:00:30。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x01 02 03 1C
数据帧
扩展帧
4
1E 90 91 65
上位机
0x01 02 03 BC
数据帧
扩展帧
1
00
12. 设置唤醒时间
设置RTC时钟的自动唤醒功能,在使用休眠等节能需求时候使用
|
设置唤醒时间 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 01 XX XX 1D |
4 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
unix时间 [0:7] |
unsigned int32 |
unix时间,从格林威治时间 1970年01月01日00时00分 00 秒起至现在的总秒数 |
|
|
byte[1] |
unix时间[8:15] |
|||
|
byte[2] |
unix时间[16:23] |
|||
|
byte[3] |
unix时间[24:31] |
|||
|
byte[4~7] |
/ |
/ |
/ |
|
|
设置唤醒时间反馈 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 01 XX XX BD |
5 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
设置唤醒时间反馈 |
unsigned int8 |
0:设置成功 1-闹钟时间小于当前时间,设置失败 |
|
|
byte[1] |
唤醒时间 [0:7] |
unsigned int32 |
unix时间,从格林威治时间 1970年01月01日00时00分 00 秒起至现在的总秒数 |
|
|
byte[2] |
唤醒时间[8:15] |
|||
|
byte[3] |
唤醒时间[16:23] |
|||
|
byte[4] |
唤醒时间[24:31] |
|||
|
byte[5] |
/ |
/ |
/ |
|
举例: 型号0x02 编号0x03 的底盘设置唤醒时间为2024-01-01 00:00:30。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x01 02 03 1D
数据帧
扩展帧
4
1E 90 91 65
上位机
0x01 02 03 BD
数据帧
扩展帧
5
00 1E 90 91 65
13. 电源输出控制
控制底盘对外部的电源输出,如果是电池直出则不受影响
|
电源输出控制 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 01 XX XX 1E |
1 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
电源输出控制 |
unsigned int8 |
0:关闭电源 1:启动电源 2:查询当前电源状态 |
|
|
byte[1~7] |
/ |
/ |
/ |
|
|
电源输出反馈 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 01 XX XX BE |
2 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
电源输出控制反馈 |
unsigned int8 |
0:操作成功 1:唤醒时间未设置,关闭失败 2:开启失败,电源未关闭 |
|
|
byte[1] |
电源输出状态反馈 |
unsigned int8 |
0:电源已关闭 1:电源已开启 |
|
|
byte[2~7] |
/ |
/ |
/ |
|
如果有工控机等外部设备请谨慎使用该功能,该功能需要具备RTC时间功能的底盘,并需要先设置唤醒时间才能关闭电源
举例: 型号0x02 编号0x03 的底盘关闭输出电源。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x01 02 03 1E
数据帧
扩展帧
1
00
上位机
0x01 02 03 BE
数据帧
扩展帧
2
00 01
14. 机械参数设置
底盘的结构参数,用于补偿里程计和速度差异
|
机械参数设置 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 01 XX XX 1F |
2 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
设置轮径 |
uint16 |
0: 不设置 单位:mm |
|
|
byte[1] |
||||
|
byte[2~7] |
/ |
/ |
/ |
|
|
机械参数反馈 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 01 XX XX BF |
7 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
运动模型 | uint8 | 参考运动模型ID表 | |
|
byte[1] |
轴距 |
uint16 |
单位:mm | |
|
byte[2] |
||||
|
byte[3] |
轮距 |
uint16 |
单位:mm | |
|
byte[4] |
||||
|
byte[5] |
轮径 |
uint16 |
单位:mm | |
|
byte[6] |
||||
|
byte[7] |
/ |
/ |
/ |
|
|
运动模型ID表 |
||
|
字节 |
状态码的取值 |
状态说明 |
|
byte[0] |
0x00 |
未知模型 |
|
0x01 |
两轮差速 |
|
|
0x02 |
四轮差速 |
|
|
0x03 |
阿克曼 |
|
|
0x04 |
麦轮 |
|
|
0x05 |
三正交轮 |
|
|
0x06 |
四正交轮 |
|
机械参数设置会严重影响里程计与速度数据输出,请谨慎使用
举例: 型号0x02 编号0x03 轴距500mm 轮距300mm 的底盘设置轮径为200mm。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x01 02 03 1F
数据帧
扩展帧
1
C8 00
上位机
0x01 02 03 BF
数据帧
扩展帧
7
01 F4 01 2C 01 C8 00
15. odom设置
用于开启底盘计算odom模式,会比上位机计算精确,并可开启IMU较准
|
odom设置 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 01 XX XX 20 |
2 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
使能odom反馈 |
uint8 |
0: 失能(默认) / 1:使能 |
|
|
byte[1] |
IMU较准 |
uint8 |
0: 不使用 / 1:使用(默认) 如果底盘没有IMU则不可使用 |
|
|
byte[2~7] |
/ |
/ |
/ |
|
|
odom-位移反馈 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 01 XX XX C0 |
8 |
20 |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
odom_x [7:0] |
signed int32 |
单位:mm |
|
|
byte[1] |
odom_x[15:8] |
|||
|
byte[2] |
odom_x[23:16] |
|||
|
byte[3] |
odom_x[31:24] |
|||
|
byte[4] |
odom_y[7:0] |
signed int32 |
单位:mm |
|
|
byte[5] |
odom_y[15:8] |
|||
|
byte[6] |
odom_y[23:16] |
|||
|
byte[7] |
odom_y[31:24] |
|||
|
odom-旋转反馈 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 01 XX XX C1 |
4 |
20 |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
odom_th [7:0] |
signed int32 |
单位:mrad |
|
|
byte[1] |
odom_th [15:8] |
|||
|
byte[2] |
odom_th [23:16] |
|||
|
byte[3] |
odom_th [31:24] |
|||
|
byte[4~7] |
/ |
/ |
/ |
|
只有具备车载IMU功能的底盘才能开启IMU较准
举例: 型号0x02 编号0x03 底盘开启IMU较准 odom,odom位置为x=1m y= 1m。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x01 02 03 20
数据帧
扩展帧
2
01 01
上位机
0x01 02 03 C0
数据帧
扩展帧
8
E8 03 00 00 E8 03 00 00
上位机
0x01 02 03 C1
数据帧
扩展帧
4
00 00 00 00
运载平台类CAN协议标准
为了更好的兼容不同设备,我们规范了CAN协议的标准,使得同类型不同型号设备能无缝切换,自动被ROS识别并直接使用,方便更换硬件时候的软件移植工作。以下为运载平台用的专用CAN协议。
请先确保阅读了CAN协议构架说明再开始以下内容
请注意使用设备CANID替换表中XX部分
运载平台类设备的大类ID为 03
运载平台指令总表
此表展示了专用指令的所有指令内容,方便快速查询和定位
|
指令集 |
反馈集 |
重要性 |
说明 |
|||||||||||
|
设备对象 |
命令内容 |
大类 (00~1F) |
型号 (00~FF) |
编号 (00~FF) |
功能 (00~FF) |
大类 (00~1F) |
型号 (00~FF) |
编号 (00~FF) |
功能 (00~FF) |
反馈内容 |
周期性 |
|||
|
运载平台 |
平台状态设置 |
03 |
xx |
xx |
11 |
03 |
xx |
xx |
B1 |
平台状态信息 |
周期反馈 |
必备 |
||
|
平台工作范围查询 |
03 |
xx |
xx |
12 |
03 |
xx |
xx |
B2 |
工作范围信息 |
对命令反馈 |
必备 |
|||
|
平台移动速度控制 |
03 |
xx |
xx |
13 |
03 |
xx |
xx |
B3 |
平台移动信息 |
周期反馈 |
选备 |
适用于有移动轴的平台 |
||
|
平台移动位置控制 |
03 |
xx |
xx |
14 |
03 |
xx |
xx |
B4 |
平台位置信息 |
周期反馈 |
选备 |
适用于有移动轴的平台 |
||
1. 平台状态设置/ 平台状态信息
|
平台状态设置 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 03 XX XX 11 |
3 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
启动零点较准 |
uint8 |
0x00: 不启动 / 0x01:启动 | |
|
byte[1] |
移动速度上限低8位 |
unsigned int16 |
位置控制模式专用 单位:mm/s |
|
|
byte[2] |
移动速度上限高8位 |
|||
|
byte[3~7] |
/ |
/ |
/ |
|
|
平台状态信息 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 03 XX XX B1 |
6 |
100 |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
设备状态 |
uint8 |
0x00: 正常 / 0x01:异常 |
|
|
byte[1] |
零点较准状态 | uint8 | 0x00: 较准完成 / 0x01:校准中 | |
|
byte[2] |
特殊状态 | uint16 | 查看特殊状态表 | |
|
byte[3] |
||||
|
byte[4] |
移动速度上限低8位 |
unsigned int16 |
位置控制模式专用 单位:mm/s |
|
|
byte[5] |
移动速度上限高8位 |
|||
|
byte[6~7] |
/ |
/ |
/ |
|
|
特殊状态表 |
||
|
位 |
值 |
说明 |
|
bit[0] |
0: 正常 / 1:触发 |
x平移限位触发 |
|
bit[1] |
0: 正常 / 1:触发 |
y平移限位触发 |
|
bit[2] |
0: 正常 / 1:触发 |
z平移限位触发 |
|
bit[3] |
0: 正常 / 1:堵转 |
x电机堵转 |
|
bit[4] |
0: 在线 / 1:堵转 |
y电机堵转 |
|
bit[5] |
0: 正常 / 1:堵转 |
z电机堵转 |
|
bit[6] |
0: 正常 / 1:过温 |
x电机过温 |
|
bit[7] |
0: 在线 / 1:过温 |
y电机过温 |
|
bit[8] |
0: 正常 / 1:过温 |
z电机过温 |
|
bit[9~15] |
/ |
/ |
启动校准后平台会缓慢寻找零点并停在零点处
移动速度上限是指位置控制模式下,移动的最大可达速度
举例: 型号0x02 编号0x03 的平台启动校准,上限速度0.5m/s,发送CANID:0x03 02 03 11 数据:01 F4 01。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x03 02 03 11
数据帧
扩展帧
3
01 F4 01
上位机
0x03 02 03 B1
数据帧
扩展帧
4
00 01 00 00
2. 平台工作范围查询 / 平台工作范围信息
用于获得平台移动轴的运动范围,是设备的固定参数
|
平台移动范围查询 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 03 XX XX 12 |
0 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0~7] |
/ |
/ |
/ |
|
|
平台移动范围信息 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 03 XX XX B2 |
8 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
x移动范围低8位 |
signed int16 |
单位:mm |
|
|
byte[1] |
x移动范围高8位 |
|||
|
byte[2] |
y移动范围低8位 |
signed int16 |
单位:mm |
|
|
byte[3] |
y移动范围高8位 |
|||
|
byte[4] |
z移动范围低8位 |
signed int16 |
单位:mm |
|
|
byte[5] |
z移动范围高8位 |
|||
|
byte[6] |
移动速度范围低8位 |
unsigned int16 |
单位: mm/s |
|
|
byte[7] |
移动速度范围高8位 |
|||
速度范围是指设备允许的最大速度,是由设备机械结构决定的,是一个确定值
举例: 型号0x02 编号0x03 的平台获取移动范围x=1000mm,发送CANID:0x03 02 03 12。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x03 02 03 12
数据帧
扩展帧
0
/
上位机
0x03 02 03 B2
数据帧
扩展帧
8
E8 03 00 00 00 00 E8 03
3. 平台速度控制 / 平台速度信息
通过控制速度来移动平台
|
平台速度控制 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 03 XX XX 13 |
6 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
x方向速度低8位 |
signed int16 |
单位:mm/s |
|
|
byte[1] |
x方向速度高8位 |
|||
|
byte[2] |
y方向速度低8位 |
signed int16 |
单位:mm/s |
|
|
byte[3] |
y方向速度高8位 |
|||
|
byte[4] |
z方向速度低8位 |
signed int16 |
单位:mm/s |
|
|
byte[5] |
z方向速度高8位 |
|||
|
byte[6~7] |
/ |
/ |
/ |
|
|
平台速度信息 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 03 XX XX B3 |
6 |
50 |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
x方向速度低8位 |
signed int16 |
单位:mm/s |
|
|
byte[1] |
x方向速度高8位 |
|||
|
byte[2] |
y方向速度低8位 |
signed int16 |
单位:mm/s |
|
|
byte[3] |
y方向速度高8位 |
|||
|
byte[4] |
z方向速度低8位 |
signed int16 |
单位:mm/s |
|
|
byte[5] |
z方向速度高8位 |
|||
|
byte[6~7] |
/ |
/ |
/ |
|
需要实时读取位置信息,可能会出现超限
举例: 型号0x02 编号0x03 的平台设置移动x=1m/s,发送CANID:0x03 02 03 13,数据:E8 03 00 00 00 00。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x03 02 03 13
数据帧
扩展帧
6
E8 03 00 00 00 00
上位机
0x03 02 03 B3
数据帧
扩展帧
6
E8 03 00 00 00 00
4. 平台位置控制 / 平台位置信息
通过控制位置来移动平台
|
平台位置控制 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 03 XX XX 14 |
6 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
x方向位置低8位 |
signed int16 |
单位:mm |
|
|
byte[1] |
x方向位置高8位 |
|||
|
byte[2] |
y方向位置低8位 |
signed int16 |
单位:mm |
|
|
byte[3] |
y方向位置高8位 |
|||
|
byte[4] |
z方向位置低8位 |
signed int16 |
单位:mm |
|
|
byte[5] |
z方向位置高8位 |
|||
|
byte[6~7] |
/ |
/ |
/ |
|
|
平台位置信息 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 03 XX XX B4 |
6 |
50 |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
x方向位置低8位 |
signed int16 |
单位:mm |
|
|
byte[1] |
x方向位置高8位 |
|||
|
byte[2] |
y方向位置低8位 |
signed int16 |
单位:mm |
|
|
byte[3] |
y方向位置高8位 |
|||
|
byte[4] |
z方向位置低8位 |
signed int16 |
单位:mm |
|
|
byte[5] |
z方向位置高8位 |
|||
|
byte[6~7] |
/ |
/ |
/ |
|
举例: 型号0x02 编号0x03 的平台设置移动到位置 x=1m ,发送CANID:0x03 02 03 14。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x03 02 03 14
数据帧
扩展帧
6
E8 03 00 00 00 00
上位机
0x03 02 03 B4
数据帧
扩展帧
6
E8 03 00 00 00 00
灯光类CAN协议标准
为了更好的兼容不同设备,我们规范了CAN协议的标准,使得同类型不同型号设备能无缝切换,自动被ROS识别并直接使用,方便更换硬件时候的软件移植工作。以下为灯光使用的专用CAN协议。
请先确保阅读了CAN协议构架说明再开始以下内容
请注意使用设备CANID替换表中XX部分
灯光类设备的大类ID为 04
灯光控制器指令总表
|
指令集 |
反馈集 |
重要性 |
说明 |
|||||||||||
|
设备对象 |
命令内容 |
大类 ( 00~1F) |
型号 (00~FF) |
编号 ( 00~FF) |
功能 ( 00~FF) |
大类 (00~1F) |
型号 (00~FF) |
编号 (00~FF) |
功能 (00~FF) |
反馈内容 |
周期性 |
|||
|
灯光控制器 |
控制器状态设置 |
04 |
xx |
xx |
11 |
04 |
xx |
xx |
B1 |
控制器状态信息 |
周期反馈 |
必备 |
||
|
单点灯光状态设置 |
04 |
xx |
xx |
12 |
/ |
/ |
/ |
/ |
/ |
/ |
必备 |
|||
|
呼吸模式设置 |
04 |
xx |
xx |
13 |
04 |
xx |
xx |
B3 |
设置成功 |
单次反馈 |
必备 |
|||
1. 控制器状态设置 / 控制器状态信息
|
控制器状态设置 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 04 XX XX 11 |
3 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
工作模式 |
unsigned int8 |
查看工作模式表 |
|
|
byte[1] |
亮度倍率 |
unsigned int8 |
1~100(最大亮度百分比,用于总控) |
|
|
byte[2] |
灯光数量 |
unsigned int8 |
控制的灯光LED数量 |
|
|
byte[3~7] |
/ |
/ |
/ |
|
|
控制器状态信息 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 04 XX XX B1 |
8 |
500 |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
工作模式 |
unsigned int8 |
查看工作模式表 |
|
|
byte[1] |
亮度倍率 |
unsigned int8 |
1~100 |
|
|
byte[2] |
灯光数量 |
unsigned int8 |
控制的灯光LED数量 |
|
|
byte[3~7] |
/ |
/ |
/ |
|
|
触碰开关表 |
||
|
位 |
值 |
说明 |
|
byte[0] |
0x00 |
待机模式(蓝色呼吸灯) |
|
0x01 |
警报模式(红色快闪) |
|
|
0x02 |
单点控制 |
|
|
0x03 |
呼吸模式 |
|
举例: 型号0x02 编号0x03 的灯光使用警报模式 100亮度 50个led,发送CANID:0x04 02 03 11 数据:01 64 32 。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x04 02 03 11
数据帧
扩展帧
3
01 64 32
上位机
0x04 02 03 B1
数据帧
扩展帧
3
01 64 32
2. 单点灯光状态设置
用于单一LED的控制,可以每个LED都有不同颜色
|
控制器状态设置 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 04 XX XX 12 |
8 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
灯光ID |
unsigned int8 |
ID从1开始,0为空 |
|
|
byte[1] |
R值 |
unsigned int8 |
RGB的R值 |
|
|
byte[2] |
G值 |
unsignedint8 |
RGB的G值 |
|
|
byte[3] |
B值 |
unsigned int8 |
RGB的B值 |
|
|
byte[4] |
灯光ID |
unsigned int8 |
ID从1开始,0为空 |
|
|
byte[5] |
R值 |
unsigned int8 |
RGB的R值 |
|
|
byte[6] |
G值 |
unsignedint8 |
RGB的G值 |
|
|
byte[7] |
B值 |
unsigned int8 |
RGB的B值 |
|
每次至多设置两个LED,可以连续发送,单个LED可以设置另一个ID为0
需要工作模式为单点控制才有效
举例: 型号0x02 编号0x03 的灯光设置第一个LED 白色,发送CANID:0x04 02 03 12 数据:01 FF FF FF 00 00 00 00。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x04 02 03 12
数据帧
扩展帧
8
01 FF FF FF 00 00 00 00
上位机
/
/
/
/
/
3. 呼吸模式设置 / 设置成功
呼吸模式是所有灯以一种颜色渐变
|
呼吸模式设置 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 04 XX XX 13 |
4 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
呼吸周期 |
unsigned int8 |
单位:S |
|
|
byte[1] |
R值 |
unsigned int8 |
RGB的R值 |
|
|
byte[2] |
G值 |
unsigned int8 |
RGB的G值 |
|
|
byte[3] |
B值 |
unsigned int8 |
RGB的B值 |
|
|
byte[4~7] |
/ |
/ |
/ |
|
|
设置成功 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 04 XX XX B3 |
0 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0~7] |
/ |
/ |
/ |
|
需要工作模式为呼吸模式才有效
举例: 型号0x02 编号0x03 的灯光设置LED 白色1s呼吸,发送CANID:0x04 02 03 13 数据:01 64 32 。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x04 02 03 13
数据帧
扩展帧
4
01 FF FF FF
上位机
0x04 02 03 B3
数据帧
扩展帧
0
/
电源类CAN协议标准
为了更好的兼容不同设备,我们规范了CAN协议的标准,使得同类型不同型号设备能无缝切换,自动被ROS识别并直接使用,方便更换硬件时候的软件移植工作。以下为电源使用的专用CAN协议。
请先确保阅读了CAN协议构架说明再开始以下内容
请注意使用设备CANID替换表中XX部分
电源类设备的大类ID为 06
电源指令总表
此表展示了专用指令的所有指令内容,方便快速查询和定位
|
指令集 |
反馈集 |
重要性 |
说明 |
|||||||||||
|
设备对象 |
命令内容 |
大类 (00~1F) |
型号 (00~FF) |
编号 (00~FF) |
功能 (00~FF) |
大类 (00~1F) |
型号 (00~FF) |
编号 (00~FF) |
功能 (00~FF) |
反馈内容 |
周期性 |
|||
|
电池 |
/ |
/ |
/ |
/ |
/ |
06 |
xx |
xx |
B1 |
BMS状态信息 |
周期反馈 |
必备 |
||
|
/ |
/ |
/ |
/ |
/ |
06 |
xx |
xx |
B2 |
BMS数据反馈 |
周期反馈 |
必备 |
|||
|
充电站 |
充电站设置 |
06 |
xx |
xx |
13 |
06 |
xx |
xx |
B3 |
充电站状态信息 |
周期反馈 |
必备 |
||
|
/ |
/ |
/ |
/ |
/ |
06 |
xx |
xx |
B4 |
充电站数据反馈 |
周期反馈 |
必备 |
|||
|
数字电源 |
数字电源设置 |
06 |
xx |
xx |
15 |
06 |
xx |
xx |
B5 |
电源数据反馈 |
周期反馈 |
必备 |
||
1. BMS状态信息
用于带有BMS功能的电池包的数据采集
|
BMS状态信息 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 06 XX XX B1 |
4 |
1000 |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
工作状态 |
unsigned int8 |
0x00: 正常 / 0x01: 警告 /0x02: 保护 |
|
|
byte[1] |
警告状态 |
unsigned int8 |
警告状态表 |
|
|
byte[2] |
保护状态 |
unsigned int8 |
保护状态表 |
|
|
byte[3] |
充电标识 |
unsigned int8 |
0x00: 未充电 / 0x01: 充电中 |
|
|
byte[4~7] |
/ |
/ |
/ |
|
|
警告状态表 |
||
|
位 |
值 |
说明 |
|
bit[0] |
0: 正常 / 1: 警告 |
电池过压警告 |
|
bit[1] |
0: 正常 / 1: 警告 |
电池欠压警告 |
|
bit[2] |
0: 正常 / 1: 警告 |
电池高温警告 |
|
bit[3] |
0: 正常 / 1: 警告 |
电池低温警告 |
|
bit[4] |
0: 正常 / 1: 警告 |
放电过流警告 |
|
bit[5] |
0: 正常/ 1: 警告 |
充电过流警告 |
|
bit[6] |
0: 正常 / 1: 警告 |
低电量警告(SOC<20%) |
|
bit[7] |
/ |
/ |
|
保护状态表 |
||
|
位 |
值 |
说明 |
|
bit[0] |
0: 正常 / 1: 触发 |
电池过压保护 |
|
bit[1] |
0: 正常 / 1: 触发 |
电池欠压保护 |
|
bit[2] |
0: 正常 / 1: 触发 |
电池高温保护 |
|
bit[3] |
0: 正常 / 1: 触发 |
电池低温保护 |
|
bit[4] |
0: 正常 / 1: 触发 |
放电过流保护 |
|
bit[5] |
0: 正常 / 1: 触发 |
充电过流保护 |
|
bit[6] |
0: 正常 / 1: 触发 |
低电量保护(SOC<10%) |
|
bit[7] |
0: 正常 / 1: 触发 |
短路保护 |
电池包必须带有BMS才能使用该功能
举例: 型号0x01 编号0x02 的BMS 充电中。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
/
/
/
/
/
上位机
0x06 01 02 B1
数据帧
扩展帧
4
00 00 00 01
2. BMS数据反馈
用于带有BMS功能的电池包的数据采集
|
BMS数据反馈 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 06 XX XX B2 |
8 |
500 |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
SOC |
unsigned int8 |
范围 0~100 |
|
|
byte[1] |
SOH |
unsigned int8 |
范围 0~100 |
|
|
byte[2] |
电池电压低8位 |
unsigned int16 |
单位:0.01V |
|
|
byte[3] |
电池电压高8位 |
|||
|
byte[4] |
电池电流低8位 |
signed int16 |
单位:0.1A |
|
|
byte[5] |
电池电流高8位 |
|||
|
byte[6] |
电池温度低8位 |
signed int16 |
单位:0.1℃ |
|
|
byte[7] |
电池温度高8位 |
|||
电池包必须带有BMS才能使用该功能
举例: 型号0x01 编号0x02 的BMS 满电48V反馈。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
/
/
/
/
/
上位机
0x06 01 02 B2
数据帧
扩展帧
8
64 64 C0 12 00 00 68 01
3. 充电站设置
用于配套的自动充电站的设置
|
充电站设置 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 06 XX XX 13 |
5 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
工作模式 |
unsigned int8 |
0:自动(默认) /1:手动 查看工作模式功能表 |
|
|
byte[1] |
手动开关设置(仅手动模式有效) |
unsigned int8 |
0:断开(默认) /1:连接 查看工作模式功能表 |
|
|
byte[2] |
蜂鸣器使能(报警无法关闭) |
unsigned int8 |
0:关闭 /1:开启(默认) |
|
|
byte[3] |
再充电压差值(与满电电压的压差) |
unsigned int8 |
单位:0.1V(默认1.0V) |
|
|
byte[4] |
充电截至电流 |
unsigned int8 |
单位:0.1A(默认0.2A) |
|
|
byte[5~7] |
/ |
/ |
/ |
|
|
充电站状态信息 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 06 XX XX B3 |
7 |
500/接触触发(看备注) |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
工作模式 |
unsigned int8 |
0:自动 /1:手动 |
|
|
byte[1] |
充电站探测状态 |
unsigned int8 |
0:未接触 /1:已接触 |
|
|
byte[2] |
工作状态 |
unsigned int8 |
0: 断开/ 1:连接 / 2:已充满(低电流) / 3:错误 |
|
|
byte[3] |
错误状态 |
unsigned int8 |
查看错误状态表 |
|
|
byte[4] |
蜂鸣器使能状态 |
unsigned int8 |
0:关闭 /1:开启(默认) |
|
|
byte[5] |
再充电压差值 |
unsigned int8 |
单位:0.1V(默认1.0V) |
|
|
byte[6] |
充电截至电流 |
unsigned int8 |
单位:0.1A(默认0.2A) |
|
|
byte[7] |
/ |
/ |
/ |
|
|
错误状态表 |
||
|
字节 |
状态值 |
说明 |
|
byte[3] |
0x00 |
无错误 |
|
0x01 |
电源过压 |
|
|
0x02 |
充电过流 |
|
|
0x03 |
短路保护 |
|
|
工作状态指示表 |
||
|
工作状态 |
LED状态 |
蜂鸣器状态 |
|
断开(未接触) |
无灯 |
无 |
|
断开(已接触) |
绿灯闪烁 |
无 |
|
连接 |
红绿交替 |
无 |
|
已充满 |
绿灯常亮 |
无 |
|
错误 |
红灯常亮 |
按规定的错误发声模式 |
|
工作模式功能表 |
|||
|
工作模式 |
探测状态 |
手动开关 |
工作状态 |
|
自动 |
未接触 |
无效 |
断开 |
|
接触 |
无效 |
连接 |
|
|
手动 |
未接触 |
无效 |
断开 |
|
接触 |
连接 |
连接 |
|
|
断开(默认) |
断开 |
||
一般反馈周期为500ms,如果出现充电站探测变化则立即发送充电站状态信息帧
再冲电电压差指完成第一次充电后,如果电池电压下降超过设置的压差值,会再次启动充电
举例: 型号0x02 编号0x03 的充电站 手动控制连接。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x06 02 03 13
数据帧
扩展帧
5
01 01 00 0A 02
上位机
0x06 02 03 B3
数据帧
扩展帧
7
01 01 01 00 00 0A 02
4. 充电站数据反馈
用于配套的自动充电站的充电数据反馈
|
充电站数据反馈 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 06 XX XX B4 |
4 |
500 |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
充电电压低8位 |
unsigned int16 |
单位:0.01V |
|
|
byte[1] |
充电电压高8位 |
|||
|
byte[2] |
充电电流低8位 |
signed int16 |
单位:0.1A |
|
|
byte[3] |
充电电流高8位 |
|||
|
byte[4~7] |
/ |
/ |
/ |
|
举例: 型号0x02 编号0x03 的充电站48V 1A充电。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
/
/
/
/
/
上位机
0x06 02 03 B4
数据帧
扩展帧
4
C0 12 0A 00
5. 数字电源设置
用于专用的数字电源
|
数字电源设置 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 06 XX XX 15 |
8 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
电源通道ID |
unsigned int8 |
1~255 |
|
|
byte[1] |
模式 |
unsigned int8 |
1:恒压模式 / 2:恒流模式 |
|
|
byte[2] |
反馈周期 |
unsigned int8 |
单位ms |
|
|
byte[3] |
/ |
/ |
/ |
|
|
byte[4] |
输出电流或最大电流 |
unsigned int16 |
单位 mA |
|
|
byte[5] |
||||
|
byte[6] |
输出电压或最大电压 |
unsigned int16 |
单位 mV |
|
|
byte[7] |
||||
|
数字电源数据反馈 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 06 XX XX B5 |
8 |
按设置周期 |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
电源通道ID |
unsigned int8 |
1~255 |
|
|
byte[1] |
模式 |
unsigned int8 |
1:恒压模式 / 2:恒流模式 |
|
|
byte[2] |
错误码 |
unsigned int8 |
查看错误状态码 |
|
|
byte[3] |
/ |
/ |
/ |
|
|
byte[4] |
输出电流或最大电流 |
unsigned int16 |
单位 mA |
|
|
byte[5] |
||||
|
byte[6] |
输出电压或最大电压 |
unsigned int16 |
单位 mV |
|
|
byte[7] |
||||
|
错误状态表 |
||
|
字节 |
状态值 |
说明 |
|
byte[2] |
0x00 |
无错误 |
|
0x01 |
电源过压 |
|
|
0x02 |
电源过流 |
|
|
0x03 |
电源过温 | |
电子开关类CAN协议标准
为了更好的兼容不同设备,我们规范了CAN协议的标准,使得同类型不同型号设备能无缝切换,自动被ROS识别并直接使用,方便更换硬件时候的软件移植工作。以下为电子开关使用的专用CAN协议。
请先确保阅读了CAN协议构架说明再开始以下内容
请注意使用设备CANID替换表中XX部分
电子开关类设备的大类ID为 0A
电子开关指令总表
此表展示了专用指令的所有指令内容,方便快速查询和定位
|
指令集 |
反馈集 |
重要性 |
说明 |
|||||||||||
|
设备对象 |
命令内容 |
大类 ( 00~1F) |
型号 (00~FF) |
编号 (00~FF) |
功能 (00~FF) |
大类 (00~1F) |
型号 (00~FF) |
编号 (00~FF) |
功能 (00~FF) |
反馈内容 |
周期性 |
|||
|
电子开关 |
可控开关状态设置 |
0A |
xx |
xx |
11 |
0A |
xx |
xx |
B1 |
可控开关状态信息 |
周期反馈 |
选备 |
开关性质只能是其中一种 | |
|
/ |
/ |
/ |
/ |
/ |
0A |
xx |
xx |
B2 |
按键状态信息 |
周期反馈 |
选备 |
|||
|
/ |
/ |
/ |
/ |
/ |
0A |
xx |
xx |
B3 |
AD状态信息 |
周期反馈 |
选备 |
|||
|
反馈周期设置 |
0A |
xx |
xx |
14 |
0A |
xx |
xx |
B4 |
反馈周期信息 |
即时反馈 |
选备 |
|||
1. 可控开关状态设置 / 可控开关状态信息
用于可控的IO设备
|
可控开关状态设置 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 0A XX XX 11 |
1 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
设置开关 |
unsigned int8 |
0x00: 关闭 / 0x01: 开启 |
|
|
byte[1~7] |
/ |
/ |
/ |
|
|
可控开关状态信息 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 0A XX XX B1 |
7 |
默认1000/触发模式 |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
开关状态 |
unsigned int8 |
0x00: 关闭 / 0x01: 开启 |
|
|
byte[1~7] |
/ |
/ |
/ |
|
可控开关指通过单一变量控制启停的设备,包括灯光、门锁、气泵、电磁阀等
保持每次操作间隔超过 500ms,先读取状态再操作,防止过频繁烧毁部件
举例: 型号0x02 编号0x03 的开关开启, 发送CANID:0x 0A 02 03 11 数据:01。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x0A 02 03 11
数据帧
扩展帧
1
01
上位机
0x0A 02 03 B1
数据帧
扩展帧
1
01
2. 按键状态信息
用于按键单输入设备的控制
|
按键状态信息 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 01 XX XX B2 |
8 |
默认100/触发模式 |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
按键1 |
unsigned int8 |
0x00: 未触发 / 0x01: 触发 |
|
|
byte[1] |
按键2 |
unsigned int8 |
0x00: 未触发 / 0x01: 触发 |
|
|
byte[2] |
按键3 |
unsigned int8 |
0x00: 未触发 / 0x01: 触发 |
|
|
byte[3] |
按键4 |
unsigned int8 |
0x00: 未触发 / 0x01: 触发 |
|
|
byte[4] |
按键5 |
unsigned int8 |
0x00: 未触发 / 0x01: 触发 |
|
|
byte[5] |
按键6 |
unsigned int8 |
0x00: 未触发 / 0x01: 触发 |
|
|
byte[6] |
按键7 |
unsigned int8 |
0x00: 未触发 / 0x01: 触发 |
|
|
byte[7] |
按键8 |
unsigned int8 |
0x00: 未触发 / 0x01: 触发 |
|
使用触发模式要注意按键抖动问题
举例: 型号0x02 编号0x03 的按键1按下。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
/
/
/
/
/
上位机
0x0A 02 03 B2
数据帧
扩展帧
8
01 00 00 00 00 00 00 00
3. AD状态信息
用于AD输入设备的控制
|
AD状态信息 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 01 XX XX B3 |
8 |
默认100 |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
AD1低8位 |
signed int16 |
|
|
|
byte[1] |
AD1高8位 |
|||
|
byte[2] |
AD2低8位 |
signed int16 |
|
|
|
byte[3] |
AD2高8位 |
|||
|
byte[4] |
AD3低8位 |
signed int16 |
|
|
|
byte[5] |
AD3高8位 |
|||
|
byte[6] |
AD4低8位 |
signed int16 |
|
|
|
byte[7] |
AD4高8位 |
|||
举例: 型号0x02 编号0x03 的AD1 = 80%。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
/
/
/
/
/
上位机
0x0A 02 03 B3
数据帧
扩展帧
8
50 00 00 00 00 00 00 00
4. 反馈周期设置 / 反馈周期信息
|
反馈周期设置 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 0A XX XX 14 |
4 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
设置周期 |
unsigned int32 |
0: 触发模式 / 其他数值单位ms |
|
|
byte[1] |
||||
|
byte[2] |
||||
|
byte[3] |
||||
|
byte[4~7] |
/ |
/ |
/ |
|
|
反馈周期信息 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 0A XX XX B4 |
0 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0~7] |
/ |
/ |
/ |
|
当反馈周期设置为0时进入触发模式,该模式下只有开关状态变化才会反馈
举例: 型号0x02 编号0x03 的设置反馈周期100ms, 发送CANID:0x 0A 02 03 14 数据:64 00 00 00。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x0A 02 03 14
数据帧
扩展帧
4
64 00 00 00
上位机
0x0A 02 03 B4
数据帧
扩展帧
0
/
惯导类CAN协议标准
为了更好的兼容不同设备,我们规范了CAN协议的标准,使得同类型不同型号设备能无缝切换,自动被ROS识别并直接使用,方便更换硬件时候的软件移植工作。以下为惯导设备使用的专用CAN协议。
请先确保阅读了CAN协议构架说明再开始以下内容
请注意使用设备CANID替换表中XX部分
惯导类设备的大类ID为 0B
惯导传感器指令总表
此表展示了专用指令的所有指令内容,方便快速查询和定位
|
指令集 |
反馈集 |
重要性 |
说明 |
|||||||||||
|
设备对象 |
命令内容 |
大类 ( 00~1F) |
型号 (00~FF) |
编号 (00~FF) |
功能 (00~FF) |
大类 (00~1F) |
型号 (00~FF) |
编号 (00~FF) |
功能 (00~FF) |
反馈内容 |
周期性 |
|||
|
惯导传感器 |
角度信息设置 |
0B |
xx |
xx |
11 |
0B |
xx |
xx |
B1 |
传感器角度信息 |
周期反馈 |
必备 |
||
|
角速度信息设置 |
0B |
xx |
xx |
12 |
0B |
xx |
xx |
B2 |
传感器角速度信息 |
周期反馈 |
必备 |
|||
|
加速度信息设置 |
0B |
xx |
xx |
13 |
0B |
xx |
xx |
B3 |
传感器加速度信息 |
周期反馈 |
必备 |
|||
|
四元数信息设置 |
0B |
xx |
xx |
14 |
0B |
xx |
xx |
B4 |
传感器四元数信息1 |
使能后周期反馈 |
选备 |
|||
|
/ |
/ |
/ |
/ |
/ |
0B |
xx |
xx |
B5 |
传感器四元数信息2 |
使能后周期反馈 |
选备 |
|||
1. 角度信息设置 / 传感器角度信息
|
角度信息设置 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 0B XX XX 11 |
1 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
发送周期设置 |
unsigned int8 |
0: 关闭/ 1~10: 10ms / 10~255:设定值(默认10ms) |
|
|
byte[1~7] |
/ |
/ |
/ |
|
| 传感器角度信息 | ||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 0B XX XX B1 |
8 |
默认10 |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
x轴旋转角[7:0] |
signed int16 |
单位:0.01deg(°) |
|
|
byte[1] |
x轴旋转角[8:15] |
|||
|
byte[2] |
y轴旋转角 [7:0] |
signed int16 |
单位:0.01deg(°) |
|
|
byte[3] |
y轴旋转角 [8:15] |
|||
|
byte[4] |
z轴旋转角[7:0] |
signed int16 |
单位:0.01deg(°) |
|
|
byte[5] |
z轴旋转角[8:15] |
|||
|
byte[6] |
发布时间戳[7:0] |
unsigned int16 |
单位:ms |
|
|
byte[7] |
发布时间戳[8:15] |
|||
举例: 型号0x01 编号0x02 的IMU 设置10ms,反馈x=0.5° y=1.0° z=1.5°。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x0B 01 02 11
数据帧
扩展帧
1
14
上位机
0x0B 01 02 B1
数据帧
扩展帧
8
32 00 64 00 96 00 01 00
2. 角速度设置 / 角速度信息
|
角速度信息设置 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 0B XX XX 12 |
1 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
发送周期设置 |
unsigned int8 |
0: 关闭/ 1~10: 10ms / 10~255:设定值(默认10ms) |
|
|
byte[1~7] |
/ |
/ |
/ |
|
| 角速度信息 | ||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 0B XX XX B2 |
8 |
默认10 |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
x方向角速度[7:0] |
signed int16 |
单位:0.01 deg/s |
|
|
byte[1] |
x方向角速度 [8:15] |
|||
|
byte[2] |
y方向角速度 [7:0] |
signed int16 |
单位:0.01 deg/s |
|
|
byte[3] |
y方向角速度 [8:15] |
|||
|
byte[4] |
z方向角速度 [7:0] |
signed int16 |
单位:0.01 deg/s |
|
|
byte[5] |
z方向角速度 [8:15] |
|||
|
byte[6] |
发布时间戳[7:0] |
unsigned int16 |
单位:ms |
|
|
byte[7] |
发布时间戳[8:15] |
|||
举例: 型号0x01 编号0x02 的IMU 设置10ms,反馈x=0.5°/s y=1.0°/s z=1.5°/s。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x0B 01 02 12
数据帧
扩展帧
1
14
上位机
0x0B 01 02 B2
数据帧
扩展帧
8
32 00 64 00 96 00 01 00
3. 加速度设置 / 加速度信息
|
加速度信息设置 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 0B XX XX 13 |
1 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
发送周期设置 |
unsigned int8 |
0: 关闭/ 1~10: 10ms / 10~255:设定值(默认10ms) |
|
|
byte[1~7] |
/ |
/ |
/ |
|
| 加速度信息 | ||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 0B XX XX B3 |
8 |
默认10 |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
x方向加速度[7:0] |
signed int16 |
单位:0.01m/s² |
|
|
byte[1] |
x方向加速度 [8:15] |
|||
|
byte[2] |
y方向加速度 [7:0] |
signed int16 |
单位:0.01m/s² |
|
|
byte[3] |
y方向加速度 [8:15] |
|||
|
byte[4] |
z方向加速度 [7:0] |
signed int16 |
单位:0.01m/s² |
|
|
byte[5] |
z方向加速度 [8:15] |
|||
|
byte[6] |
发布时间戳[7:0] |
unsigned int16 |
单位:ms |
|
|
byte[7] |
发布时间戳[8:15] |
|||
举例: 型号0x01 编号0x02 的IMU 设置10ms,反馈x=0.5m/s y=1.0m/s z=1.5m/s。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x0B 01 02 13
数据帧
扩展帧
1
14
上位机
0x0B 01 02 B3
数据帧
扩展帧
8
32 00 64 00 96 00 01 00
4. 四元数信息设置
|
四元数信息设置 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 0B XX XX 14 |
1 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
发送周期设置 |
unsigned int8 |
0: 关闭(默认)/ 1~10: 10ms / 10~255:设定值 |
|
|
byte[1~7] |
/ |
/ |
/ |
|
| 四元数信息1 | ||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 0B XX XX B4 |
8 |
默认关闭 |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
四元数qw[0:7] |
float |
||
|
byte[1] |
四元数qw[8:15] |
|||
|
byte[2] |
四元数qw[16:23] |
|||
|
byte[3] |
四元数qw[24:31] |
|||
|
byte[4] |
四元数qx[0:7] |
float |
||
|
byte[5] |
四元数qx[8:15] |
|||
|
byte[6] |
四元数qx[16:23] |
|||
|
byte[7] |
四元数qx[24:31] |
|||
| 四元数信息2 | ||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 0B XX XX B5 |
8 |
默认关闭 |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
四元数qy[0:7] |
float |
||
|
byte[1] |
四元数qy[8:15] |
|||
|
byte[2] |
四元数qy[16:23] |
|||
|
byte[3] |
四元数qy[24:31] |
|||
|
byte[4] |
四元数qz[0:7] |
float |
||
|
byte[5] |
四元数qz[8:15] |
|||
|
byte[6] |
四元数qz[16:23] |
|||
|
byte[7] |
四元数qz[24:31] |
|||
应用软件
XVIEW 测试系统
XVIEW 是一款为测试标准化设备而设计的软件平台,能在线获取设备数据,操控设备运作,监控CAN总线和串口的数据传输,在设备出现使用问题时可以作为一个稳定的测试方式,可快速定位问题点。、
该软件支持win10系统及ubuntu20及以上版本使用,并需要搭配 WIFI HUB使用
XVIEW 软件下载
使用步骤:
第一次打开软件时会弹窗选择语言,目前支持简体中文及英文,选择需要的语言即可,后面也可在界面设置。
- 下载并安装CAN-COM HUB windows驱动(链接下载),ubuntu不需要驱动,但需要先添加可执行权限,然后将当前用户添加至dialout分组。
- 通过HUB模块进行设备接线(方法参考CAN-COM HUB用户手册),HUB模块蜂鸣器响三声,HUB模块启动
- 设备上电开机,打开XVIEW软件,进入引导界面
- 添加设备,点击引导界面的设备管理按键进入设备管理,选择COM端口,输入需要设置的名称,点击添加即可,该操作只需要进行一次
- 返回引导界面,选择刚才添加的设备,点击连接设备,连接成功后进入主界面
- 进入主界面后,界面切换至对应窗口,比如底盘,此时使能设备按钮高亮,点击使能设备,与底盘进行通信
2) WIFI HUB
- 通过HUB模块进行设备接线(方法参考WiFi HUB用户手册),HUB模块蜂鸣器响三声,HUB模块启动,HUB支持有线和无线连接两种方式,按住HUB左上的模式按键可进行切换,按键下的LED闪绿灯时对应有线连接模式,闪黄灯时对应无线AP连接模式,无线模式需要连接到对应的WIFI。
- 设备上电开机,打开XVIEW软件,进入引导界面
- 添加设备,点击引导界面的设备管理按键进入设备管理,输入设备名,输入IP地址和端口号,默认的IP是10.233.233.1:80,点击添加即可,该操作只需要进行一次
- 返回引导界面,选择刚才添加的设备,点击连接设备,连接成功后进入主界面
- 进入主界面后,界面切换至对应窗口,比如底盘,此时使能设备按钮高亮,点击使能设备,与底盘进行通信
xpkg_carrier Interface Description
Payload Carrier Interface
Public APIs
Publish
| Topic | Msg Type | Description |
|---|---|---|
/carrier_state |
nav_msgs/Odometry |
Publish current carrier state |
Subscribe
| Topic | Msg Type | Description |
|---|---|---|
/carrier_cmd_vel |
geometry_msgs/TwistStamped |
Subscribe to target carrier velocity |
/carrier_cmd_pos |
geometry_msgs/PoseStamped |
Subscribe to target carrier pose |
Parameter
| Name | Data Type | Description |
|---|---|---|
carrier_limit_vel_z |
double |
The limitation of the speed, for both rising and falling. The unit is meters per second ($m/s$) |
Detailed Description
/carrier_state
This topic publishes the current state of the payload carrier.
/carrier_cmd_vel
This topic receives the target velocity of the payload carrier.
-
Type:
geometry_msgs/TwistStampedstd_msgs/Header header uint32 seq time stamp string frame_id geometry_msgs/Twist twist geometry_msgs/Vector3 linear float64 x float64 y float64 z geometry_msgs/Vector3 angular float64 x float64 y float64 z -
Usage:
-
header-
stampis the timestamp of the message -
frame_idis the base link of the chassis, typicallybase_link
-
-
twist- The target velocity of the carrier (only for velocity control mode)
- The
twist.linear.zindicates the rising speed of the carrier (negative values indicate falling) - Unit: meters per second ($m/s$)
-
-
Example:
msg = geometry_msgs.msg.TwistStamped() msg.header.stamp = rospy.Time.now() msg.header.frame_id = "base_link" msg.twist.linear.z = 0.2
/carrier_cmd_pos
This topic receives the target pose of the payload carrier.
-
Type:
geometry_msgs/PoseStampedstd_msgs/Header header uint32 seq time stamp string frame_id geometry_msgs/Pose pose geometry_msgs/Point position float64 x float64 y float64 z geometry_msgs/Quaternion orientation float64 x float64 y float64 z float64 w -
Usage:
-
header-
stampis the timestamp of the message -
frame_idis the base link of the chassis, typicallybase_link
-
-
pose- The target pose of the carrier (only for position control mode)
- The
pose.position.zindicates the height of the carrier - Unit: meters ($m$)
-
-
Example:
msg = geometry_msgs.msg.PoseStamped() msg.header.stamp = rospy.Time.now() msg.header.frame_id = "base_link" msg.pose.position.z = 0.2