1#ifndef AGVC_INTERFACE_TYPE_H
2#define AGVC_INTERFACE_TYPE_H
12#define ENUM_AgvcErrorCodes_DECLARES \
13 ENUM_ITEM(AGVC_OK, 0, "成功") \
14 ENUM_ITEM(AGVC_BAD_STATE, 1, "状态错误") \
15 ENUM_ITEM(AGVC_QUEUE_FULL, 2, "规划队列满") \
16 ENUM_ITEM(AGVC_BUSY, 3, "上一条指令正在执行中") \
17 ENUM_ITEM(AGVC_TIMEOUT, 4, "超时") \
18 ENUM_ITEM(AGVC_INVL_ARGUMENT, 5, "参数无效") \
19 ENUM_ITEM(AGVC_NOT_IMPLETEMENT, 6, "接口未实现") \
20 ENUM_ITEM(AGVC_NO_ACCESS, 7, "无法访问") \
21 ENUM_ITEM(AGVC_CONN_REFUSED, 8, "连接被拒绝") \
22 ENUM_ITEM(AGVC_CONN_RESET, 9, "连接被重置") \
23 ENUM_ITEM(AGVC_INPROGRESS, 10, "正在执行中") \
24 ENUM_ITEM(AGVC_EIO, 11, "input/output error") \
25 ENUM_ITEM(AGVC_NOBUFFS, 12, "") \
26 ENUM_ITEM(AGVC_REQUEST_IGNORE, 13, "本次请求被忽略") \
27 ENUM_ITEM(AGVC_ALGORITHM_PLAN_FAILED, 14, "运动规划算法错误") \
28 ENUM_ITEM(AGVC_VERSION_INCOMPAT, 15, "接口版本不匹配") \
29 ENUM_ITEM(AGVC_DIMENSION_ERR, 16, "输入参数维数不对") \
30 ENUM_ITEM(AGVC_SINGULAR_ERR, 17, "输入的配置可能会奇异") \
31 ENUM_ITEM(AGVC_POS_BOUND_ERR, 18, "输入的位置边界超过极限范围") \
32 ENUM_ITEM(AGVC_INIT_POS_ERR, 19, "初始位置输入不合理") \
33 ENUM_ITEM(AGVC_ELP_SETTING_ERR, 20, "包络体设置错误") \
34 ENUM_ITEM(AGVC_TRAJ_GEN_FAIL, 21, "轨迹生成失败") \
35 ENUM_ITEM(AGVC_TRAJ_SELF_COLLISION, 22, "轨迹自碰撞") \
36 ENUM_ITEM(AGVC_IK_NO_CONVERGE, 23, "逆解计算不收敛,计算出错") \
37 ENUM_ITEM(AGVC_IK_OUT_OF_RANGE, 24, "逆解计算超出机器人最大限制") \
38 ENUM_ITEM(AGVC_IK_CONFIG_DISMATCH, 25, "逆解输入配置存在错误") \
39 ENUM_ITEM(AGVC_IK_JACOBIAN_FAILED, 26, "逆解雅可比矩阵计算失败") \
40 ENUM_ITEM(AGVC_IK_NO_SOLU, 27, "目标点存在解析解,但均不满足选解条件") \
41 ENUM_ITEM(AGVC_IK_UNKOWN_ERROR, 28, "逆解返回未知类型错误") \
42 ENUM_ITEM(AGVC_ERR_UNKOWN, 99999, "Unkown error occurred.") \
43 ENUM_ITEM(STATION_SRV_OK, 100, "站点操作成功") \
44 ENUM_ITEM(STATION_SRV_NOT_FOUND, -101, "站点服务器未响应") \
45 ENUM_ITEM(STATION_CREAT_FAILED, -102, "站点创建失败") \
46 ENUM_ITEM(STATION_DELETE_FAILED, -103, "站点删除失败") \
47 ENUM_ITEM(PATH_SRV_OK, 200, "路径操作成功") \
48 ENUM_ITEM(PATH_SRV_NOT_FOUND, -201, "路径服务器未响应") \
49 ENUM_ITEM(PATH_CREAT_FAILED, -202, "路径创建失败") \
50 ENUM_ITEM(PATH_DELETE_FAILED, -203, "路径删除失败") \
51 ENUM_ITEM(MAP_SRV_OK, 300, "地图操作成功") \
52 ENUM_ITEM(MAP_SRV_NOT_FOUND, -301, "地图服务器未响应") \
53 ENUM_ITEM(MAP_HEADER_LIST_FAILED, -302, "获取地图header list 失败") \
54 ENUM_ITEM(MAP_HEADER_FAILED, -303, "获取地图header失败") \
55 ENUM_ITEM(MAP_SET_FAILED, -304, "地图设置失败") \
56 ENUM_ITEM(MAP_SAVE_FAILED, -305, "地图保存失败") \
57 ENUM_ITEM(MAP_SWITCH_FAILED, -306, "地图切换失败") \
58 ENUM_ITEM(MAP_DELETE_FAILED, -307, "地图删除失败") \
59 ENUM_ITEM(MAP_VIRTUAL_SRV_OK, 301, "虚拟区操作成功") \
60 ENUM_ITEM(MAP_VIRTUAL_SRV_NOT_FOUND, -308, "虚拟区服务器未响应") \
61 ENUM_ITEM(MAP_VIRTUAL_SET_PARAM_WRONG, -309, "虚拟区设置参数错误") \
62 ENUM_ITEM(MAP_VIRTUAL_ADD_FAILED, -310, "添加虚拟区失败") \
63 ENUM_ITEM(MAP_VIRTUAL_DELETE_FAILED, -311, "删除虚拟区失败") \
64 ENUM_ITEM(IP_SRV_OK, 400, "IP操作成功") \
65 ENUM_ITEM(IP_SRV_NOT_FOUND, -401, "ip设置服务器未响应") \
66 ENUM_ITEM(IP_NETWORK_NULL, -402, "ip地址网卡名称为空") \
67 ENUM_ITEM(IP_ADDRESS_NULL, -403, "ip地址为空") \
68 ENUM_ITEM(IP_SET_FAILED, -404, "ip设置失败")
70#define ENUM_ITEM(c, n, ...) c = n,
764 [[deprecated(
"Since 0.7.0: use nav_type instead.")]]
869 }
else if (
code_ >= -32099 &&
code_ <= -32000) {
871 }
else if (
code_ == -32700) {
878 const char *
what() const noexcept
override {
return message_.c_str(); }
887 static const char *retval_str[] = {
888#define ENUM_ITEM(n, v, s) s,
895#define ENUM_ITEM(n, v, s) n##_INDEX,
902#define ENUM_ITEM(n, v, s) \
910 index = AGVC_ERR_UNKOWN;
913 return retval_str[(unsigned)index];
918#if defined ENABLE_JSON_TYPES
919#include "bindings/jsonrpc/json_types.h"
AgvcException(int code, const std::string &prefix, const std::string &message) noexcept
const char * what() const noexcept override
AgvcException(int code, const std::string &message) noexcept
FeedbackStatus
一个操作执行后反馈的状态
FeedbackStatus SwitchMapStatus
切换地图异步接口状态,调用接口 switchMap 后的状态
FeedbackStatus RelocationStatus
重定位状态,调用接口 relocation 后的状态
MapInfo OccupancyGridMap
栅格地图
FeedbackStatus SetGridMapAllInfoStatus
设置栅格地图全部信息接口状态,调用接口 setGridMapAllInfo 后的状态
MapVirtualAreaType
地图中虚拟区域的类型
MapInfo Base64PngMap
Base64编码的png地图图片
FeedbackStatus GetPngMapStatus
获取png地图接口状态,调用接口 getBase64PngMapFromAgv 后的状态
FeedbackStatus SendPngMapStatus
发送png地图接口状态,调用接口 sendBase64PngMapToAgv 后的状态
FeedbackStatus NavStatus
agv 导航状态
FeedbackStatus SendGridMapStatus
发送栅格地图接口状态,调用接口 sendGridMapToAgv 后的状态
const char * returnValue2Str(int retval)
FeedbackStatus SaveMapStatus
保存地图异步接口状态,调用接口 saveMap 后的状态
FeedbackStatus PreviewPngMapStatus
获取栅格地图全部信息接口状态,调用接口 previewPngMapFromAgv 后的状态
@ ENUM_AgvcErrorCodes_DECLARES
@ EC_METHOD_NOT_FOUND
方法未找到
FeedbackStatus CalibrationStatus
标定状态
@ BASE64_PNG
base64编码的png地图
MapVirtualAreaShape
地图中虚拟区域的形状
FeedbackStatus ChangeRunningModeStatus
切换运行模式异步接口状态,调用接口 changeRunningMode 后的状态
FeedbackStatus GetGridMapStatus
获取栅格地图接口状态,调用接口 getGridMapFromAgv 后的状态
FeedbackStatus SetPngMapAllInfoStatus
上传Png地图全部信息接口状态,调用接口 setPngMapAllInfo 后的状态
FeedbackStatus GetPngMapAllInfoStatus
获取Png地图全部信息接口状态,调用接口 getPngMapAllInfo 后的状态
@ BEZIER
贝塞尔曲线 B_SPLINE = 4 // B样条曲线
FirmwareUpdateMode
模块固件更新配置
FeedbackStatus GetGridMapAllInfoStatus
获取栅格地图全部信息接口状态,调用接口 getGridMapAllInfo 后的状态
@ FORCE_LEAVE_BOARD
强制自动下桩; 无视当前电量
@ FORCE_TO_BOARD
强制自动上桩; 无视当前电量
@ LOW_POWER_TO_BOARD
低电量自动上桩; 如果当前电量低于低电量阈值,开始上桩;否则,不执行上桩;
@ HIGH_POWER_LEAVE_BOARD
高电量自动下桩; 如果当前电量高于高电量阈值,开始下桩;否则,不执行下桩;
double max_distance
agv 单次调整的最远距离
bool enable
是否要二次调整agv位置,true-调整;false不调整
bool forward_flag
agv 调整方向,true,向车头方向调整,false,向车尾方向调整
double max_angle
agv 单次调整的最大角度
int communication_version
bridge 版本信息
float max_angular
agv允许运行的最大角速度
int battery_version
电池版本信息
int hardware_abstraction_version
硬件抽象层版本信息
int left_motor_firmware_version
左电机固件版本
float max_speed
agv允许运行的最大线速度
int right_motor_firmware_version
右电机固件版本
int master_board_firmware_version
接口板固件版本信息
float surplus_capacity
电池剩余容量
int error_code_version
错误码版本
std::string version
当前控制程序的版本号
异步接口运行状态 暂时存在12个异步接口:saveMap, switchMap, changeRunningMode, relocation, sendBase64PngMapToAgv getGrid...
SendGridMapWorkingStatus send_grid_map_status
发送栅格地图(sendGridMapToAgv)接口的执行状态
Header header
agv的SN码,agv的名称,当前时间,地图的id
GetPngMapAllInfoWorkingStatus get_png_all_status
获取png地图全部信息(getPngMapAllInfo)接口的执行状态
PreviewPngMapWorkingStatus preview_png_map_status
预览png地图(previewPngMapFromAgv)接口的执行状态
RelocationWorkingStatus relocation_status
重定位(relocation)接口的执行状态
SetGridMapAllInfoWorkingStatus set_grid_all_status
设置栅格地图全部信息(setGridMapAllInfo)接口的执行状态
SetPngMapAllInfoWorkingStatus set_png_all_status
设置png地图全部信息(setPngMapAllInfo)接口的执行状态
SaveMapWorkingStatus save_map_status
保存地图(saveMap)接口的执行状态
GetGridMapAllInfoWorkingStatus get_grid_all_status
获取栅格地图全部信息(getGridMapAllInfo)接口的执行状态
GetGridMapWorkingStatus get_grid_map_status
获取栅格地图(getGridMapFromAgv)接口的执行状态
GetPngMapWorkingStatus get_png_map_status
获取png地图(getBase64PngMapFromAgv)接口的执行状态
ChangeModeWorkingStatus change_running_mode_status
切换运行模式(changeRunningMode)接口的执行状态
SwitchMapWorkingStatus switch_map_status
切换地图(switchMap)接口的执行状态
SendPngMapWorkingStatus send_png_map_status
发送png地图(sendBase64PngMapToAgv)接口的执行状态
Speed max_speed
充电过程中的最大行驶速度
std::string cp_station_id
站点id,上桩任务中,表示去往哪个充电站点进行充电;为空时前往最近充电站点
Header header
任务id,任务名称,当前时间,地图id
std::string leave_to_station_id
站点id,下桩任务中,表示下桩导航到哪个站点; 为空时导航到充电站点
AutoChargingType auto_charging_type
自动充电类型
Header header
任务id,任务名称,当前时间,地图id
CalibrationStatus status
标定状态
uint32_t collected_data_count
采集到多少组数据
ChangeRunningModeStatus status
接口changeRunningMode的运行状态 NONE -接口未执行 RUNNING-执行中,FINISH-执行结束
Header header
header.id 代表下发的changeRunningMode指令id
FirmwareUpdateMode right_motor
右电机固件更新信息配置
FirmwareUpdateMode left_motor
左电机固件更新信息配置
FirmwareUpdateMode master_board
接口板固件更新信息配置
std::string firmware_file_path
代表固件包的路径 例如 "/root/update.firm"
std::string update_info
当前固件更新的步骤信息,failed 为升级失败, none 为无固件更新任务
double update_progress
固件更新进度信息,1.0 代表升级成功
GetGridMapAllInfoStatus status
接口getGridMapAllInfo的运行状态 NONE -接口未执行 RUNNING-执行中,FINISH-执行结束
Header header
header.id 代表下发的getGridMapAllInfo指令id
Header header
header.id 代表下发的getGridMapFromAgv指令id
GetGridMapStatus status
接口getGridMapFromAgv的运行状态,NONE -接口未执行 RUNNING-执行中,FINISH-执行结束
Header header
header.id 代表下发的getPngMapAllInfo指令id
GetPngMapAllInfoStatus status
接口getPngMapAllInfo的运行状态,NONE -接口未执行 RUNNING-执行中,FINISH-执行结束
GetPngMapStatus status
接口getBase64PngMapFromAgv的运行状态,NONE -接口未执行 RUNNING-执行中,FINISH-执行结束
Header header
header.id 代表下发的getBase64PngMapFromAgv指令id
std::string ipv4_method
自动分配或者手动连接,对应字段 auto, manual
std::string ipv4_ip
IPv4地址及CIDR码,为空时无效
std::string ipv6_ip
IPv6地址及CIDR码,为空时无效
std::string ipv4_dns
第一个DNS
std::string ipv4_gateway
网关
包含当前地图、当前地图上的站点、当前地图上的路径、当前地图上的虚拟区域信息
std::vector< MapVirtualArea > virtual_areas
当前地图上的虚拟区域信息
std::vector< PathStation > paths
当前地图上的路径信息
std::vector< StationMark > stations
当前地图上的站点信息
uint32_t width
地图宽度,多少个栅格/像素宽度
Pose2d origin
{x(m) y(m) theta(rad)} 地图原点在真实地图下的坐标,指地图原点对应的实际位置坐标。 一张地图中,左下角为地图原点;
std::vector< int8_t > data
地图数据信息
uint32_t height
地图高度,多少个栅格/像素高度
Header header
地图id,地图名称,当前时间,map_id为地图的唯一id
double resolution
分辨率,每个正方形栅格/像素的宽度,单位 m
MapVirtualAreaShape shape
虚拟区域形状
std::vector< Point2d > vertex
虚拟区域的顶点 {{x(m) y(m)},{}, ...} 直线、多边形:按照顺时针顺序把顶点加入到 vertex 中 圆弧:圆弧起点、圆弧上一点、圆弧终点 圆形:圆上按顺序排序的任意不共线三个以上的点...
MapVirtualAreaType type
虚拟区域的类型
Header header
虚拟区域的id,虚拟区域的名称,当前时间,虚拟区域所在地图的id
double width_speed
虚拟墙的宽度/膨胀半径/减速区域的最大速度
bool forward_flag
agv 正向行驶或倒车行驶
std::vector< std::string > stations_id
导航经过的站点id,最后一个站点为导航目标位置 导航类型为自由导航到站点时,或路径导航到站点时有效,其他无效
bool goal_end_rotate
到达目标点后是否根据站点方向旋转,true:旋转 false:不旋转
AdjustParam secondary_adjustment
到达目标点后是否进行二次调整,贴合目标点位置, true:到点调整 false:到点不调整
Pose2d target_pose
目标位姿 {x(m) y(m) theta(rad)} 导航类型为自由导航到任意点时有效,其他无效
Header header
任务id,任务名称,当前时间,地图id
Header header
任务id,任务名称,当前时间,地图id
AutoChargingType auto_charging_type
自动充电类型
std::vector< Point2d > current_trajectory
还没经过的路径点 {{x(m) y(m)},{}, ...}
StationMark goal_station
agv行驶路径目标站点
double max_speed
agv经过该路径时的最大速度
Header header
路径id,路径名称,当前时间,路径所在地图的id
std::vector< Point2d > control_points
路径的控制点,{{x,y},{}, ...}
bool use_direction
生成站点时是否使用站点方向
std::string end_station_id
路径终点站点id
std::string start_station_id
路径起点站点id
接口previewPngMapFromAgv的工作状态
Header header
header.id 代表下发的previewPngMapFromAgv指令id
PreviewPngMapStatus status
接口previewPngMapFromAgv的运行状态 NONE -接口未执行 RUNNING-执行中,FINISH-执行结束
RelocationStatus status
接口Relocation的运行状态,NONE -接口未执行 RUNNING-执行中,FINISH-执行结束
Header header
header.id 代表下发的Relocation指令id
std::vector< std::string > segments
字段列表
int trigger
触发方式(该功能暂未实现): 0 - 周期; 1 - 变化
bool break_release_flag
是否释放刹车,true 代表释放,false 代表未释放
RunningMode running_mode
agv当前运行模式
double total_dist
累计行驶里程,单位 m
double current_dist
本次累计行驶里程,单位 m
double total_running_time
累计运行时间,单位 s
double battery_current
电池电流,单位 A
Speed current_speed
当前行驶速度 {v w},单位{m/s rad/s}
double current_running_time
本次运行时间,单位 s
int8_t location_score
当前定位评分,[0-100]
int8_t safety_edge_status
安全触边状态,0-无,1-左前侧碰撞,2-右前碰撞,3-左后碰撞,4-右后碰撞
Header header
agv的SN码,agv的名称,当前时间,地图的id
bool fault_alarm
故障报警(电机故障、传感器故障、电池故障),具体故障信息可在日志中查看
bool emergency_stop
是否处于急停状态
double battery_voltage
电池电压,单位 V
int8_t remaining_voltage
剩余电量,百分比 % [0-100]
bool localization_loss
是否定位丢失
int8_t battery_status
电池状态,0-无,1-放电,2-充电,3-充满,4-急需充电
Header header
header.id 代表下发的saveMap指令id
SaveMapStatus status
接口SaveMap的运行状态,NONE -接口未执行 RUNNING-执行中,FINISH-执行结束
SendGridMapStatus status
接口sendGridMapToAgv的运行状态,NONE -接口未执行 RUNNING-执行中,FINISH-执行结束
Header header
header.id 代表下发的sendGridMapToAgv指令id
接口sendBase64PngMapToAgv的工作状态
SendPngMapStatus status
接口sendBase64PngMapToAgv的运行状态,NONE -接口未执行 RUNNING-执行中,FINISH-执行结束
Header header
header.id 代表下发的sendBase64PngMapToAgv指令id
Header header
header.id 代表下发的setGridMapAllInfo指令id
SetGridMapAllInfoStatus status
接口setGridMapAllInfo的运行状态 NONE -接口未执行 RUNNING-执行中,FINISH-执行结束
SetPngMapAllInfoStatus status
接口setPngMapAllInfo的运行状态,NONE -接口未执行 RUNNING-执行中,FINISH-执行结束
Header header
header.id 代表下发的setPngMapAllInfo指令id
std::string type
普通站点是"ST",充电站点“CP”
Pose2d pose
站点位姿,{x(m) y(m) theta(rad)}
Header header
站点id,站点名称,当前时间,站点所在地图的id
Header header
header.id 代表下发的switchMap指令id
SwitchMapStatus status
接口switchMap的运行状态,NONE -接口未执行 RUNNING-执行中,FINISH-执行结束