AGVC SDK API  0.7.0
agvc_interface.h
浏览该文件的文档.
1#ifndef AGVC_INTERFACE_H
2#define AGVC_INTERFACE_H
3
4#include <memory>
6
7#define INTERFACE_VERSION_MAJOR 0
8#define INTERFACE_VERSION_MINOR 4
9#define INTERFACE_VERSION_PATCH 0
10#define INTERFACE_VERSION (INTERFACE_VERSION_MAJOR * 1000000 + INTERFACE_VERSION_MINOR * 1000 + INTERFACE_VERSION_PATCH)
11
12namespace agvc_interface {
13
15{
16public:
18 virtual ~AgvcInterface();
19
20 /**
21 * @brief 设置agv系统时间
22 * @param[in] stamp 时间戳,YYYY-MM-DDTHH:mm:ss.ssZ
23 * (e.g.“2017-04-15T11:40:03.12Z”)
24 */
25 int setSystemClock(const std::string &stamp);
26
27 /**
28 * @attention rtde推送
29 * @brief 查询当前agv信息
30 * @return agv详细信息
31 */
33
34 /**
35 * @attention rtde推送
36 * @brief 查询当前agv运行信息
37 * @return agv运行信息
38 */
40
41 /**
42 * @attention rtde推送
43 * @brief 查询agv当前位姿
44 * @return 当前位姿
45 */
47
48 /**
49 * @attention rtde推送
50 * @brief 查询当前激光点云数据
51 * @return 二维激光点坐标
52 */
53 std::vector<Point2d> getLaserPointCloud();
54
55 /**
56 * @brief 查询异步接口的运行情况,不代表异步接口本身的运行结果
57 * @note 异步接口:saveMap, switchMap, changeRunningMode, relocation, sendBase64PngMapToAgv
58 * @note 异步接口:getGridMapAllInfo, setGridMapAllInfo, sendGridMapToAgv, getGridMapFromAgv
59 * @note 异步接口:getPngMapAllInfo, setPngMapAllInfo, getBase64PngMapFromAgv, previewPngMapFromAgv
60 * @note 客户端与agv断联后,调用该接口获取异步接口运行情况
61 * @note 返回值的每个字段中均有header,其中header.id表示下发异步任务时的id号
62 * @return NONE: 异步接口未运行
63 * RUNNING:异步接口运行中
64 * FINISH: 异步接口运行结束
65 */
67
68 /**
69 * @brief 查询当前地图的所有站点信息
70 * @return 当前地图的所有站点信息
71 */
72 std::vector<StationMark> getAllStations();
73
74 /**
75 * @brief 查询指定地图的所有站点信息
76 * @param[in] map_header 指定地图header(命令id,名称,时间,地图id)
77 * @return 指定地图的所有站点信息
78 */
79 std::vector<StationMark> getAllStationsOfTargetMap(const Header &map_header);
80
81 /**
82 * @brief 添加/修改一个站点
83 * @param[in] station 待添加/修改的站点信息
84 * @return 10100000:添加/修改站点成功
85 * else:添加/修改站点失败
86 */
87 int addStation(const StationMark &station);
88
89 /**
90 * @brief 添加/修改多个站点
91 * @param[in] stations 待添加的站点
92 * @return 10100000:添加/修改站点成功
93 * else:添加/修改站点失败
94 */
95 int addStations(const std::vector<StationMark> &stations);
96
97 /**
98 * @brief 通过自动识别充电桩位姿来添加充电站点
99 * @since 0.7.0
100 * @param[in] station_header 待添加/修改的充电站点信息(站点id,名称,时间,地图id)
101 * @param[in] dis_station_board 充电站点与充电桩之间的距离(充电站点位于AGV中心),单位:m,范围[1.0~2.0]
102 * @return 10100000:添加充电站点成功
103 * else:添加充电站点失败
104 */
105 int addCPStationUseChargingBoard(const Header &station_header, const double &dis_station_board = 1.5);
106
107 /**
108 * @brief 删除指定站点(会删除与该站点相关的路径)
109 * @param[in] station_header 待删除站点信息(站点id,名称,时间,地图id)
110 * @return 10100000:删除站点成功
111 * else:删除站点失败
112 */
113 int deleteStation(const Header &station_header);
114
115 /**
116 * @brief 删除多个站点(会删除与站点相关的路径)
117 * @param[in] stations_header 待删除站点信息(站点id,名称,时间,地图id)
118 * @return 10100000:删除站点成功
119 * else:删除站点失败
120 */
121 int deleteStations(const std::vector<Header> &stations_header);
122
123 /**
124 * @brief 查询当前地图的所有路径信息
125 * @return 当前地图的所有路径信息
126 */
127 std::vector<PathStation> getAllPaths();
128
129 /**
130 * @brief 查询指定地图的所有路径信息
131 * @param[in] map_header 指定地图header(命令id,名称,时间,地图id)
132 * @return 指定地图的所有路径信息
133 */
134 std::vector<PathStation> getAllPathsOfTargetMap(const Header &map_header);
135
136 /**
137 * @brief 查询agv当前正在跟踪的路径信息
138 * @return 当前正在跟踪的路径信息
139 */
141
142 /**
143 * @brief 生成/修改一条路径
144 * @param[in] path_station 待生成/修改的路径信息
145 * @return 10100000:修改/生成路径成功
146 * else:修改/生成路径失败
147 */
148 int generatePath(const PathStation &path_station);
149
150 /**
151 * @brief 生成/修改多条路径
152 * @param[in] paths_station 待生成/修改的路径信息
153 * @return 10100000:修改/生成路径成功
154 * else:修改/生成路径失败
155 */
156 int generatePaths(const std::vector<PathStation> &paths_station);
157
158 /**
159 * @brief 删除一条路径
160 * @param[in] path_header 待删除路径信息(路径id,名称,时间,地图id)
161 * @return 10100000:删除路径成功
162 * else:删除路径失败
163 */
164 int deletePath(const Header &path_header);
165
166 /**
167 * @brief 删除多条路径
168 * @param[in] paths_header 待删除路径信息(路径id,名称,时间,地图id)
169 * @return 10100000:删除路径成功
170 * else:删除路径失败
171 */
172 int deletePaths(const std::vector<Header> &paths_header);
173
174 /**
175 * @brief 获取agv所有地图的信息头
176 * @return 所有地图的信息头(命令id,名称,时间,地图id)
177 */
178 std::vector<Header> getMapList();
179
180 /**
181 * @brief 查询当前agv地图的信息头
182 * @return 当前地图的信息头(命令id,名称,时间,地图id)
183 */
185
186 /**
187 * @brief 获取指定栅格地图信息
188 * @param[in] map_header 指定地图的信息头(本次异步命令id,名称,时间,地图id)
189 * @note map_id为"current_map"时,可特指为当前地图
190 * @return 指定栅格地图信息
191 */
193
194 /**
195 * @attention 1.异步接口
196 * @brief 获取Base64编码的png地图信息
197 * @param[in] map_header 指定地图的信息头(本次异步命令id,名称,时间,地图id)
198 * @note map_id为"current_map"时,可特指为当前地图
199 * @return Base64编码的png地图信息
200 */
202
203 /**
204 * @attention 1.异步接口
205 * @brief 获取预览图,可指定预览图的长和宽
206 * @param[in] map_header 指定地图的信息头(本次异步命令id,名称,时间,地图id)
207 * @param[in] image_width_px 地图的宽度(像素),默认值为0 返回缩略图数据为空
208 * @param[in] image_height_px 地图的高度(像素),默认值为0 返回缩略图数据为空
209 * @note map_id为"current_map"时,可特指为当前地图
210 * @return Base64编码的png缩略图
211 */
212 Base64PngMap previewPngMapFromAgv(const Header &map_header, const int &image_width_px = 0, const int &image_height_px = 0);
213
214 /**
215 * @attention 1.异步接口
216 * @brief 将栅格地图信息发送给agv
217 * @param[in] map 栅格地图信息
218 * @return 10100000:发送地图成功
219 * 10100201:发送地图中
220 * else:发送地图失败
221 */
223
224 /**
225 * @attention 1.异步接口
226 * @brief 将Base64编码的Png地图发送给agv
227 * @param[in] map Base64编码的Png地图
228 * @return 10100000:发送地图成功
229 * 10100201:发送地图中
230 * else:发送地图失败
231 */
233
234 /**
235 * @attention 1.异步接口; 2.控制权限制
236 * @brief 建图完成后,调用该接口保存地图
237 * @param[in] map_header 地图信息头(本次异步命令id,名称,时间,地图id)
238 * @return 10100000:保存地图成功
239 * 10100201:异步接口运行中
240 * 10120202:无控制权
241 * else:保存地图失败
242 */
243 int saveMap(const Header &map_header);
244
245 /**
246 * @attention 1.异步接口; 2.控制权限制
247 * @brief 切换指定地图
248 * @param[in] map_header 指定地图的信息头(本次异步命令id,名称,时间,地图id)
249 * @return 10100000:切换地图成功
250 * 10100201:异步接口运行中
251 * 10120202:无控制权
252 * else:切换地图失败
253 */
254 int switchMap(const Header &map_header);
255
256 /**
257 * @brief 删除一张指定地图
258 * @param[in] map_header 指定地图的信息头(命令id,名称,时间,地图id)
259 * @return 10100000:删除地图成功
260 * else:删除地图失败
261 */
262 int deleteMap(const Header &map_header);
263
264 /**
265 * @brief 删除多张指定地图
266 * @param[in] map_headers 多个指定地图的信息头(命令id,名称,时间,地图id)
267 * @return 10100000:删除地图成功
268 * else:删除地图失败
269 */
270 int deleteMaps(const std::vector<Header> &map_headers);
271
272 /**
273 * @brief 查询当前地图的虚拟区域
274 * @return 当前地图的虚拟区域信息
275 */
276 std::vector<MapVirtualArea> getAllMapVirtualArea();
277
278 /**
279 * @brief 查询目标地图的虚拟区域
280 * @param[in] map_header 指定地图header(命令id,名称,时间,地图id)
281 * @return 指定地图的所有虚拟区域
282 */
283 std::vector<MapVirtualArea> getAllMapVirtualAreaOfTargetMap(const Header &map_header);
284
285 /**
286 * @brief 添加/修改一个虚拟区域
287 * @param[in] map_virtual_area 待添加/修改的虚拟区域信息
288 * @return 10100000:添加/修改虚拟区域成功
289 * else:添加/修改虚拟区域失败
290 */
291 int addMapVirtualArea(const MapVirtualArea &map_virtual_area);
292
293 /**
294 * @brief 添加/修改多个虚拟区域
295 * @param[in] map_virtual_areas 待添加的虚拟区域信息
296 * @return 10100000:添加/修改虚拟区域成功
297 * else:添加/修改虚拟区域失败
298 */
299 int addMapVirtualAreas(const std::vector<MapVirtualArea> &map_virtual_areas);
300
301 /**
302 * @brief 删除指定虚拟区域
303 * @param[in] virtual_area_header
304 * 指定虚拟区域信息头(命令id,虚拟区域名称,时间,所在地图id)
305 * @return 10100000:删除虚拟区域成功
306 * else:删除虚拟区域失败
307 */
308 int deleteMapVirtualArea(const Header &virtual_area_header);
309
310 /**
311 * @brief 删除多个指定虚拟区域
312 * @param[in] virtual_areas_header
313 * 指定虚拟区域信息头(命令id,虚拟区域名称,时间,所在地图id)
314 * @return 10100000:删除虚拟区域成功
315 * else:删除虚拟区域失败
316 */
317 int deleteMapVirtualAreas(const std::vector<Header> &virtual_areas_header);
318
319 /**
320 * @attention 1.异步接口
321 * @brief 获取指定地图的栅格地图数据、路径、站点、虚拟区信息
322 * @param[in] map_header 指定地图信息头(本次异步命令id,地图名称,时间,地图id)
323 * @note map_id为"current_map"时,可特指为当前地图
324 * @return 栅格地图上的全部信息
325 */
327
328 /**
329 * @attention 1.异步接口
330 * @brief 获取指定地图的Base64地图数据、路径、站点、虚拟区信息
331 * @param[in] map_header 指定地图信息头(本次异步命令id,地图名称,时间,地图id)
332 * @note map_id为"current_map"时,可特指为当前地图
333 * @return base64地图上的全部信息
334 */
336
337 /**
338 * @attention 1.异步接口; 2.控制权限制
339 * @brief 设置栅格地图、路径、站点、虚拟区信息
340 * @param[in] map_all_info 栅格地图上的全部信息
341 * @param[in] command_header id字段代表下发本次命令的id;其他字段无特殊含义
342 * @note 请保证数据下发的可行性(agv不会对数据进行校验)
343 * @return 10100000:上传全部地图信息成功
344 * 10100201:异步接口运行中
345 * 10120202:无控制权
346 * else:上传全部地图信息失败
347 */
348 int setGridMapAllInfo(const MapAllInfo &map_all_info,
349 const Header &command_header = { "99999", "99999", 1, "99999" });
350
351 /**
352 * @attention 1.异步接口; 2.控制权限制
353 * @brief 设置Base64格式地图、路径、站点、虚拟区信息
354 * @param[in] map_all_info Base64格式地图上的全部信息
355 * @param[in] command_header id字段代表下发本次命令的id;其他字段无特殊含义
356 * @note 请保证数据下发的可行性(agv不会对数据进行校验)
357 * @return 10100000:上传全部地图信息成功
358 * 10100201:异步接口运行中
359 * 10120202:无控制权
360 * else:上传全部地图信息失败
361 */
362 int setPngMapAllInfo(const MapAllInfo &map_all_info,
363 const Header &command_header = { "99999", "99999", 1, "99999" });
364
365 /**
366 * @brief 删除指定地图的全部信息(地图数据、站点、路径、虚拟区信息)
367 * @param[in] map_header 指定地图信息头(命令id,地图名称,时间,地图id)
368 * @return 10100000:删除成功
369 * else:删除失败
370 */
371 int deleteMapAllInfo(const Header &map_header);
372
373 /**
374 * @attention 异步接口
375 * @brief 获取当前扫描到的WiFi列表
376 * @return {RUNNING} 异步接口运行中
377 * {} 为空-未扫描到WIFI
378 * {SSID} 不为空-扫描到的WIFI名称列表
379 */
380 std::vector<std::string> getWifiList();
381
382 /**
383 * @brief 连接到指定WiFi(自动切换到WiFi模式)
384 * @note 必须在有线连接时调用,且执行时间较长
385 * @param[in] ssid WiFi名称
386 * @param[in] password WiFi密码
387 * @return 10100000:连接WiFi成功
388 * else:连接WiFi失败
389 */
390 int connectWifi(const std::string &ssid, const std::string &password);
391
392 /**
393 * @brief 开启热点(自动切换到热点模式)
394 * @note 必须在有线连接时调用,且执行时间较长
395 * @param[in] password 热点密码,
396 * 如果为空使用"administrator"为默认密码;ssid默认为SN码
397 * @return 10100000:启用热点成功
398 * else:启用热点失败
399 */
400 int enableHotspot(const std::string &password);
401
402 /**
403 * @brief 获取本机所有IP地址
404 * @return 本机所有IP地址
405 */
406 std::vector<IpAddressInfo> getIpAddressList();
407
408 /**
409 * @attention 1.异步接口; 2.控制权限制
410 * @brief: 切换agv模式
411 * @param[in] running_mode 打算切换的模式:导航模式、建图模式;
412 * @param[in] command_header id字段代表下发本次命令的id;其他字段无特殊含义
413 * @return 10100000:换模式成功
414 * 10100201:异步接口运行中
415 * 10120202:无控制权
416 * else:切换模式失败
417 */
418 int changeRunningMode(const RunningMode &running_mode,
419 const Header &command_header = { "99999", "99999", 1, "99999" });
420
421 /**
422 * @attention 控制权限制
423 * @brief 控制agv运动
424 * @param[in] speed 速度信息
425 * @return 10100000:向agv下发速度成功
426 * 10120202:没有控制权
427 * else:向agv下发速度失败
428 */
429 int setControlSpeed(const Speed &speed);
430
431 /**
432 * @attention 控制权限制
433 * @brief 向agv发送导航任务
434 * @param[in] target 目标位置信息与导航参数信息
435 * @return 10100000:设置导航任务成功
436 * 10120202:没有控制权
437 * else:设置导航任务失败
438 */
439 int setNavGoal(const NavGoalType &target);
440
441 /**
442 * @attention rtde推送
443 * @brief 获取当前导航信息
444 * @return 当前导航信息
445 */
447
448 /**
449 * @attention 控制权限制
450 * @brief 暂停agv速度
451 * @return 10100000:暂停成功
452 * 10120202:没有控制权
453 * else:暂停失败
454 */
456
457 /**
458 * @attention 控制权限制
459 * @brief 暂停后,恢复agv速度
460 * @return 10100000:恢复成功
461 * 10120202:没有控制权
462 * else:恢复失败
463 */
465
466 /**
467 * @attention 控制权限制
468 * @brief 取消导航任务
469 * @return 10100000:取消导航任务成功
470 * 10120202:没有控制权
471 * else:取消导航任务失败
472 */
474
475 /**
476 * @attention 1.异步接口; 2.控制权限制
477 * @brief agv重定位
478 * @param[in] init_pose agv当前参考位姿
479 * @param[in] command_header id字段代表下发本次命令的id;其他字段无特殊含义
480 * @return 10100000:重定位成功
481 * 10100201:异步接口运行中
482 * 10120202:无控制权
483 * else:重定位失败
484 */
485 int relocation(const Pose2d &init_pose, const Header &command_header = { "99999", "99999", 1, "99999" });
486
487 /**
488 * @brief 获取agv控制器的参数文件
489 * @return std::string 当前agv控制器中的参数信息
490 */
492
493 /**
494 * @attention 控制权限制
495 * @brief 设置agv控制器的参数文件
496 * @note 不要高频调用,调用频率低于1Hz;此接口会默认执行刷新参数功能
497 * @param[in] agv_parameters agv控制器的参数信息
498 * @return 10100000:设置参数成功
499 * else:设置参数失败
500 */
501 int setAgvControllerParametersFile(const std::string &agv_parameters);
502
503 /**
504 * @attention 控制权限制
505 * @brief 修改agv控制器的参数文件后,让agv各节点刷新参数
506 * @note 不要高频调用,调用频率低于1Hz
507 * @return 10100000:接口执行成功
508 * else:接口执行失败
509 */
511
512 /**
513 * @attention 控制权限制
514 * @brief 将agv控制器的参数文件恢复出厂设置
515 * @note 不要高频调用,调用频率低于1Hz
516 * @return 10100000:接口执行成功
517 * else:接口执行失败
518 */
520
521 /**
522 * @attention 控制权限制
523 * @brief 检测当前电量,电量低将自动上桩充电
524 * @deprecated 自 0.7.0 起废弃,请使用新的 sendAutoChargingCommand(const AutoChargingCommand&) 接口。
525 * @note 充电完成后,根据配置文件中的参数auto_leave_board,决定是否自动下桩并行驶到指定站点或等待区
526 * 在配置文件中设置电量低阈值[low_battery_threshold]或电量高阈值[high_battery_threshold]
527 * @param[in] check_power_header
528 * 本次命令的id,本次命令的name,当前时间,地图id
529 * @param[in] nav_board_charge_station_id 行驶到指定的充电站点进行上桩充电;
530 * 如果不设置该参数,行驶到最近的充电站点进行上桩充电
531 * @return 10100000:接口调用成功,AGV开始执行充电命令
532 * 10120202:无控制权
533 * else:接口调用失败
534 */
535 [[deprecated("Since 0.7.0: use sendAutoChargingCommand(const AutoChargingCommand&) instead.")]]
536 int checkPowerAndAutoCharge(const Header &check_power_header = { "99999", "99999", 99999, "99999" },
537 const std::string &nav_board_charge_station_id = "99999");
538
539 /**
540 * @brief 设置自动下桩时的目标站点
541 * @deprecated 自 0.7.0 起废弃,请使用新的 sendAutoChargingCommand(const AutoChargingCommand&) 接口。
542 * @param[in] leave_board_target_station_header 自动下桩的站点的header信息
543 * @return 10100000:设置自动下桩站点成功
544 * else:设置自动下桩站点失败
545 */
546 [[deprecated("Since 0.7.0: use sendAutoChargingCommand(const AutoChargingCommand&) instead.")]]
547 int setLeaveBoardTargetStation(const Header &leave_board_target_station_header);
548
549 /**
550 * @brief 获取自动下桩时的目标站点
551 * @deprecated 自 0.7.0 起废弃,请使用新的 getNavInfo() 接口。
552 * @return Header 自动下桩时的目标站点Header信息
553 */
554 [[deprecated("Since 0.7.0: use getNavInfo() instead.")]]
556
557 /**
558 * @attention 控制权限制
559 * @brief 强制上桩充电
560 * @deprecated 自 0.7.0 起废弃,请使用新的 sendAutoChargingCommand(const AutoChargingCommand&) 接口。
561 * @param[in] forced_charge_header 本次命令的id,本次命令的name,当前时间,地图id
562 * @param[in] nav_board_charge_station_id 行驶到指定的充电站点进行上桩充电;
563 * 如果不设置该参数,行驶到最近的充电站点进行上桩充电
564 * @return 10100000:接口调用成功,AGV开始上桩充电
565 * 10120202:无控制权
566 * else:接口调用失败
567 */
568 [[deprecated("Since 0.7.0: use sendAutoChargingCommand(const AutoChargingCommand&) instead.")]]
569 int forcedAgvToChargingBoard(const Header &forced_charge_header = { "99999", "99999", 99999, "99999" },
570 const std::string &nav_board_charge_station_id = "99999");
571
572 /**
573 * @attention 控制权限制
574 * @brief 强制下桩
575 * @deprecated 自 0.7.0 起废弃,请使用新的 sendAutoChargingCommand(const AutoChargingCommand&) 接口。
576 * @param[in] forced_leave_header
577 * 本次命令的id,本次命令的name,当前时间,地图id
578 * @param[in] leave_board_target_station_id 下桩前往的站点;
579 * 如果不设置该参数,则下桩到充电站点
580 * @return 10100000:接口调用成功,AGV开始下桩
581 * 10120202:无控制权
582 * else:接口调用失败
583 */
584 [[deprecated("Since 0.7.0: use sendAutoChargingCommand(const AutoChargingCommand&) instead.")]]
585 int forcedAgvLeaveChargingBoard(const Header &forced_leave_header = { "99999", "99999", 99999, "99999" },
586 const std::string &leave_board_target_station_id = "99999");
587
588 /**
589 * @attention 控制权限制
590 * @brief 下发自动充电命令
591 * @since 0.7.0
592 * @param[in] auto_charging_command 自动充电命令
593 * @return 10100000:接口调用成功,AGV开始执行充电命令
594 * 10120202:无控制权
595 * else:接口调用失败
596 */
597 int sendAutoChargingCommand(const AutoChargingCommand &auto_charging_command);
598
599 /**
600 * @brief 获取agv运行中的日志信息
601 * @return agv运行中的日志信息
602 */
603 std::string getAgvLogMessage();
604
605 /**
606 * @brief agv软件升级
607 * @param[in] upgrade_pack_path 升级包路径,例如"/root/agvc_release-0.1.1+398d1f7-Linux_x86_64.tar.gz"
608 * @return 10100000:目标版本升级成功
609 * 10100201:正在升级中
610 * else:升级失败
611 */
612 int updateSoftware(const std::string &upgrade_pack_path);
613
614 /**
615 * @brief 获取agv软件版本列表
616 * @return 软件版本列表集合 {0.3.2+3b807d1-Linux_x86_64,0.6.3-patch.3+b8c6aa4-Linux_x86_64}
617 */
618 std::vector<std::string> getSoftwareVersionList();
619
620 /**
621 * @brief 切换agv软件版本
622 * @param[in] software_version 软件版本 "0.3.2+3b807d1-Linux_x86_64"
623 * @return 10100000:软件版本切换成功
624 * else:软件版本切换失败
625 */
626 int switchSoftwareVersion(const std::string &software_version);
627
628 /**
629 * @brief 卸载agv软件版本
630 * @param[in] software_version 软件版本 "0.3.2+3b807d1-Linux_x86_64"
631 * @return 10100000:软件版本卸载成功
632 * else:软件版本卸载失败
633 */
634 int uninstallSoftware(const std::string &software_version);
635
636 /**
637 * @brief agv固件更新
638 * @param[in] update_firmware 配置要更新固件的模块、固件存储路径
639 * @return 10100000:下发固件更新信息成功
640 * else:固件正在更新中
641 */
642 int updateFirmware(const FirmwareUpdateParam &update_firmware);
643
644 /**
645 * @brief 获取固件更新过程信息
646 * @return
647 * 固件更新步骤信息(步骤信息为failed代表更新失败),更新进度(进度信息为1.0代表更新成功)
648 */
650
651 /**
652 * @brief 开始采集数据
653 * @note LASER_ODOM标定采集数据量要求大于1000组,具体数据量可以在配置文件中修改
654 * @param[in] type 标定类型
655 * @param[in] command_header id字段代表下发本次命令的id;其他字段无特殊含义
656 * @return 10100000:接口调用成功
657 * 10120202:无控制权
658 * else:接口调用失败
659 */
661 const Header &command_header = { "99999", "99999", 1, "99999" });
662
663 /**
664 * @brief 取消采集数据
665 * @param[in] type 标定类型
666 * @param[in] command_header id字段代表下发本次命令的id;其他字段无特殊含义
667 * @return 10100000:接口调用成功
668 * 10120202:无控制权
669 * else:接口调用失败
670 */
672 const Header &command_header = { "99999", "99999", 1, "99999" });
673
674 /**
675 * @brief 开始标定
676 * @param[in] type 标定类型
677 * @param[in] command_header id字段代表下发本次命令的id;其他字段无特殊含义
678 * @return 10100000:接口调用成功
679 * 10120202:无控制权
680 * else:接口调用失败
681 */
682 int startCalibration(const CalibrationType &type, const Header &command_header = { "99999", "99999", 1, "99999" });
683
684 /**
685 * @brief 获取标定信息
686 * @param[in] type 标定类型
687 * @return 标定信息
688 */
690
691 /**
692 * @brief 重启agv
693 * @return 10100000:重启指令执行成功
694 * else:重启指令执行失败
695 */
697
698 /**
699 * @brief 设置agv的名称
700 * @param[in] agv_name 设置的agv名称
701 * @return 10100000:设置名称成功
702 * else:设置名称失败
703 */
704 int setAgvName(const std::string &agv_name);
705
706 /**
707 * @brief 控制权设置
708 * @note 1.该接口设置成功后才能正常使用控制权相关接口
709 * 2.控制权设置前需要先释放他人的控制权:releasePriority
710 * 3.web端抢占优先权: name="web"
711 * @param[in] name 登陆RPC注册时的用户名
712 * @param[in] ip IP地址
713 * @return 10100000:设置控制权成功
714 * else:设置控制权失败
715 */
716 int setPriority(const std::string &name, const std::string &ip = "");
717
718 /**
719 * @brief 释放控制权
720 * @return 10100000:释放控制权成功
721 * else:释放控制权失败
722 */
724
725 /**
726 * @brief 暂停脚本
727 * @return 10100000:脚本暂停成功
728 * else:脚本暂停失败
729 */
731
732 /**
733 * @brief 脚本恢复
734 * @return 10100000:脚本恢复成功
735 * else:脚本恢复失败
736 */
738
739 /**
740 * @brief 脚本停止权
741 * @return 10100000:脚本停止成功
742 * else:脚本停止失败
743 */
745
746 /**
747 * @brief 获取脚本运行状态
748 * @return 脚本运行状态
749 */
751
752 /**
753 * @brief 设置脚本运行状态
754 * @return 10100000:设置脚本运行状态成功
755 * else:设置脚本运行状态失败
756 */
758
759 /**
760 * @brief 错误码查询
761 * @param[in] error_code 错误码
762 * @return 错误码含义
763 * 为空-错误码未知
764 *
765 */
766 std::string errorCodeDecoder(const int &error_code);
767
768 /**
769 * @brief 获取当前的错误码
770 * @return 错误码集合
771 */
772 std::vector<Header> getCurrentErrorCodes();
773
774 /**
775 * @brief 寻找agv,自动播放语音并特殊灯光闪烁
776 * @return 10100000: 寻找指令下发成功
777 * else: 下发指令失败
778 */
780
781 /**
782 * @brief agv行进方向是否有障碍物
783 * @param[in] detect_distance 检测距离 默认为1.0m
784 * @return true: 行进方向存在障碍物
785 * false: 行进方向无障碍物
786 */
787 bool isObstacleAhead(const double &detect_distance = 1.0);
788
789 /**
790 * @brief 获取指定检测距离范围内的最近站点信息
791 * @param[in] detect_distance 检测距离 默认为1.0m
792 * @return 最近站点信息, id为NONE代表检测距离内无站点
793 */
794 StationMark getNearestStation(const double &detect_distance = 1.0);
795
796 /** \cond */
797protected:
798 void *d_;
799 /** \endcond */
800};
801
802using AgvcInterfacePtr = std::shared_ptr<AgvcInterface>;
803
804} // namespace agvc_interface
805
806#define AgvcInterface_DECLARES \
807 _FUNC(AgvcInterface, 1, setSystemClock, stamp) \
808 _FUNC(AgvcInterface, 0, getAgvDetails) \
809 _FUNC(AgvcInterface, 0, getRunningInfo) \
810 _FUNC(AgvcInterface, 0, getAgvCurrentPose) \
811 _FUNC(AgvcInterface, 0, getAsyncInterfaceResultStatus) \
812 _FUNC(AgvcInterface, 0, getLaserPointCloud) \
813 _FUNC(AgvcInterface, 0, getAllStations) \
814 _FUNC(AgvcInterface, 1, getAllStationsOfTargetMap, map_header) \
815 _FUNC(AgvcInterface, 1, addStation, station) \
816 _FUNC(AgvcInterface, 1, addStations, stations) \
817 _FUNC(AgvcInterface, 2, addCPStationUseChargingBoard, station_header, dis_station_post) \
818 _FUNC(AgvcInterface, 1, deleteStation, station_header) \
819 _FUNC(AgvcInterface, 1, deleteStations, stations_header) \
820 _FUNC(AgvcInterface, 0, getAllPaths) \
821 _FUNC(AgvcInterface, 1, getAllPathsOfTargetMap, map_header) \
822 _FUNC(AgvcInterface, 0, getCurrentPath) \
823 _FUNC(AgvcInterface, 1, generatePath, path_station) \
824 _FUNC(AgvcInterface, 1, generatePaths, paths_station) \
825 _FUNC(AgvcInterface, 1, deletePath, path_header) \
826 _FUNC(AgvcInterface, 1, deletePaths, paths_header) \
827 _FUNC(AgvcInterface, 0, getMapList) \
828 _FUNC(AgvcInterface, 0, getCurrentMapHeader) \
829 _FUNC(AgvcInterface, 1, getGridMapFromAgv, map_header) \
830 _FUNC(AgvcInterface, 1, getBase64PngMapFromAgv, map_header) \
831 _FUNC(AgvcInterface, 3, previewPngMapFromAgv, map_header, image_width_px, image_height_px) \
832 _FUNC(AgvcInterface, 1, sendGridMapToAgv, map) \
833 _FUNC(AgvcInterface, 1, sendBase64PngMapToAgv, map) \
834 _FUNC(AgvcInterface, 1, saveMap, map_header) \
835 _FUNC(AgvcInterface, 1, switchMap, map_header) \
836 _FUNC(AgvcInterface, 1, deleteMap, map_header) \
837 _FUNC(AgvcInterface, 1, deleteMaps, map_headers) \
838 _FUNC(AgvcInterface, 0, getAllMapVirtualArea) \
839 _FUNC(AgvcInterface, 1, getAllMapVirtualAreaOfTargetMap, map_header) \
840 _FUNC(AgvcInterface, 1, addMapVirtualArea, map_virtual_area) \
841 _FUNC(AgvcInterface, 1, addMapVirtualAreas, map_virtual_areas) \
842 _FUNC(AgvcInterface, 1, deleteMapVirtualArea, virtual_area_header) \
843 _FUNC(AgvcInterface, 1, deleteMapVirtualAreas, virtual_areas_header) \
844 _FUNC(AgvcInterface, 1, getGridMapAllInfo, map_header) \
845 _FUNC(AgvcInterface, 1, getPngMapAllInfo, map_header) \
846 _FUNC(AgvcInterface, 2, setGridMapAllInfo, map_all_info, command_header) \
847 _FUNC(AgvcInterface, 2, setPngMapAllInfo, map_all_info, command_header) \
848 _FUNC(AgvcInterface, 1, deleteMapAllInfo, map_header) \
849 _FUNC(AgvcInterface, 0, getWifiList) \
850 _FUNC(AgvcInterface, 2, connectWifi, ssid, password) \
851 _FUNC(AgvcInterface, 1, enableHotspot, password) \
852 _FUNC(AgvcInterface, 0, getIpAddressList) \
853 _FUNC(AgvcInterface, 2, changeRunningMode, running_mode, command_header) \
854 _FUNC(AgvcInterface, 1, setControlSpeed, speed) \
855 _FUNC(AgvcInterface, 1, setNavGoal, target) \
856 _FUNC(AgvcInterface, 0, getNavInfo) \
857 _FUNC(AgvcInterface, 0, pauseAgvSpeed) \
858 _FUNC(AgvcInterface, 0, resumeAgvSpeed) \
859 _FUNC(AgvcInterface, 0, cancelNavigation) \
860 _FUNC(AgvcInterface, 2, relocation, init_pose, command_header) \
861 _FUNC(AgvcInterface, 0, getAgvControllerParametersFile) \
862 _FUNC(AgvcInterface, 1, setAgvControllerParametersFile, agv_parameters) \
863 _FUNC(AgvcInterface, 0, refreshAgvControllerParametersFile) \
864 _FUNC(AgvcInterface, 0, resetAgvControllerParametersFile) \
865 _FUNC(AgvcInterface, 2, checkPowerAndAutoCharge, check_power_header, nav_board_charge_station_id) \
866 _FUNC(AgvcInterface, 1, setLeaveBoardTargetStation, leave_board_target_station_header) \
867 _FUNC(AgvcInterface, 0, getLeaveBoardTargetStation) \
868 _FUNC(AgvcInterface, 2, forcedAgvToChargingBoard, forced_charge_header, nav_board_charge_station_id) \
869 _FUNC(AgvcInterface, 2, forcedAgvLeaveChargingBoard, forced_leave_header, leave_board_target_station_id) \
870 _FUNC(AgvcInterface, 1, sendAutoChargingCommand, auto_charging_command) \
871 _FUNC(AgvcInterface, 0, getAgvLogMessage) \
872 _FUNC(AgvcInterface, 1, updateSoftware, upgrade_pack_path) \
873 _FUNC(AgvcInterface, 0, getSoftwareVersionList) \
874 _FUNC(AgvcInterface, 1, switchSoftwareVersion, software_version) \
875 _FUNC(AgvcInterface, 1, uninstallSoftware, software_version) \
876 _FUNC(AgvcInterface, 1, updateFirmware, update_firmware) \
877 _FUNC(AgvcInterface, 0, getUpdateFirmwareProcess) \
878 _FUNC(AgvcInterface, 2, startCollectCalibrationData, type, command_header) \
879 _FUNC(AgvcInterface, 2, cancelCollectCalibrationData, type, command_header) \
880 _FUNC(AgvcInterface, 2, startCalibration, type, command_header) \
881 _FUNC(AgvcInterface, 1, getCalibrationProcessInfo, type) \
882 _FUNC(AgvcInterface, 0, restartAgv) \
883 _FUNC(AgvcInterface, 1, setAgvName, agv_name) \
884 _FUNC(AgvcInterface, 2, setPriority, name, ip) \
885 _FUNC(AgvcInterface, 0, releasePriority) \
886 _FUNC(AgvcInterface, 0, scriptPaused) \
887 _FUNC(AgvcInterface, 0, scriptResume) \
888 _FUNC(AgvcInterface, 0, scriptStop) \
889 _FUNC(AgvcInterface, 0, getScriptStatus) \
890 _FUNC(AgvcInterface, 1, setScriptStatus, status) \
891 _FUNC(AgvcInterface, 1, errorCodeDecoder, error_code) \
892 _FUNC(AgvcInterface, 0, getCurrentErrorCodes) \
893 _FUNC(AgvcInterface, 0, soundLightPrompt) \
894 _FUNC(AgvcInterface, 1, isObstacleAhead, detect_distance) \
895 _FUNC(AgvcInterface, 1, getNearestStation, detect_distance)
896#endif // AGVC_INTERFACE_H
int updateSoftware(const std::string &upgrade_pack_path)
agv软件升级
int scriptPaused()
暂停脚本
StationMark getNearestStation(const double &detect_distance=1.0)
获取指定检测距离范围内的最近站点信息
int deleteStation(const Header &station_header)
删除指定站点(会删除与该站点相关的路径)
AsyncInterfaceResultStatus getAsyncInterfaceResultStatus()
查询异步接口的运行情况,不代表异步接口本身的运行结果
int generatePaths(const std::vector< PathStation > &paths_station)
生成/修改多条路径
int relocation(const Pose2d &init_pose, const Header &command_header={ "99999", "99999", 1, "99999" })
agv重定位
int setScriptStatus(ScriptRuntimeState status)
设置脚本运行状态
int setPriority(const std::string &name, const std::string &ip="")
控制权设置
int setPngMapAllInfo(const MapAllInfo &map_all_info, const Header &command_header={ "99999", "99999", 1, "99999" })
设置Base64格式地图、路径、站点、虚拟区信息
ScriptRuntimeState getScriptStatus()
获取脚本运行状态
int setControlSpeed(const Speed &speed)
控制agv运动
Base64PngMap previewPngMapFromAgv(const Header &map_header, const int &image_width_px=0, const int &image_height_px=0)
获取预览图,可指定预览图的长和宽
int addMapVirtualArea(const MapVirtualArea &map_virtual_area)
添加/修改一个虚拟区域
int setAgvName(const std::string &agv_name)
设置agv的名称
std::vector< PathStation > getAllPaths()
查询当前地图的所有路径信息
int resumeAgvSpeed()
暂停后,恢复agv速度
int enableHotspot(const std::string &password)
开启热点(自动切换到热点模式)
PathStation getCurrentPath()
查询agv当前正在跟踪的路径信息
std::vector< StationMark > getAllStationsOfTargetMap(const Header &map_header)
查询指定地图的所有站点信息
int connectWifi(const std::string &ssid, const std::string &password)
连接到指定WiFi(自动切换到WiFi模式)
int setGridMapAllInfo(const MapAllInfo &map_all_info, const Header &command_header={ "99999", "99999", 1, "99999" })
设置栅格地图、路径、站点、虚拟区信息
std::vector< PathStation > getAllPathsOfTargetMap(const Header &map_header)
查询指定地图的所有路径信息
int switchSoftwareVersion(const std::string &software_version)
切换agv软件版本
std::vector< Point2d > getLaserPointCloud()
查询当前激光点云数据
Base64PngMap getBase64PngMapFromAgv(const Header &map_header)
获取Base64编码的png地图信息
OccupancyGridMap getGridMapFromAgv(const Header &map_header)
获取指定栅格地图信息
int generatePath(const PathStation &path_station)
生成/修改一条路径
int setSystemClock(const std::string &stamp)
设置agv系统时间
int setAgvControllerParametersFile(const std::string &agv_parameters)
设置agv控制器的参数文件
Header getLeaveBoardTargetStation()
获取自动下桩时的目标站点
int sendAutoChargingCommand(const AutoChargingCommand &auto_charging_command)
下发自动充电命令
std::vector< Header > getCurrentErrorCodes()
获取当前的错误码
int setNavGoal(const NavGoalType &target)
向agv发送导航任务
int deleteMapAllInfo(const Header &map_header)
删除指定地图的全部信息(地图数据、站点、路径、虚拟区信息)
std::vector< std::string > getSoftwareVersionList()
获取agv软件版本列表
int pauseAgvSpeed()
暂停agv速度
int releasePriority()
释放控制权
int addStation(const StationMark &station)
添加/修改一个站点
int deleteMaps(const std::vector< Header > &map_headers)
删除多张指定地图
int updateFirmware(const FirmwareUpdateParam &update_firmware)
agv固件更新
int sendGridMapToAgv(const OccupancyGridMap &map)
将栅格地图信息发送给agv
int forcedAgvLeaveChargingBoard(const Header &forced_leave_header={ "99999", "99999", 99999, "99999" }, const std::string &leave_board_target_station_id="99999")
强制下桩
Pose2d getAgvCurrentPose()
查询agv当前位姿
std::vector< std::string > getWifiList()
获取当前扫描到的WiFi列表
std::string errorCodeDecoder(const int &error_code)
错误码查询
std::vector< MapVirtualArea > getAllMapVirtualAreaOfTargetMap(const Header &map_header)
查询目标地图的虚拟区域
Header getCurrentMapHeader()
查询当前agv地图的信息头
std::vector< StationMark > getAllStations()
查询当前地图的所有站点信息
int addMapVirtualAreas(const std::vector< MapVirtualArea > &map_virtual_areas)
添加/修改多个虚拟区域
int sendBase64PngMapToAgv(const Base64PngMap &map)
将Base64编码的Png地图发送给agv
MapAllInfo getGridMapAllInfo(const Header &map_header)
获取指定地图的栅格地图数据、路径、站点、虚拟区信息
std::string getAgvLogMessage()
获取agv运行中的日志信息
std::vector< Header > getMapList()
获取agv所有地图的信息头
FirmwareUpdateProcessInfo getUpdateFirmwareProcess()
获取固件更新过程信息
int setLeaveBoardTargetStation(const Header &leave_board_target_station_header)
设置自动下桩时的目标站点
int uninstallSoftware(const std::string &software_version)
卸载agv软件版本
std::string getAgvControllerParametersFile()
获取agv控制器的参数文件
std::vector< MapVirtualArea > getAllMapVirtualArea()
查询当前地图的虚拟区域
int deletePaths(const std::vector< Header > &paths_header)
删除多条路径
int addStations(const std::vector< StationMark > &stations)
添加/修改多个站点
int deleteStations(const std::vector< Header > &stations_header)
删除多个站点(会删除与站点相关的路径)
int deletePath(const Header &path_header)
删除一条路径
bool isObstacleAhead(const double &detect_distance=1.0)
agv行进方向是否有障碍物
int refreshAgvControllerParametersFile()
修改agv控制器的参数文件后,让agv各节点刷新参数
int deleteMapVirtualAreas(const std::vector< Header > &virtual_areas_header)
删除多个指定虚拟区域
int resetAgvControllerParametersFile()
将agv控制器的参数文件恢复出厂设置
int changeRunningMode(const RunningMode &running_mode, const Header &command_header={ "99999", "99999", 1, "99999" })
: 切换agv模式
int scriptStop()
脚本停止权
int deleteMap(const Header &map_header)
删除一张指定地图
AgvDetails getAgvDetails()
查询当前agv信息
int saveMap(const Header &map_header)
建图完成后,调用该接口保存地图
int startCalibration(const CalibrationType &type, const Header &command_header={ "99999", "99999", 1, "99999" })
开始标定
int cancelNavigation()
取消导航任务
RunningInfo getRunningInfo()
查询当前agv运行信息
int cancelCollectCalibrationData(const CalibrationType &type, const Header &command_header={ "99999", "99999", 1, "99999" })
取消采集数据
CalibrationProcessInfo getCalibrationProcessInfo(const CalibrationType &type)
获取标定信息
int scriptResume()
脚本恢复
int deleteMapVirtualArea(const Header &virtual_area_header)
删除指定虚拟区域
int checkPowerAndAutoCharge(const Header &check_power_header={ "99999", "99999", 99999, "99999" }, const std::string &nav_board_charge_station_id="99999")
检测当前电量,电量低将自动上桩充电
int startCollectCalibrationData(const CalibrationType &type, const Header &command_header={ "99999", "99999", 1, "99999" })
开始采集数据
std::vector< IpAddressInfo > getIpAddressList()
获取本机所有IP地址
int addCPStationUseChargingBoard(const Header &station_header, const double &dis_station_board=1.5)
通过自动识别充电桩位姿来添加充电站点
int forcedAgvToChargingBoard(const Header &forced_charge_header={ "99999", "99999", 99999, "99999" }, const std::string &nav_board_charge_station_id="99999")
强制上桩充电
MapAllInfo getPngMapAllInfo(const Header &map_header)
获取指定地图的Base64地图数据、路径、站点、虚拟区信息
int soundLightPrompt()
寻找agv,自动播放语音并特殊灯光闪烁
NavInfo getNavInfo()
获取当前导航信息
int switchMap(const Header &map_header)
切换指定地图
RunningMode
agv 运行模式
定义 type.h:80
MapInfo OccupancyGridMap
栅格地图
定义 type.h:667
std::shared_ptr< AgvcInterface > AgvcInterfacePtr
MapInfo Base64PngMap
Base64编码的png地图图片
定义 type.h:682
CalibrationType
标定类型
定义 type.h:197
异步接口运行状态 暂时存在12个异步接口:saveMap, switchMap, changeRunningMode, relocation, sendBase64PngMapToAgv getGrid...
定义 type.h:597
配置要更新固件的模块及固件路径
定义 type.h:789
包含当前地图、当前地图上的站点、当前地图上的路径、当前地图上的虚拟区域信息
定义 type.h:703
地图中的虚拟区域
定义 type.h:688
使 agv 导航到目标位置(控制信息)
定义 type.h:739
导航状态信息 / 自动充电状态信息
定义 type.h:761
通过站点表示路径
定义 type.h:628