ARCS SDK API  0.24.0
robot_manage.h
浏览该文件的文档.
1 /** @file robot_manage.h
2  * @brief 机器人管理接口,如上电、启动、拖动示教模式等
3  */
4 #ifndef AUBO_SDK_ROBOT_CONTROL_INTERFACE_H
5 #define AUBO_SDK_ROBOT_CONTROL_INTERFACE_H
6 
7 #include <vector>
8 #include <thread>
9 
10 #include <aubo/global_config.h>
11 #include <aubo/type_def.h>
12 
13 namespace arcs {
14 namespace common_interface {
15 
16 class ARCS_ABI_EXPORT RobotManage
17 {
18 public:
19  RobotManage();
20  virtual ~RobotManage();
21 
22  /**
23  * 发起机器人上电请求
24  *
25  * @return 成功返回0; 失败返回错误码
26  * AUBO_BAD_STATE
27  *
28  * @throws arcs::common_interface::AuboException
29  *
30  * @par Python函数原型
31  * poweron(self: pyaubo_sdk.RobotManage) -> int
32  *
33  * @par Lua函数原型
34  * poweron() -> number
35  *
36  * @par JSON-RPC请求示例
37  * {"jsonrpc":"2.0","method":"rob1.RobotManage.poweron","params":[],"id":1}
38  *
39  * @par JSON-RPC响应示例
40  * {"id":1,"jsonrpc":"2.0","result":0}
41  *
42  * @par C++示例
43  * @code
44  * auto rpc_cli = std::make_shared<RpcClient>();
45  * auto robot_name = rpc_cli->getRobotNames().front();
46  * rpc_cli->getRobotInterface(robot_name)->getRobotManage()->poweron();
47  * @endcode
48  *
49  */
50  int poweron();
51 
52  /**
53  * 发起机器人启动请求
54  *
55  * @return 成功返回0; 失败返回错误码
56  * AUBO_BAD_STATE
57  *
58  * @throws arcs::common_interface::AuboException
59  *
60  * @par Python函数原型
61  * startup(self: pyaubo_sdk.RobotManage) -> int
62  *
63  * @par Lua函数原型
64  * startup() -> number
65  *
66  * @par JSON-RPC请求示例
67  * {"jsonrpc":"2.0","method":"rob1.RobotManage.startup","params":[],"id":1}
68  *
69  * @par JSON-RPC响应示例
70  * {"id":1,"jsonrpc":"2.0","result":0}
71  *
72  * @par C++示例
73  * @code
74  * auto rpc_cli = std::make_shared<RpcClient>();
75  * auto robot_name = rpc_cli->getRobotNames().front();
76  * rpc_cli->getRobotInterface(robot_name)->getRobotManage()->startup();
77  * @endcode
78  */
79  int startup();
80 
81  /**
82  * 发起机器人断电请求
83  *
84  * @return 成功返回0; 失败返回错误码
85  * AUBO_BAD_STATE
86  *
87  * @throws arcs::common_interface::AuboException
88  *
89  * @par Python函数原型
90  * poweroff(self: pyaubo_sdk.RobotManage) -> int
91  *
92  * @par Lua函数原型
93  * poweroff() -> number
94  *
95  * @par JSON-RPC请求示例
96  * {"jsonrpc":"2.0","method":"rob1.RobotManage.poweroff","params":[],"id":1}
97  *
98  * @par JSON-RPC响应示例
99  * {"id":1,"jsonrpc":"2.0","result":0}
100  *
101  * @par C++示例
102  * @code
103  * auto rpc_cli = std::make_shared<RpcClient>();
104  * auto robot_name = rpc_cli->getRobotNames().front();
105  * rpc_cli->getRobotInterface(robot_name)->getRobotManage()->poweroff();
106  * @endcode
107  */
108  int poweroff();
109 
110  /**
111  * 发起机器人反向驱动请求
112  *
113  * @param enable
114  *
115  * @return 成功返回0; 失败返回错误码
116  * AUBO_BUSY
117  * AUBO_BAD_STATE
118  * -AUBO_INVL_ARGUMENT
119  * -AUBO_BAD_STATE
120  *
121  * @throws arcs::common_interface::AuboException
122  *
123  * @par Python函数原型
124  * backdrive(self: pyaubo_sdk.RobotManage, arg0: bool) -> int
125  *
126  * @par Lua函数原型
127  * backdrive(enable: boolean) -> number
128  *
129  * @par JSON-RPC请求示例
130  * {"jsonrpc":"2.0","method":"rob1.RobotManage.backdrive","params":[false],"id":1}
131  *
132  * @par JSON-RPC响应示例
133  * {"id":1,"jsonrpc":"2.0","result":0}
134  *
135  * @par C++示例
136  * @code
137  * auto rpc_cli = std::make_shared<RpcClient>();
138  * auto robot_name = rpc_cli->getRobotNames().front();
139  * rpc_cli->getRobotInterface(robot_name)->getRobotManage()->backdrive(true);
140  * @endcode
141  *
142  */
143  int backdrive(bool enable);
144 
145  /**
146  * 发起机器人自由驱动请求
147  * 接口在软件版本 0.31.x 后已废弃,使用 handguideMode 接口替换
148  * handguideMode({1,1,1,1,1}, {0,0,0,0,0,0})
149  *
150  * @param enable
151  *
152  * @return 成功返回0; 失败返回错误码
153  * AUBO_BUSY
154  * AUBO_BAD_STATE
155  * -AUBO_INVL_ARGUMENT
156  * -AUBO_BAD_STATE
157  *
158  * @throws arcs::common_interface::AuboException
159  *
160  * @par Python函数原型
161  * freedrive(self: pyaubo_sdk.RobotManage, arg0: bool) -> int
162  *
163  * @par Lua函数原型
164  * freedrive(enable: boolean) -> number
165  *
166  * @par JSON-RPC请求示例
167  * {"jsonrpc":"2.0","method":"rob1.RobotManage.freedrive","params":[true],"id":1}
168  *
169  * @par JSON-RPC响应示例
170  * {"id":1,"jsonrpc":"2.0","result":0}
171  *
172  * @par C++示例
173  * @code
174  * auto rpc_cli = std::make_shared<RpcClient>();
175  * auto robot_name = rpc_cli->getRobotNames().front();
176  * rpc_cli->getRobotInterface(robot_name)->getRobotManage()->freedrive(true);
177  * @endcode
178  *
179  */
180  int freedrive(bool enable);
181 
182  /**
183  * 高阶拖动示教
184  *
185  * @param freeAxes 可以拖动的轴 0-不能拖动 1-可以拖动
186  * @param feature 如果维度为0,代表基于 TCP 坐标系拖动
187  *
188  * @return 成功返回0; 失败返回错误码
189  * AUBO_BUSY
190  * AUBO_BAD_STATE
191  * -AUBO_INVL_ARGUMENT
192  * -AUBO_BAD_STATE
193  *
194  * @throws arcs::common_interface::AuboException
195  *
196  */
197  int handguideMode(const std::vector<int> &freeAxes,
198  const std::vector<double> &feature);
199 
200  /**
201  * 退出拖动示教
202  *
203  * @note 暂未实现
204  *
205  * @return 成功返回0; 失败返回错误码
206  * AUBO_BUSY
207  * AUBO_BAD_STATE
208  * -AUBO_BAD_STATE
209  *
210  * @throws arcs::common_interface::AuboException
211  *
212  */
213  int exitHandguideMode();
214 
215  /**
216  * 获取拖动示教器的状态(是否处于奇异空间)
217  *
218  * @note 暂未实现
219  *
220  * @return
221  * • 0 - 正常操作.
222  * • 1 - 接近奇异空间.
223  * • 2 - 极其接近奇异点,将产生较大的拖动阻尼.
224  *
225  * @throws arcs::common_interface::AuboException
226  *
227  */
228  int getHandguideStatus();
229 
230  /**
231  * 获取拖动示教器触发源
232  *
233  * @note 暂未实现
234  *
235  * @return
236  *
237  * @throws arcs::common_interface::AuboException
238  *
239  */
240  int getHandguideTrigger();
241 
242  /**
243  * 获取拖动示教使能状态
244  *
245  * @return 使能返回true; 失能返回false
246  *
247  * @throws arcs::common_interface::AuboException
248  *
249  * @par JSON-RPC请求示例
250  * {"jsonrpc":"2.0","method":"rob1.RobotManage.isHandguideEnabled","params":[],"id":1}
251  *
252  * @par JSON-RPC响应示例
253  * {"id":1,"jsonrpc":"2.0","result":false}
254  *
255  */
256  bool isHandguideEnabled();
257 
258  /**
259  * 发起机器人进入/退出仿真模式请求
260  *
261  * @param enable
262  *
263  * @return 成功返回0;失败返回错误码
264  * AUBO_BUSY
265  * AUBO_BAD_STATE
266  * -AUBO_INVL_ARGUMENT
267  * -AUBO_BAD_STATE
268  *
269  * @throws arcs::common_interface::AuboException
270  *
271  * @par Python函数原型
272  * setSim(self: pyaubo_sdk.RobotManage, arg0: bool) -> int
273  *
274  * @par Lua函数原型
275  * setSim(enable: boolean) -> number
276  *
277  * @par JSON-RPC请求示例
278  * {"jsonrpc":"2.0","method":"rob1.RobotManage.setSim","params":[true],"id":1}
279  *
280  * @par JSON-RPC响应示例
281  * {"id":1,"jsonrpc":"2.0","result":0}
282  *
283  * @par C++示例
284  * @code
285  * auto rpc_cli = std::make_shared<RpcClient>();
286  * auto robot_name = rpc_cli->getRobotNames().front();
287  * rpc_cli->getRobotInterface(robot_name)->getRobotManage()->setSim(true);
288  * @endcode
289  *
290  */
291  int setSim(bool enable);
292 
293  /**
294  * 设置机器人操作模式
295  *
296  * @param mode 操作模式
297  *
298  * @return 成功返回0; 失败返回错误码
299  * -AUBO_BAD_STATE
300  *
301  * @throws arcs::common_interface::AuboException
302  *
303  * @par Python函数原型
304  * setOperationalMode(self: pyaubo_sdk.RobotManage, arg0:
305  * arcs::common_interface::OperationalModeType) -> int
306  *
307  * @par Lua函数原型
308  * setOperationalMode(mode: number) -> number
309  *
310  * @par JSON-RPC请求示例
311  * {"jsonrpc":"2.0","method":"rob1.RobotManage.setOperationalMode","params":["Manual"],"id":1}
312  *
313  * @par JSON-RPC响应示例
314  * {"id":1,"jsonrpc":"2.0","result":0}
315  *
316  * @par C++示例
317  * @code
318  * auto rpc_cli = std::make_shared<RpcClient>();
319  * auto robot_name = rpc_cli->getRobotNames().front();
320  * rpc_cli->getRobotInterface(robot_name)->getRobotManage()->setOperationalMode(OperationalModeType::Automatic);
321  * @endcode
322  *
323  */
324  int setOperationalMode(OperationalModeType mode);
325 
326  /**
327  * 获取机器人操作模式
328  *
329  * @return 机器人操作模式
330  *
331  * @throws arcs::common_interface::AuboException
332  *
333  * @par Python函数原型
334  * getOperationalMode(self: pyaubo_sdk.RobotManage) ->
335  * arcs::common_interface::OperationalModeType
336  *
337  * @par Lua函数原型
338  * getOperationalMode() -> number
339  *
340  * @par JSON-RPC请求示例
341  * {"jsonrpc":"2.0","method":"rob1.RobotManage.getOperationalMode","params":[],"id":1}
342  *
343  * @par JSON-RPC响应示例
344  * {"id":1,"jsonrpc":"2.0","result":"Manual"}
345  *
346  * @par C++示例
347  * @code
348  * auto rpc_cli = std::make_shared<RpcClient>();
349  * auto robot_name = rpc_cli->getRobotNames().front();
350  * OperationalModeType mode =
351  * rpc_cli->getRobotInterface(robot_name)->getRobotManage()->getOperationalMode();
352  * @endcode
353  *
354  */
355  OperationalModeType getOperationalMode();
356 
357  /**
358  * 获取控制模式
359  *
360  * @return 控制模式
361  *
362  * @throws arcs::common_interface::AuboException
363  *
364  * @par Python函数原型
365  * getRobotControlMode(self: pyaubo_sdk.RobotManage) ->
366  * arcs::common_interface::RobotControlModeType
367  *
368  * @par Lua函数原型
369  * getRobotControlMode() -> number
370  *
371  * @par JSON-RPC请求示例
372  * {"jsonrpc":"2.0","method":"rob1.RobotManage.getRobotControlMode","params":[],"id":1}
373  *
374  * @par JSON-RPC响应示例
375  * {"id":1,"jsonrpc":"2.0","result":"Position"}
376  *
377  * @par C++示例
378  * @code
379  * auto rpc_cli = std::make_shared<RpcClient>();
380  * auto robot_name = rpc_cli->getRobotNames().front();
381  * RobotControlModeType mode =
382  * rpc_cli->getRobotInterface(robot_name)->getRobotManage()->getRobotControlMode();
383  * @endcode
384  */
385  RobotControlModeType getRobotControlMode();
386 
387  /**
388  * 是否使能了拖动示教模式
389  *
390  * @return 使能返回true; 反之返回false
391  *
392  * @throws arcs::common_interface::AuboException
393  *
394  * @par Python函数原型
395  * isFreedriveEnabled(self: pyaubo_sdk.RobotManage) -> bool
396  *
397  * @par Lua函数原型
398  * isFreedriveEnabled() -> boolean
399  *
400  * @par JSON-RPC请求示例
401  * {"jsonrpc":"2.0","method":"rob1.RobotManage.isFreedriveEnabled","params":[],"id":1}
402  *
403  * @par JSON-RPC响应示例
404  * {"id":1,"jsonrpc":"2.0","result":false}
405  *
406  * @par C++示例
407  * @code
408  * auto rpc_cli = std::make_shared<RpcClient>();
409  * auto robot_name = rpc_cli->getRobotNames().front();
410  * bool isEnabled =
411  * rpc_cli->getRobotInterface(robot_name)->getRobotManage()->isFreedriveEnabled();
412  * @endcode
413  *
414  */
415  bool isFreedriveEnabled();
416 
417  /**
418  * 是否使能了反向驱动模式
419  *
420  * @return 使能返回true; 反之返回false
421  *
422  * @throws arcs::common_interface::AuboException
423  *
424  * @par Python函数原型
425  * isBackdriveEnabled(self: pyaubo_sdk.RobotManage) -> bool
426  *
427  * @par Lua函数原型
428  * isBackdriveEnabled() -> boolean
429  *
430  * @par JSON-RPC请求示例
431  * {"jsonrpc":"2.0","method":"rob1.RobotManage.isBackdriveEnabled","params":[],"id":1}
432  *
433  * @par JSON-RPC响应示例
434  * {"id":1,"jsonrpc":"2.0","result":false}
435  *
436  * @par C++示例
437  * @code
438  * auto rpc_cli = std::make_shared<RpcClient>();
439  * auto robot_name = rpc_cli->getRobotNames().front();
440  * bool isEnabled =
441  * rpc_cli->getRobotInterface(robot_name)->getRobotManage()->isBackdriveEnabled();
442  * @endcode
443  */
444  bool isBackdriveEnabled();
445 
446  /**
447  * 是否使能了仿真模式
448  *
449  * @return 使能返回true; 反之返回false
450  *
451  * @throws arcs::common_interface::AuboException
452  *
453  * @par Python函数原型
454  * isSimulationEnabled(self: pyaubo_sdk.RobotManage) -> bool
455  *
456  * @par Lua函数原型
457  * isSimulationEnabled() -> boolean
458  *
459  * @par JSON-RPC请求示例
460  * {"jsonrpc":"2.0","method":"rob1.RobotManage.isSimulationEnabled","params":[],"id":1}
461  *
462  * @par JSON-RPC响应示例
463  * {"id":1,"jsonrpc":"2.0","result":true}
464  *
465  * @par C++示例
466  * @code
467  * auto rpc_cli = std::make_shared<RpcClient>();
468  * auto robot_name = rpc_cli->getRobotNames().front();
469  * bool isEnabled =
470  * rpc_cli->getRobotInterface(robot_name)->getRobotManage()->isSimulationEnabled();
471  * @endcode
472  */
473  bool isSimulationEnabled();
474 
475  /**
476  * 清除防护停机,包括碰撞停机
477  *
478  * @return 成功返回0;失败返回错误码
479  * AUBO_BUSY
480  * AUBO_BAD_STATE
481  * -AUBO_BAD_STATE
482  *
483  * @throws arcs::common_interface::AuboException
484  *
485  * @par Python函数原型
486  * setUnlockProtectiveStop(self: pyaubo_sdk.RobotManage) -> int
487  *
488  * @par Lua函数原型
489  * setUnlockProtectiveStop() -> number
490  *
491  * @par JSON-RPC请求示例
492  * {"jsonrpc":"2.0","method":"rob1.RobotManage.setUnlockProtectiveStop","params":[],"id":1}
493  *
494  * @par JSON-RPC响应示例
495  * {"id":1,"jsonrpc":"2.0","result":0}
496  *
497  * @par C++示例
498  * @code
499  * auto rpc_cli = std::make_shared<RpcClient>();
500  * auto robot_name = rpc_cli->getRobotNames().front();
501  * rpc_cli->getRobotInterface(robot_name)->getRobotManage()->setUnlockProtectiveStop();
502  * @endcode
503  */
504  int setUnlockProtectiveStop();
505 
506  /**
507  * 重置安全接口板,一般在机器人断电之后需要重置时调用,比如机器人急停、故障等之后
508  *
509  * @return 成功返回0; 失败返回错误码
510  * AUBO_BUSY
511  * AUBO_BAD_STATE
512  * -AUBO_BAD_STATE
513  *
514  * @throws arcs::common_interface::AuboException
515  *
516  * @par Python函数原型
517  * restartInterfaceBoard(self: pyaubo_sdk.RobotManage) -> int
518  *
519  * @par Lua函数原型
520  * restartInterfaceBoard() -> number
521  *
522  * @par JSON-RPC请求示例
523  * {"jsonrpc":"2.0","method":"rob1.RobotManage.restartInterfaceBoard","params":[],"id":1}
524  *
525  * @par JSON-RPC响应示例
526  * {"id":1,"jsonrpc":"2.0","result":0}
527  *
528  * @par C++示例
529  * @code
530  * auto rpc_cli = std::make_shared<RpcClient>();
531  * auto robot_name = rpc_cli->getRobotNames().front();
532  * rpc_cli->getRobotInterface(robot_name)->getRobotManage()->restartInterfaceBoard();
533  * @endcode
534  */
535  int restartInterfaceBoard();
536 
537  /**
538  * 开始实时轨迹的记录
539  *
540  * @param file_name
541  *
542  * @return 成功返回0;失败返回错误码
543  * AUBO_BUSY
544  * AUBO_BAD_STATE
545  * -AUBO_INVL_ARGUMENT
546  * -AUBO_BAD_STATE
547  *
548  * @throws arcs::common_interface::AuboException
549  *
550  */
551  int startRecord(const std::string &file_name);
552 
553  /**
554  * 停止实时记录
555  *
556  * @return 成功返回0;失败返回错误码
557  * AUBO_BUSY
558  * AUBO_BAD_STATE
559  * -AUBO_BAD_STATE
560  *
561  * @throws arcs::common_interface::AuboException
562  *
563  * @par JSON-RPC请求示例
564  * {"jsonrpc":"2.0","method":"rob1.RobotManage.stopRecord","params":[],"id":1}
565  *
566  * @par JSON-RPC响应示例
567  * {"id":1,"jsonrpc":"2.0","result":0}
568  *
569  */
570  int stopRecord();
571 
572  /**
573  * 暂停实时记录
574  *
575  * @param pause
576  *
577  * @return 成功返回0;失败返回错误码
578  * AUBO_BUSY
579  * AUBO_BAD_STATE
580  * -AUBO_BAD_STATE
581  *
582  * @throws arcs::common_interface::AuboException
583  *
584  * @par JSON-RPC请求示例
585  * {"jsonrpc":"2.0","method":"rob1.RobotManage.pauseRecord","params":[true],"id":1}
586  *
587  * @par JSON-RPC响应示例
588  * {"id":1,"jsonrpc":"2.0","result":0}
589  *
590  */
591  int pauseRecord(bool pause);
592 
593  /**
594  * 发起机器人进入/退出联动模式请求,
595  * 只有操作模式为自动或者无时,才能使能联动模式
596  *
597  * @param enable
598  *
599  * @return 成功返回0; 失败返回错误码
600  * AUBO_BUSY
601  * AUBO_REQUEST_IGNORE
602  * -AUBO_BAD_STATE
603  *
604  * @throws arcs::common_interface::AuboException
605  *
606  * @par Python函数原型
607  * setLinkModeEnable(self: pyaubo_sdk.RobotManage, arg0: bool) -> int
608  *
609  * @par Lua函数原型
610  * setLinkModeEnable(enable: boolean) -> number
611  *
612  * @par JSON-RPC请求示例
613  * {"jsonrpc":"2.0","method":"rob1.RobotManage.setLinkModeEnable","params":[true],"id":1}
614  *
615  * @par JSON-RPC响应示例
616  * {"id":1,"jsonrpc":"2.0","result":0}
617  *
618  * @par C++示例
619  * @code
620  * auto rpc_cli = std::make_shared<RpcClient>();
621  * auto robot_name = rpc_cli->getRobotNames().front();
622  * rpc_cli->getRobotInterface(robot_name)->getRobotManage()->setLinkModeEnable(true);
623  * @endcode
624  *
625  */
626  int setLinkModeEnable(bool enable);
627 
628  /**
629  * 是否使能了联动模式,联动模式下用户可以通过外部IO控制机器人(用户可以对IO的功能进行配置)
630  *
631  * @return 使能返回true; 反之返回false
632  *
633  * @throws arcs::common_interface::AuboException
634  *
635  * @par Python函数原型
636  * isLinkModeEnabled(self: pyaubo_sdk.RobotManage) -> bool
637  *
638  * @par Lua函数原型
639  * isLinkModeEnabled() -> boolean
640  *
641  * @par JSON-RPC请求示例
642  * {"jsonrpc":"2.0","method":"rob1.RobotManage.isLinkModeEnabled","params":[],"id":1}
643  *
644  * @par JSON-RPC响应示例
645  * {"id":1,"jsonrpc":"2.0","result":false}
646  *
647  * @par C++示例
648  * @code
649  * auto rpc_cli = std::make_shared<RpcClient>();
650  * auto robot_name = rpc_cli->getRobotNames().front();
651  * bool isEnabled =
652  * rpc_cli->getRobotInterface(robot_name)->getRobotManage()->isLinkModeEnabled();
653  * @endcode
654  */
655  bool isLinkModeEnabled();
656 
657 protected:
658  void *d_;
659 };
660 using RobotManagePtr = std::shared_ptr<RobotManage>;
661 
662 // clang-format off
663 #define RobotManage_DECLARES \
664  _FUNC(RobotManage, 0, poweron) \
665  _FUNC(RobotManage, 0, startup) \
666  _FUNC(RobotManage, 0, poweroff) \
667  _FUNC(RobotManage, 1, backdrive, enable) \
668  _FUNC(RobotManage, 1, freedrive, enable) \
669  _FUNC(RobotManage, 2, handguideMode, freeAxes,feature) \
670  _FUNC(RobotManage, 0, exitHandguideMode) \
671  _FUNC(RobotManage, 0, getHandguideStatus) \
672  _FUNC(RobotManage, 0, getHandguideTrigger) \
673  _FUNC(RobotManage, 0, isHandguideEnabled) \
674  _FUNC(RobotManage, 1, setSim, enable) \
675  _FUNC(RobotManage, 1, setOperationalMode, mode) \
676  _FUNC(RobotManage, 0, getOperationalMode) \
677  _FUNC(RobotManage, 0, getRobotControlMode) \
678  _FUNC(RobotManage, 0, isSimulationEnabled) \
679  _FUNC(RobotManage, 0, isFreedriveEnabled) \
680  _FUNC(RobotManage, 0, isBackdriveEnabled) \
681  _FUNC(RobotManage, 0, setUnlockProtectiveStop) \
682  _INST(RobotManage, 1, startRecord, file_name) \
683  _INST(RobotManage, 0, stopRecord) \
684  _INST(RobotManage, 1, pauseRecord, pause) \
685  _FUNC(RobotManage, 0, restartInterfaceBoard) \
686  _FUNC(RobotManage, 1, setLinkModeEnable, enable) \
687  _FUNC(RobotManage, 0, isLinkModeEnabled)
688 // clang-format on
689 } // namespace common_interface
690 } // namespace arcs
691 
692 #endif // AUBO_SDK_ROBOT_CONTROL_INTERFACE_H
数据类型的定义
OperationalModeType
操作模式
Definition: type_def.h:457
RobotControlModeType
机器人控制模式
Definition: type_def.h:465
std::shared_ptr< RobotManage > RobotManagePtr
Definition: robot_manage.h:660
Definition: aubo_api.h:17