AUBO SDK  0.26.0
载入中...
搜索中...
未找到
force_control.h
浏览该文件的文档.
1/**
2 * \chinese
3 * @file force_control.h
4 * @brief 力控接口
5 *
6 * 力控的限制
7 * 当机器人处于力控模式时,以下功能不可用:
8 *
9 * • 碰撞检测(选项 613-1)\n
10 * • SoftMove(选项 885-1)\n
11 * • 跟踪功能,如输送带跟踪(选项 606-1)、光学跟踪(6601)和焊接引导(815-2)\n
12 * • 传感器同步或模拟同步\n
13 * • 世界区域(选项 608-1)\n
14 * • 独立轴(选项 610-1)\n
15 * • 路径偏移(选项 612-1)\n
16 * • 弧焊选项\n
17 * • PickMaster 选项\n
18 * • 关节软伺服(指令 SoftAct)\n
19 * • 当机器人以 MultiMove 协调模式(选项 604-1)运行时,不能激活力控。\n
20 * • 如果力控与 SafeMove(选项 810-2)或电子位置开关(选项 810-1)一起使用,必须使用操作安全范围功能。请参阅这些选项的相关手册。\n
21 * • RAPID 指令如 FCAct、FCDeact、FCConditionWaitWhile 和 FCRefStop 只能从运动任务的普通级别调用。
22 *
23 * 应用:抛光、打磨、清洁\n
24 * FC Pressure\n
25 * 设置轨迹坐标系的 z 方向为力控轴,spring 设置为 0\n
26 * 在还没接触前设置输出力为 0,spring 设置为固定值(根据 vel 确定)\n
27 * 离开接触面:设置输出力为 0,spring 设置为固定值\n
28 *
29 * 活塞装配\n
30 * Forward clutch hub\n
31 * 设置力控终止模式
32 *
33 * 基于末端力传感器的拖动示教\n
34 * spring = 0; force_ref = 0; 参考轨迹点任意
35 * \endchinese
36 * \english
37 * @file force_control.h
38 * @brief Force control interface
39 *
40 * Force control limitations
41 * When the robot is force controlled, the following functionality is not accessible:
42 *
43 * • Collision Detection (option 613-1) \n
44 * • SoftMove (option 885-1) \n
45 * • Tracking functionality like Conveyor Tracking (option 606-1), Optical Tracking (6601) and Weld Guide (815-2) \n
46 * • Sensor Synchronization or Analog Synchronization \n
47 * • World Zones (option 608-1) \n
48 * • Independent Axes (option 610-1) \n
49 * • Path Offset (option 612-1) \n
50 * • Arc options \n
51 * • PickMaster options \n
52 * • Joint soft servo (instruction SoftAct) \n
53 * • Force Control cannot be activated when the robot is running in MultiMove Coordinated mode (option 604-1). \n
54 * • If Force Control is used together with SafeMove (option 810-2) or Electronic Position Switches (option 810-1), the function Operational Safety Range must be used. See the respective manual for these options. \n
55 * • RAPID instructions such as FCAct, FCDeact, FCConditionWaitWhile and FCRefStop can only be called from normal level in a motion task.
56 *
57 * Applications: polishing, grinding, cleaning \n
58 * FC Pressure \n
59 * Set the z direction of the trajectory coordinate system as the force control axis, set spring to 0 \n
60 * Before contact, set output force to 0, spring to a fixed value (determined by vel) \n
61 * Leaving the contact surface: set output force to 0, spring to a fixed value \n
62 *
63 * Piston assembly \n
64 * Forward clutch hub \n
65 * Set force control termination mode
66 *
67 * Drag teaching based on end force sensor \n
68 * spring = 0; force_ref = 0; reference trajectory point arbitrary
69 * \endenglish
70 */
71#ifndef AUBO_SDK_FORCE_CONTROL_INTERFACE_H
72#define AUBO_SDK_FORCE_CONTROL_INTERFACE_H
73
74#include <vector>
75#include <thread>
76
77#include <aubo/global_config.h>
78#include <aubo/type_def.h>
79
80namespace arcs {
81namespace common_interface {
82
83/**
84 * \chinese
85 * 力控接口抽象类
86 * \endchinese
87 * \english
88 * Abstract class for force control interface
89 * \endenglish
90 */
91class ARCS_ABI_EXPORT ForceControl
92{
93public:
95 virtual ~ForceControl();
96
97 /**
98 * \chinese
99 * 使能力控。
100 * fcEnable 被用于使能力控。 在力控被使能的同时,
101 * fcEnable 用于定义力控的坐标系,并调整力和力矩的阻尼。
102 * 如果在 fcEnable 中未指定坐标系,
103 * 则会创建一个默认的力控制坐标系,其方向与工作对象坐标系相同。
104 * 所有力控制监管功能都被 fcEnable 激活。
105 *
106 * @return 成功返回0;失败返回错误码
107 * AUBO_BUSY
108 * AUBO_BAD_STATE
109 * -AUBO_BAD_STATE
110 *
111 * @throws arcs::common_interface::AuboException
112 *
113 * @par Python函数原型
114 * fcEnable(self: pyaubo_sdk.ForceControl) -> int
115 *
116 * @par Lua函数原型
117 * fcEnable() -> nil
118 *
119 * @par JSON-RPC请求示例
120 * {"jsonrpc":"2.0","method":"rob1.ForceControl.fcEnable","params":[],"id":1}
121 *
122 * @par JSON-RPC响应示例
123 * {"id":1,"jsonrpc":"2.0","result":0}
124 *
125 * \endchinese
126 *
127 * \english
128 * Start force control
129 *
130 * fcEnable is used to enable Force Control. At the same time as Force
131 * Control is enabled, fcEnable is used to define the coordinate system
132 * for Force Control, and tune the force and torque damping. If a coordinate
133 * system is not specified in fcEnable a default force control coordinate
134 * system is created with the same orientation as the work object coordinate
135 * system. All Force Control supervisions are activated by fcEnable.
136 *
137 *
138 * @return Return 0 if succeeded; return error code if failed
139 * AUBO_BUSY
140 * AUBO_BAD_STATE
141 * -AUBO_BAD_STATE
142 *
143 * @throws arcs::common_interface::AuboException
144 *
145 * @par Python Function Prototype
146 * fcEnable(self: pyaubo_sdk.ForceControl) -> int
147 *
148 * @par Lua Function Prototype
149 * fcEnable() -> nil
150 *
151 * @par JSON-RPC Request example
152 * {"jsonrpc":"2.0","method":"rob1.ForceControl.fcEnable","params":[],"id":1}
153 *
154 * @par JSON-RPC Response example
155 * {"id":1,"jsonrpc":"2.0","result":0}
156 * \endenglish
157 */
158
159 int fcEnable();
160
161 /**
162 * \chinese
163 * 失能力控。
164 * fcDisable 被用于失能力控。 在成功失能力控之后,机器人将回到位置控制模式。
165 *
166 * @return 成功返回0;失败返回错误码
167 * AUBO_BUSY
168 * AUBO_BAD_STATE
169 * -AUBO_BAD_STATE
170 *
171 * @throws arcs::common_interface::AuboException
172 *
173 * @par Python函数原型
174 * fcDisable(self: pyaubo_sdk.ForceControl) -> int
175 *
176 * @par Lua函数原型
177 * fcDisable() -> nil
178 *
179 * @par JSON-RPC请求示例
180 * {"jsonrpc":"2.0","method":"rob1.ForceControl.fcDisable","params":[],"id":1}
181 *
182 * @par JSON-RPC响应示例
183 * {"id":1,"jsonrpc":"2.0","result":0}
184 * \endchinese
185 *
186 * \english
187 * End force control
188 *
189 * fcDisable is used to disable Force Control. After a successful
190 * deactivation the robot is back in position control.
191 *
192 * @return Return 0 if succeeded; return error code if failed
193 * AUBO_BUSY
194 * AUBO_BAD_STATE
195 * -AUBO_BAD_STATE
196 *
197 * @throws arcs::common_interface::AuboException
198 *
199 * @par Python Function Prototype
200 * fcDisable(self: pyaubo_sdk.ForceControl) -> int
201 *
202 * @par Lua Function Prototype
203 * fcDisable() -> nil
204 *
205 * @par JSON-RPC Request example
206 * {"jsonrpc":"2.0","method":"rob1.ForceControl.fcDisable","params":[],"id":1}
207 *
208 * @par JSON-RPC Response example
209 * {"id":1,"jsonrpc":"2.0","result":0}
210 * \endenglish
211 */
212
214
215 /**
216 * \chinese
217 * 判断力控是否被使能
218 *
219 * @return 使能返回true,失能返回false
220 *
221 * @throws arcs::common_interface::AuboException
222 *
223 * @par Python函数原型
224 * isFcEnabled(self: pyaubo_sdk.ForceControl) -> bool
225 *
226 * @par Lua函数原型
227 * isFcEnabled() -> boolean
228 *
229 * @par JSON-RPC请求示例
230 * {"jsonrpc":"2.0","method":"rob1.ForceControl.isFcEnabled","params":[],"id":1}
231 *
232 * @par JSON-RPC响应示例
233 * {"id":1,"jsonrpc":"2.0","result":false}
234 * \endchinese
235 *
236 * \english
237 * Check if force control is enabled
238 *
239 * @return Returns true if enabled, false if disabled
240 *
241 * @throws arcs::common_interface::AuboException
242 *
243 * @par Python Function Prototype
244 * isFcEnabled(self: pyaubo_sdk.ForceControl) -> bool
245 *
246 * @par Lua Function Prototype
247 * isFcEnabled() -> boolean
248 *
249 * @par JSON-RPC Request example
250 * {"jsonrpc":"2.0","method":"rob1.ForceControl.isFcEnabled","params":[],"id":1}
251 *
252 * @par JSON-RPC Response example
253 * {"id":1,"jsonrpc":"2.0","result":false}
254 * \endenglish
255 */
257
258 /**
259 * \chinese
260 * 设置力控参考(目标)值
261 *
262 * @param feature: 参考几何特征,用于生成力控参考坐标系
263 * @param compliance: 柔性轴(方向)选择
264 * @param wrench: 目标力/力矩
265 * @param limits: 速度限制
266 * @param type: 力控参考坐标系类型
267 *
268 * 使用说明:
269 * 1. 基坐标系:
270 * feature = {0,0,0,0,0,0}
271 * type = TaskFrameType::NONE
272 *
273 * 2. 法兰坐标系:
274 * feature = {0,0,0,0,0,0}
275 * type = TaskFrameType::TOOL_FORCE
276 *
277 * 3. TCP坐标系:
278 * feature = tcp_offset
279 * type = TaskFrameType::TOOL_FORCE
280 *
281 * 4. 用户坐标系(FRAME_FORCE):
282 * type = TaskFrameType::FRAME_FORCE
283 * feature 设为用户定义的参考坐标,例如 getTcpPose() 表示以当前 TCP 坐标作为力控坐标系。
284 *
285 * @return 成功返回0;失败返回错误码
286 * AUBO_BUSY
287 * AUBO_BAD_STATE
288 * -AUBO_INVL_ARGUMENT
289 * -AUBO_BAD_STATE
290 *
291 * @throws arcs::common_interface::AuboException
292 *
293 * @par Python函数原型
294 * setTargetForce(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1:
295 * List[bool], arg2: List[float], arg3: List[float], arg4:
296 * arcs::common_interface::TaskFrameType) -> int
297 *
298 * @par Lua函数原型
299 * setTargetForce(feature: table, compliance: table, wrench: table, limits:
300 * table, type: number) -> nil
301 *
302 * \endchinese
303 * \english
304 * Set force control reference (target) value
305 *
306 * @param feature: Reference geometric feature for generating force control reference frame
307 * @param compliance: Compliance axis (direction) selection
308 * @param wrench: Target force/torque
309 * @param limits: Velocity limits
310 * @param type: Force control reference frame type
311 *
312 * Usage Examples:
313 * 1. Base Coordinate Frame:
314 * feature = {0,0,0,0,0,0}
315 * type = TaskFrameType::NONE
316 *
317 * 2. Flange Coordinate Frame:
318 * feature = {0,0,0,0,0,0}
319 * type = TaskFrameType::TOOL_FORCE
320 *
321 * 3. TCP Coordinate Frame:
322 * feature = tcp_offset
323 * type = TaskFrameType::TOOL_FORCE
324 *
325 * 4. User Coordinate Frame (FRAME_FORCE):
326 * type = TaskFrameType::FRAME_FORCE
327 * feature should be the user-defined reference frame,
328 * for example, getTcpPose() means setting the force control frame to current TCP pose.
329 *
330 * @return Return 0 if succeeded; return error code if failed
331 * AUBO_BUSY
332 * AUBO_BAD_STATE
333 * -AUBO_INVL_ARGUMENT
334 * -AUBO_BAD_STATE
335 *
336 * @throws arcs::common_interface::AuboException
337 *
338 * @par Python Function Prototype
339 * setTargetForce(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1:
340 * List[bool], arg2: List[float], arg3: List[float], arg4:
341 * arcs::common_interface::TaskFrameType) -> int
342 *
343 * @par Lua Function Prototype
344 * setTargetForce(feature: table, compliance: table, wrench: table, limits:
345 * table, type: number) -> nil
346 *
347 * \endenglish
348 */
349 int setTargetForce(const std::vector<double> &feature,
350 const std::vector<bool> &compliance,
351 const std::vector<double> &wrench,
352 const std::vector<double> &limits,
353 TaskFrameType type = TaskFrameType::FRAME_FORCE);
354
355 /**
356 * \chinese
357 * 设置力控动力学模型
358 *
359 * @param env_stiff: 环境刚度,表示为接触轴方向上的工件刚度,取值范围[0, 1],默认为0
360 * @param damp_scale: 表征阻尼水平的参数,取值范围[0, 1],默认为0.5
361 * @param stiff_scale: 表征软硬程度的参数,取值范围[0, 1],默认为0.5
362 *
363 * @return 成功返回0;失败返回错误码
364 * AUBO_BUSY
365 * AUBO_BAD_STATE
366 * -AUBO_INVL_ARGUMENT
367 * -AUBO_BAD_STATE
368 *
369 * @throws arcs::common_interface::AuboException
370 *
371 * @par Python函数原型
372 * setDynamicModel1(self: pyaubo_sdk.ForceControl, arg0: List[float],
373 * arg1: List[float], arg2: List[float]) -> int
374 *
375 * @par Lua函数原型
376 * setDynamicModel1(env_stiff: table, damp_scale: table, stiff_scale:
377 * table) -> nil
378 * \endchinese
379 * \english
380 * Set force control dynamics model
381 *
382 * @param env_stiff: Environment stiffness, representing the workpiece stiffness in the contact axis direction, range [0, 1], default 0
383 * @param damp_scale: Parameter representing damping level, range [0, 1], default 0.5
384 * @param stiff_scale: Parameter representing stiffness level, range [0, 1], default 0.5
385 *
386 * @return Return 0 if succeeded; return error code if failed
387 * AUBO_BUSY
388 * AUBO_BAD_STATE
389 * -AUBO_INVL_ARGUMENT
390 * -AUBO_BAD_STATE
391 *
392 * @throws arcs::common_interface::AuboException
393 *
394 * @par Python Function Prototype
395 * setDynamicModel1(self: pyaubo_sdk.ForceControl, arg0: List[float],
396 * arg1: List[float], arg2: List[float]) -> int
397 *
398 * @par Lua Function Prototype
399 * setDynamicModel1(env_stiff: table, damp_scale: table, stiff_scale:
400 * table) -> nil
401 * \endenglish
402 */
403 int setDynamicModel1(const std::vector<double> &env_stiff,
404 const std::vector<double> &damp_scale,
405 const std::vector<double> &stiff_scale);
406
407 /**
408 * \chinese
409 * 计算力控动力学模型
410 *
411 * @param env_stiff: 环境刚度,表示为接触轴方向上的工件刚度,取值范围[0, 1],默认为0
412 * @param damp_scale: 表征阻尼水平的参数,取值范围[0, 1],默认为0.5
413 * @param stiff_scale: 表征软硬程度的参数,取值范围[0, 1],默认为0.5
414 *
415 * @return 力控动力学模型MDK
416 * AUBO_BUSY
417 * AUBO_BAD_STATE
418 * -AUBO_INVL_ARGUMENT
419 * -AUBO_BAD_STATE
420 *
421 * @throws arcs::common_interface::AuboException
422 *
423 * @par Python函数原型
424 * fcCalDynamicModel(self: pyaubo_sdk.ForceControl, arg0: List[float],
425 * arg1: List[float], arg2: List[float]) -> Tuple[List[float], List[float], List[float]]
426 *
427 * @par Lua函数原型
428 * fcCalDynamicModel(env_stiff: table, damp_scale: table, stiff_scale: table) -> table
429 * \endchinese
430 * \english
431 * Calculate force control dynamics model
432 *
433 * @param env_stiff: Environment stiffness, representing the workpiece stiffness in the contact axis direction, range [0, 1], default 0
434 * @param damp_scale: Parameter representing damping level, range [0, 1], default 0.5
435 * @param stiff_scale: Parameter representing stiffness level, range [0, 1], default 0.5
436 *
437 * @return Force control dynamics model MDK
438 * AUBO_BUSY
439 * AUBO_BAD_STATE
440 * -AUBO_INVL_ARGUMENT
441 * -AUBO_BAD_STATE
442 *
443 * @throws arcs::common_interface::AuboException
444 *
445 * @par Python Function Prototype
446 * fcCalDynamicModel(self: pyaubo_sdk.ForceControl, arg0: List[float],
447 * arg1: List[float], arg2: List[float]) -> Tuple[List[float], List[float], List[float]]
448 *
449 * @par Lua Function Prototype
450 * fcCalDynamicModel(env_stiff: table, damp_scale: table, stiff_scale: table) -> table
451 * \endenglish
452 */
453 DynamicsModel fcCalDynamicModel(const std::vector<double> &env_stiff,
454 const std::vector<double> &damp_scale,
455 const std::vector<double> &stiff_scale);
456
457 /**
458 * \chinese
459 * 设置力控搜孔场景下的动力学模型
460 *
461 * @param damp_scale: 表征阻尼水平的参数,取值范围[0, 1],默认为0.5
462 * @param stiff_scale: 表征软硬程度的参数,取值范围[0, 1],默认为0.5
463 *
464 * @return 成功返回0;失败返回错误码
465 * AUBO_BUSY
466 * AUBO_BAD_STATE
467 * -AUBO_INVL_ARGUMENT
468 * -AUBO_BAD_STATE
469 *
470 * @throws arcs::common_interface::AuboException
471 *
472 * @par Python函数原型
473 * setDynamicModelSearch(self: pyaubo_sdk.ForceControl, arg0: List[float],
474 * arg1: List[float]) -> int
475 *
476 * @par Lua函数原型
477 * setDynamicModelSearch(damp_scale: table, stiff_scale: table) -> nil
478 * \endchinese
479 * \english
480 * Set force control dynamics model for hole searching scenario
481 *
482 * @param damp_scale: Parameter representing damping level, range [0, 1], default 0.5
483 * @param stiff_scale: Parameter representing stiffness level, range [0, 1], default 0.5
484 *
485 * @return Return 0 if succeeded; return error code if failed
486 * AUBO_BUSY
487 * AUBO_BAD_STATE
488 * -AUBO_INVL_ARGUMENT
489 * -AUBO_BAD_STATE
490 *
491 * @throws arcs::common_interface::AuboException
492 *
493 * @par Python Function Prototype
494 * setDynamicModelSearch(self: pyaubo_sdk.ForceControl, arg0: List[float],
495 * arg1: List[float]) -> int
496 *
497 * @par Lua Function Prototype
498 * setDynamicModelSearch(damp_scale: table, stiff_scale: table) -> nil
499 * \endenglish
500 */
501 int setDynamicModelSearch(const std::vector<double> &damp_scale,
502 const std::vector<double> &stiff_scale);
503
504 /**
505 * \chinese
506 * 设置力控插/拔孔场景下的动力学模型
507 *
508 * @param damp_scale: 表征阻尼水平的参数,取值范围[0, 1],默认为0.5
509 * @param stiff_scale: 表征软硬程度的参数,取值范围[0, 1],默认为0.5
510 *
511 * @return 成功返回0;失败返回错误码
512 * AUBO_BUSY
513 * AUBO_BAD_STATE
514 * -AUBO_INVL_ARGUMENT
515 * -AUBO_BAD_STATE
516 *
517 * @throws arcs::common_interface::AuboException
518 *
519 * @par Python函数原型
520 * setDynamicModelInsert(self: pyaubo_sdk.ForceControl, arg0: List[float],
521 * arg1: List[float]) -> int
522 *
523 * @par Lua函数原型
524 * setDynamicModelInsert(damp_scale: table, stiff_scale: table) -> nil
525 *
526 * \endchinese
527 * \english
528 * Set force control dynamics model for insertion/extraction scenario
529 *
530 * @param damp_scale: Parameter representing damping level, range [0, 1], default 0.5
531 * @param stiff_scale: Parameter representing stiffness level, range [0, 1], default 0.5
532 *
533 * @return Return 0 if succeeded; return error code if failed
534 * AUBO_BUSY
535 * AUBO_BAD_STATE
536 * -AUBO_INVL_ARGUMENT
537 * -AUBO_BAD_STATE
538 *
539 * @throws arcs::common_interface::AuboException
540 *
541 * @par Python Function Prototype
542 * setDynamicModelInsert(self: pyaubo_sdk.ForceControl, arg0: List[float],
543 * arg1: List[float]) -> int
544 *
545 * @par Lua Function Prototype
546 * setDynamicModelInsert(damp_scale: table, stiff_scale: table) -> nil
547 *
548 * \endenglish
549 */
550 int setDynamicModelInsert(const std::vector<double> &damp_scale,
551 const std::vector<double> &stiff_scale);
552 /**
553 * \chinese
554 * 设置力控接触场景下的动力学模型
555 *
556 * @param env_stiff: 表征环境刚度的参数,取值范围[0, 1],默认为0
557 * @param damp_scale: 表征阻尼水平的参数,取值范围[0, 1],默认为0.5
558 * @param stiff_scale: 表征软硬程度的参数,取值范围[0, 1],默认为0.5
559 *
560 * @return 成功返回0;失败返回错误码
561 * AUBO_BUSY
562 * AUBO_BAD_STATE
563 * -AUBO_INVL_ARGUMENT
564 * -AUBO_BAD_STATE
565 *
566 * @throws arcs::common_interface::AuboException
567 *
568 * @par Python函数原型
569 * setDynamicModelContact(self: pyaubo_sdk.ForceControl, arg0: List[float],
570 * arg1: List[float], arg2: List[float]) -> int
571 *
572 * @par Lua函数原型
573 * setDynamicModelContact(env_stiff: table, damp_scale: table, stiff_scale:
574 * table) -> nil
575 * \endchinese
576 * \english
577 * Set force control dynamics model for contact scenario
578 *
579 * @param env_stiff: Parameter representing environment stiffness, range [0, 1], default 0
580 * @param damp_scale: Parameter representing damping level, range [0, 1], default 0.5
581 * @param stiff_scale: Parameter representing stiffness level, range [0, 1], default 0.5
582 *
583 * @return Return 0 if succeeded; return error code if failed
584 * AUBO_BUSY
585 * AUBO_BAD_STATE
586 * -AUBO_INVL_ARGUMENT
587 * -AUBO_BAD_STATE
588 *
589 * @throws arcs::common_interface::AuboException
590 *
591 * @par Python Function Prototype
592 * setDynamicModelContact(self: pyaubo_sdk.ForceControl, arg0: List[float],
593 * arg1: List[float], arg2: List[float]) -> int
594 *
595 * @par Lua Function Prototype
596 * setDynamicModelContact(env_stiff: table, damp_scale: table, stiff_scale:
597 * table) -> nil
598 * \endenglish
599 */
600 int setDynamicModelContact(const std::vector<double> &env_stiff,
601 const std::vector<double> &damp_scale,
602 const std::vector<double> &stiff_scale);
603
604 /**
605 * \chinese
606 * 设置力控动力学模型
607 *
608 * @param m 质量参数
609 * @param d 阻尼参数
610 * @param k 刚度参数
611 *
612 * 参数单位说明:
613 * - 质量:
614 * - 笛卡尔空间:单位为 kg,长度为工作空间维度(一般为6),顺序为 [x, y, z, Rx, Ry, Rz]
615 * - 关节空间:单位为 kg·m²,长度为机器人自由度(一般为6),顺序为 [J1, J2, J3, J4, J5, J6]
616 * - 阻尼:
617 * - 笛卡尔空间:单位为 N·s/m,顺序为 [x, y, z, Rx, Ry, Rz]
618 * - 关节空间:单位为 N·m·s/rad,顺序为 [J1, J2, J3, J4, J5, J6]
619 * - 刚度:
620 * - 笛卡尔空间:单位为 N/m,顺序为 [x, y, z, Rx, Ry, Rz]
621 * - 关节空间:单位为 N·m/rad,顺序为 [J1, J2, J3, J4, J5, J6]
622 *
623 * @return 成功返回0;失败返回错误码
624 * AUBO_BUSY
625 * AUBO_BAD_STATE
626 * -AUBO_INVL_ARGUMENT
627 * -AUBO_BAD_STATE
628 *
629 * @throws arcs::common_interface::AuboException
630 *
631 * @par Python函数原型
632 * setDynamicModel(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1:
633 * List[float], arg2: List[float]) -> int
634 *
635 * @par Lua函数原型
636 * setDynamicModel(m: table, d: table, k: table) -> nil
637 * \endchinese
638 * \english
639 * Set force control dynamics model
640 *
641 * @param m Mass parameters
642 * @param d Damping parameters
643 * @param k Stiffness parameters
644 *
645 * Parameter unit description:
646 * - Mass:
647 * - Cartesian space: unit is kg, length is 6, order is [x, y, z, Rx, Ry, Rz]
648 * - Joint space: unit is kg·m², length is 6, order is [J1, J2, J3, J4, J5, J6]
649 * - Damping:
650 * - Cartesian space: unit is N·s/m, order is [x, y, z, Rx, Ry, Rz]
651 * - Joint space: unit is N·m·s/rad, order is [J1, J2, J3, J4, J5, J6]
652 * - Stiffness:
653 * - Cartesian space: unit is N/m, order is [x, y, z, Rx, Ry, Rz]
654 * - Joint space: unit is N·m/rad, order is [J1, J2, J3, J4, J5, J6]
655 *
656 * @return Return 0 if succeeded; return error code if failed
657 * AUBO_BUSY
658 * AUBO_BAD_STATE
659 * -AUBO_INVL_ARGUMENT
660 * -AUBO_BAD_STATE
661 *
662 * @throws arcs::common_interface::AuboException
663 *
664 * @par Python Function Prototype
665 * setDynamicModel(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1:
666 * List[float], arg2: List[float]) -> int
667 *
668 * @par Lua Function Prototype
669 * setDynamicModel(m: table, d: table, k: table) -> nil
670 * \endenglish
671 */
672 int setDynamicModel(const std::vector<double> &m,
673 const std::vector<double> &d,
674 const std::vector<double> &k);
675
676 /**
677 * \chinese
678 * 设置力控阈值
679 *
680 * @param thresholds: 力控阈值
681 *
682 * @return 成功返回0;失败返回错误码
683 * AUBO_BUSY
684 * AUBO_BAD_STATE
685 * -AUBO_INVL_ARGUMENT
686 * -AUBO_BAD_STATE
687 *
688 * @throws arcs::common_interface::AuboException
689 *
690 * @par Python函数原型
691 * fcSetSensorThresholds(self: pyaubo_sdk.ForceControl, arg0:
692 * List[float]) -> int
693 *
694 * @par Lua函数原型
695 * fcSetSensorThresholds(feature: table, compliance: table, wrench:
696 * table, limits: table, type: number) -> nil
697 *
698 * \endchinese
699 * \english
700 * Set force control thresholds
701 *
702 * @param thresholds: Force control thresholds
703 *
704 * @return Return 0 if succeeded; return error code if failed
705 * AUBO_BUSY
706 * AUBO_BAD_STATE
707 * -AUBO_INVL_ARGUMENT
708 * -AUBO_BAD_STATE
709 *
710 * @throws arcs::common_interface::AuboException
711 *
712 * @par Python Function Prototype
713 * fcSetSensorThresholds(self: pyaubo_sdk.ForceControl, arg0:
714 * List[float]) -> int
715 *
716 * @par Lua Function Prototype
717 * fcSetSensorThresholds(feature: table, compliance: table, wrench:
718 * table, limits: table, type: number) -> nil
719 *
720 * \endenglish
721 */
722 int fcSetSensorThresholds(const std::vector<double> &thresholds);
723
724 /**
725 * \chinese
726 * 设置力控最大受力限制
727 *
728 * @param limits: 力限制
729 *
730 * @return 成功返回0;失败返回错误码
731 * AUBO_BUSY
732 * AUBO_BAD_STATE
733 * -AUBO_INVL_ARGUMENT
734 * -AUBO_BAD_STATE
735 *
736 * @throws arcs::common_interface::AuboException
737 *
738 * @par Python函数原型
739 * fcSetSensorLimits(self: pyaubo_sdk.ForceControl, arg0:
740 * List[float]) -> int
741 *
742 * @par Lua函数原型
743 * fcSetSensorLimits(feature: table, compliance: table, wrench:
744 * table, limits: table, type: number) -> nil
745 *
746 * \endchinese
747 * \english
748 * Set force control maximum force limits
749 *
750 * @param limits: Force limits
751 *
752 * @return Return 0 if succeeded; return error code if failed
753 * AUBO_BUSY
754 * AUBO_BAD_STATE
755 * -AUBO_INVL_ARGUMENT
756 * -AUBO_BAD_STATE
757 *
758 * @throws arcs::common_interface::AuboException
759 *
760 * @par Python Function Prototype
761 * fcSetSensorLimits(self: pyaubo_sdk.ForceControl, arg0:
762 * List[float]) -> int
763 *
764 * @par Lua Function Prototype
765 * fcSetSensorLimits(feature: table, compliance: table, wrench:
766 * table, limits: table, type: number) -> nil
767 *
768 * \endenglish
769 */
770 int fcSetSensorLimits(const std::vector<double> &limits);
771
772 /**
773 * \chinese
774 * 获取力控阈值
775 *
776 * @return 力控最小力阈值
777 *
778 * @throws arcs::common_interface::AuboException
779 *
780 * @par Python函数原型
781 * getFcSensorThresholds(self: pyaubo_sdk.ForceControl) -> list
782 *
783 * @par Lua函数原型
784 * getFcSensorThresholds() -> table
785 *
786 * \endchinese
787 * \english
788 * Get force control thresholds
789 *
790 * @return Minimum force control thresholds
791 *
792 * @throws arcs::common_interface::AuboException
793 *
794 * @par Python Function Prototype
795 * getFcSensorThresholds(self: pyaubo_sdk.ForceControl) -> list
796 *
797 * @par Lua Function Prototype
798 * getFcSensorThresholds() -> table
799 *
800 * \endenglish
801 */
802 std::vector<double> getFcSensorThresholds();
803
804 /**
805 * \chinese
806 * 获取最大力限制
807 *
808 * @return 力控最大力限制
809 *
810 * @throws arcs::common_interface::AuboException
811 *
812 * @par Python函数原型
813 * getFcSensorLimits(self: pyaubo_sdk.ForceControl) -> list
814 *
815 * @par Lua函数原型
816 * getFcSensorLimits() -> table
817 *
818 * \endchinese
819 * \english
820 * Get maximum force limits
821 *
822 * @return Force control maximum force limits
823 *
824 * @throws arcs::common_interface::AuboException
825 *
826 * @par Python Function Prototype
827 * getFcSensorLimits(self: pyaubo_sdk.ForceControl) -> list
828 *
829 * @par Lua Function Prototype
830 * getFcSensorLimits() -> table
831 *
832 * \endenglish
833 */
834 std::vector<double> getFcSensorLimits();
835
836 /**
837 * \chinese
838 * 获取力控动力学模型
839 *
840 * @return 力控动力学模型
841 *
842 * @throws arcs::common_interface::AuboException
843 *
844 * @par Python函数原型
845 * getDynamicModel(self: pyaubo_sdk.ForceControl) -> Tuple[List[float],
846 * List[float], List[float]]
847 *
848 * @par Lua函数原型
849 * getDynamicModel() -> table
850 *
851 * @par JSON-RPC请求示例
852 * {"jsonrpc":"2.0","method":"rob1.ForceControl.getDynamicModel","params":[],"id":1}
853 *
854 * @par JSON-RPC响应示例
855 * {"id":1,"jsonrpc":"2.0","result":[[],[20.0,20.0,20.0,5.0,5.0,5.0],[]]}
856 * \endchinese
857 * \english
858 * Get force control dynamics model
859 *
860 * @return Force control dynamics model
861 *
862 * @throws arcs::common_interface::AuboException
863 *
864 * @par Python Function Prototype
865 * getDynamicModel(self: pyaubo_sdk.ForceControl) -> Tuple[List[float],
866 * List[float], List[float]]
867 *
868 * @par Lua Function Prototype
869 * getDynamicModel() -> table
870 *
871 * @par JSON-RPC Request example
872 * {"jsonrpc":"2.0","method":"rob1.ForceControl.getDynamicModel","params":[],"id":1}
873 *
874 * @par JSON-RPC Response example
875 * {"id":1,"jsonrpc":"2.0","result":[[],[20.0,20.0,20.0,5.0,5.0,5.0],[]]}
876 * \endenglish
877 */
879
880 /**
881 * \chinese
882 * 设置力控终止条件:力,当测量的力在设置的范围之内,力控算法将保持运行,直到设置的条件不满足,力控将退出
883 *
884 * The condition is lateractivated by calling the instruction
885 * FCCondWaitWhile, which will wait and hold the program execution while the
886 * specified condition is true. This allows the reference force, torque and
887 * movement to continue until the force is outside the specified limits.
888 *
889 * A force condition is set up by defining minimum and maximum limits for
890 * the force in the directions of the force control coordinate system. Once
891 * activated with FCCondWaitWhile, the program execution will continue to
892 * wait while the measured force is within its specified limits.
893 *
894 * It is possible to specify that the condition is fulfilled when the force
895 * is outside the specified limits instead. This is done by using the switch
896 * argument Outside. The condition on force is specified in the force
897 * control coordinate system. This coordinate system is setup by the user in
898 * the instruction FCAct.
899 *
900 * @param min 各方向最小的力/力矩
901 * @param max 各方向最大的力/力矩
902 * @param outside false 在设置条件的范围之内有效
903 * true 在设置条件的范围之外有效
904 * @param timeout
905 * 时间限制,单位s(秒),从开始力控到达该时间时,不管是否满足力控终止条件,都会终止力控
906 *
907 * @return 成功返回0;失败返回错误码
908 * AUBO_BUSY
909 * AUBO_BAD_STATE
910 * -AUBO_INVL_ARGUMENT
911 * -AUBO_BAD_STATE
912 *
913 * @throws arcs::common_interface::AuboException
914 *
915 * @par Python函数原型
916 * setCondForce(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1:
917 * List[float], arg2: bool, arg3: float) -> int
918 *
919 * @par Lua函数原型
920 * setCondForce(min: table, max: table, outside: boolean, timeout: number)
921 * -> nil
922 * \endchinese
923 * \english
924 * Set force control termination condition: Force. When the measured force is within
925 * the specified range, the force control algorithm will continue to run until the set
926 * condition is not met, at which point force control will exit.
927 *
928 * The condition is lateractivated by calling the instruction
929 * FCCondWaitWhile, which will wait and hold the program execution while the
930 * specified condition is true. This allows the reference force, torque and
931 * movement to continue until the force is outside the specified limits.
932 *
933 * A force condition is set up by defining minimum and maximum limits for
934 * the force in the directions of the force control coordinate system. Once
935 * activated with FCCondWaitWhile, the program execution will continue to
936 * wait while the measured force is within its specified limits.
937 *
938 * It is possible to specify that the condition is fulfilled when the force
939 * is outside the specified limits instead. This is done by using the switch
940 * argument Outside. The condition on force is specified in the force
941 * control coordinate system. This coordinate system is setup by the user in
942 * the instruction FCAct.
943 *
944 * @param min Minimum force/torque in each direction
945 * @param max Maximum force/torque in each direction
946 * @param outside false: valid within the specified range
947 * true: valid outside the specified range
948 * @param timeout
949 * Time limit in seconds; when this time is reached from the start of force control,
950 * force control will terminate regardless of whether the end condition is met
951 *
952 * @return Return 0 if succeeded; return error code if failed
953 * AUBO_BUSY
954 * AUBO_BAD_STATE
955 * -AUBO_INVL_ARGUMENT
956 * -AUBO_BAD_STATE
957 *
958 * @throws arcs::common_interface::AuboException
959 *
960 * @par Python Function Prototype
961 * setCondForce(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1:
962 * List[float], arg2: bool, arg3: float) -> int
963 *
964 * @par Lua Function Prototype
965 * setCondForce(min: table, max: table, outside: boolean, timeout: number)
966 * -> nil
967 * \endenglish
968 */
969 int setCondForce(const std::vector<double> &min,
970 const std::vector<double> &max, bool outside,
971 double timeout);
972
973 /**
974 * \chinese
975 * 设置力控终止条件:姿态,当测量的姿态在设置的范围之内,力控算法将保持运行,直到设置的条件不满足,力控将退出.
976 *
977 * setCondOrient is used to set up an end condition for the tool orientation.
978 * The condition is lateractivated by calling the instruction
979 * FCCondWaitWhile, which will wait and hold the program execution while the
980 * specified condition is true. This allows the reference force, torque and
981 * movement to continue until the orientation is outside the specified
982 * limits.
983 *
984 * An orientation condition is set up by defining a maximum angle and a
985 * maximum rotation from a reference orientation. The reference orientation
986 * is either defined by the current z direction of the tool, or by
987 * specifying an orientation in relation to the z direction of the work
988 * object.
989 *
990 * Once activated, the tool orientation must be within the limits (or
991 * outside, if the argument Outside is used).
992 *
993 * @param frame
994 * @param max_angle
995 * @param max_rot
996 * @param outside
997 * @param timeout
998 *
999 * @return 成功返回0;失败返回错误码
1000 * AUBO_BUSY
1001 * AUBO_BAD_STATE
1002 * -AUBO_INVL_ARGUMENT
1003 * -AUBO_BAD_STATE
1004 *
1005 * @throws arcs::common_interface::AuboException
1006 *
1007 * @par Python函数原型
1008 * setCondOrient(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1:
1009 * float, arg2: float, arg3: bool, arg4: float) -> int
1010 *
1011 * @par Lua函数原型
1012 * setCondOrient(frame: table, max_angle: number, max_rot: number, outside:
1013 * boolean, timeout: number) -> nil
1014 * \endchinese
1015 *
1016 * \english
1017 * setCondOrient is used to set up an end condition for the tool orientation.
1018 * The condition will wait and hold the program execution while the
1019 * specified condition is true. This allows the reference force, torque and
1020 * movement to continue until the orientation is outside the specified
1021 * limits.
1022 *
1023 * An orientation condition is set up by defining a maximum angle and a
1024 * maximum rotation from a reference orientation. The reference orientation
1025 * is either defined by the current z direction of the tool, or by
1026 * specifying an orientation in relation to the z direction of the work
1027 * object.
1028 *
1029 * Once activated, the tool orientation must be within the limits (or
1030 * outside, if the argument Outside is used).
1031 *
1032 * @param frame
1033 * @param max_angle
1034 * @param max_rot
1035 * @param outside
1036 * @param timeout
1037 *
1038 * @return Return 0 if succeeded; return error code if failed
1039 * AUBO_BUSY
1040 * AUBO_BAD_STATE
1041 * -AUBO_INVL_ARGUMENT
1042 * -AUBO_BAD_STATE
1043 *
1044 * @throws arcs::common_interface::AuboException
1045 *
1046 * @par Python Function Prototype
1047 * setCondOrient(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1:
1048 * float, arg2: float, arg3: bool, arg4: float) -> int
1049 *
1050 * @par Lua Function Prototype
1051 * setCondOrient(frame: table, max_angle: number, max_rot: number, outside:
1052 * boolean, timeout: number) -> nil
1053 * \endenglish
1054 */
1055 int setCondOrient(const std::vector<double> &frame, double max_angle,
1056 double max_rot, bool outside, double timeout);
1057
1058 /**
1059 * \chinese
1060 * 指定力控有效平面,x-y平面,z方向有效
1061 *
1062 * @param plane={A,B,C,D}
1063 * 平面表示方法 Ax +By +Cz + D = 0
1064 * 其中,n = (A, B, C)是平面的法向量,
1065 * D 是将平面平移到坐标原点所需距离(所以D=0时,平面过原点)
1066 * @param timeout
1067 *
1068 * @return 成功返回0;失败返回错误码
1069 * AUBO_BUSY
1070 * AUBO_BAD_STATE
1071 * -AUBO_INVL_ARGUMENT
1072 * -AUBO_BAD_STATE
1073 *
1074 * @throws arcs::common_interface::AuboException
1075 *
1076 * @par Python函数原型
1077 * setCondPlane(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1:
1078 * float) -> int
1079 *
1080 * @par Lua函数原型
1081 * setCondPlane(plane: table, timeout: number) -> nil
1082 * \endchinese
1083 * \english
1084 * Specify a valid force control plane, x-y plane, z direction is valid
1085 *
1086 * @param plane={A,B,C,D}
1087 * Plane equation: Ax + By + Cz + D = 0
1088 * where n = (A, B, C) is the normal vector of the plane,
1089 * D is the distance required to move the plane to the origin (so D=0 means the plane passes through the origin)
1090 * @param timeout
1091 *
1092 * @return Return 0 if succeeded; return error code if failed
1093 * AUBO_BUSY
1094 * AUBO_BAD_STATE
1095 * -AUBO_INVL_ARGUMENT
1096 * -AUBO_BAD_STATE
1097 *
1098 * @throws arcs::common_interface::AuboException
1099 *
1100 * @par Python Function Prototype
1101 * setCondPlane(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1:
1102 * float) -> int
1103 *
1104 * @par Lua Function Prototype
1105 * setCondPlane(plane: table, timeout: number) -> nil
1106 * \endenglish
1107 */
1108 int setCondPlane(const std::vector<double> &plane, double timeout);
1109
1110 /**
1111 * \chinese
1112 * 指定力控有效圆柱体,提供中心轴和圆柱半径,可以指定圆柱内部还是外部
1113 *
1114 * @param axis
1115 * @param radius
1116 * @param outside
1117 * @param timeout
1118 *
1119 * @return 成功返回0;失败返回错误码
1120 * AUBO_BUSY
1121 * AUBO_BAD_STATE
1122 * -AUBO_INVL_ARGUMENT
1123 * -AUBO_BAD_STATE
1124 *
1125 * @throws arcs::common_interface::AuboException
1126 *
1127 * @par Python函数原型
1128 * setCondCylinder(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1:
1129 * float, arg2: bool, arg3: float) -> int
1130 *
1131 * @par Lua函数原型
1132 * setCondCylinder(axis: table, radius: number, outside: boolean, timeout:
1133 * number) -> nil
1134 * \endchinese
1135 * \english
1136 * Specify a valid force control cylinder by providing the central axis and cylinder radius, and specify whether the inside or outside of the cylinder is valid.
1137 *
1138 * @param axis
1139 * @param radius
1140 * @param outside
1141 * @param timeout
1142 *
1143 * @return Return 0 if succeeded; return error code if failed
1144 * AUBO_BUSY
1145 * AUBO_BAD_STATE
1146 * -AUBO_INVL_ARGUMENT
1147 * -AUBO_BAD_STATE
1148 *
1149 * @throws arcs::common_interface::AuboException
1150 *
1151 * @par Python Function Prototype
1152 * setCondCylinder(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1:
1153 * float, arg2: bool, arg3: float) -> int
1154 *
1155 * @par Lua Function Prototype
1156 * setCondCylinder(axis: table, radius: number, outside: boolean, timeout:
1157 * number) -> nil
1158 * \endenglish
1159 */
1160 int setCondCylinder(const std::vector<double> &axis, double radius,
1161 bool outside, double timeout);
1162
1163 /**
1164 * \chinese
1165 * 指定力控有效球体,提供球心和半径,可以指定球体内部还是外部
1166 *
1167 * @param center
1168 * @param radius
1169 * @param outside
1170 * @param timeout
1171 *
1172 * @return 成功返回0;失败返回错误码
1173 * AUBO_BUSY
1174 * AUBO_BAD_STATE
1175 * -AUBO_INVL_ARGUMENT
1176 * -AUBO_BAD_STATE
1177 *
1178 * @throws arcs::common_interface::AuboException
1179 *
1180 * @par Python函数原型
1181 * setCondSphere(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1:
1182 * float, arg2: bool, arg3: float) -> int
1183 *
1184 * @par Lua函数原型
1185 * setCondSphere(center: table, radius: number, outside: boolean, timeout:
1186 * number) -> nil
1187 * \endchinese
1188 * \english
1189 * Specify a valid force control sphere by providing the center and radius, and specify whether the inside or outside of the sphere is valid.
1190 *
1191 * @param center
1192 * @param radius
1193 * @param outside
1194 * @param timeout
1195 *
1196 * @return Return 0 if succeeded; return error code if failed
1197 * AUBO_BUSY
1198 * AUBO_BAD_STATE
1199 * -AUBO_INVL_ARGUMENT
1200 * -AUBO_BAD_STATE
1201 *
1202 * @throws arcs::common_interface::AuboException
1203 *
1204 * @par Python Function Prototype
1205 * setCondSphere(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1:
1206 * float, arg2: bool, arg3: float) -> int
1207 *
1208 * @par Lua Function Prototype
1209 * setCondSphere(center: table, radius: number, outside: boolean, timeout:
1210 * number) -> nil
1211 * \endenglish
1212 */
1213 int setCondSphere(const std::vector<double> &center, double radius,
1214 bool outside, double timeout);
1215
1216 /**
1217 * \chinese
1218 * 设置TCP速度的终止条件。该条件可通过调用FCCondWaitWhile指令激活,
1219 * 在指定条件为真时,程序将等待并保持执行。这样可以使参考力、力矩和运动继续,
1220 * 直到速度超出指定范围。
1221 *
1222 * 通过定义TCP在工作对象所有方向上的最小和最大速度限制来设置TCP速度条件。
1223 * 一旦通过FCCondWaitWhile激活,程序将在测量速度处于指定范围内时继续等待。
1224 *
1225 * 也可以指定当速度超出指定范围时条件成立,通过使用outside参数实现。
1226 * TCP速度条件在工作对象坐标系中指定。
1227 *
1228 * @param min 最小速度
1229 * @param max 最大速度
1230 * @param outside 是否在范围外有效
1231 * @param timeout 超时时间
1232 *
1233 * @return 成功返回0;失败返回错误码
1234 * AUBO_BUSY
1235 * AUBO_BAD_STATE
1236 * -AUBO_INVL_ARGUMENT
1237 * -AUBO_BAD_STATE
1238 *
1239 * @throws arcs::common_interface::AuboException
1240 *
1241 * @par Python函数原型
1242 * setCondTcpSpeed(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1:
1243 * List[float], arg2: bool, arg3: float) -> int
1244 *
1245 * @par Lua函数原型
1246 * setCondTcpSpeed(min: table, max: table, outside: boolean, timeout:
1247 * number) -> nil
1248 * \endchinese
1249 * \english
1250 * setCondTcpSpeed is used to setup an end condition for the TCP speed. The
1251 * condition is later activated by calling the instruction FCCondWaitWhile,
1252 * which will wait and hold the program execution while the specified
1253 * condition is true. This allows the reference force, torque and movement
1254 * to continue until the speed is outside the specified limits.
1255 *
1256 * A TCP speed condition is set up by defining minimum and maximum limits
1257 * for the TCP speed in all directions of the work object. Once activated
1258 * with FCCondWaitWhile, the program execution will continue to wait while
1259 * the measured speed is within its specified limits.
1260 *
1261 * It is possible to specify that the condition is fulfilled when the speed
1262 * is outside the specified limits instead. This is done by using the
1263 * switch argument Outside. The condition on TCP speed is specified in the
1264 * work object coordinate system.
1265 *
1266 * @param min
1267 * @param max
1268 * @param outside
1269 * @param timeout
1270 *
1271 * @return Return 0 if succeeded; return error code if failed
1272 * AUBO_BUSY
1273 * AUBO_BAD_STATE
1274 * -AUBO_INVL_ARGUMENT
1275 * -AUBO_BAD_STATE
1276 *
1277 * @throws arcs::common_interface::AuboException
1278 *
1279 * @par Python Function Prototype
1280 * setCondTcpSpeed(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1:
1281 * List[float], arg2: bool, arg3: float) -> int
1282 *
1283 * @par Lua Function Prototype
1284 * setCondTcpSpeed(min: table, max: table, outside: boolean, timeout:
1285 * number) -> nil
1286 * \endenglish
1287 */
1288 int setCondTcpSpeed(const std::vector<double> &min,
1289 const std::vector<double> &max, bool outside,
1290 double timeout);
1291
1292 /**
1293 * \chinese
1294 * 力控终止条件-距离
1295 *
1296 * @param distance 距离
1297 * @param timeout 超时时间
1298 *
1299 * @return 成功返回0;失败返回错误码
1300 * AUBO_BUSY
1301 * AUBO_BAD_STATE
1302 * -AUBO_INVL_ARGUMENT
1303 * -AUBO_BAD_STATE
1304 *
1305 * @throws arcs::common_interface::AuboException
1306 *
1307 * \endchinese
1308 * \english
1309 * Force control termination condition - distance
1310 *
1311 * @param distance Distance
1312 * @param timeout Timeout
1313 *
1314 * @return Return 0 if succeeded; return error code if failed
1315 * AUBO_BUSY
1316 * AUBO_BAD_STATE
1317 * -AUBO_INVL_ARGUMENT
1318 * -AUBO_BAD_STATE
1319 *
1320 * @throws arcs::common_interface::AuboException
1321 *
1322 * \endenglish
1323 */
1324 int setCondDistance(double distance, double timeout);
1325
1326 /**
1327 * \chinese
1328 * 高级力控终止条件
1329 *
1330 * @param type 类型
1331 * @param args 参数
1332 * @param timeout 超时时间
1333 *
1334 * @return 成功返回0;失败返回错误码
1335 * AUBO_BUSY
1336 * AUBO_BAD_STATE
1337 * -AUBO_INVL_ARGUMENT
1338 * -AUBO_BAD_STATE
1339 *
1340 * @throws arcs::common_interface::AuboException
1341 * \endchinese
1342 * \english
1343 * Advanced force control termination condition
1344 *
1345 * @param type Type
1346 * @param args Arguments
1347 * @param timeout Timeout
1348 *
1349 * @return Return 0 if succeeded; return error code if failed
1350 * AUBO_BUSY
1351 * AUBO_BAD_STATE
1352 * -AUBO_INVL_ARGUMENT
1353 * -AUBO_BAD_STATE
1354 *
1355 * @throws arcs::common_interface::AuboException
1356 * \endenglish
1357 */
1358 int setCondAdvanced(const std::string &type,
1359 const std::vector<double> &args, double timeout);
1360
1361 /**
1362 * \chinese
1363 * 激活力控终止条件
1364 *
1365 * @return 成功返回0;失败返回错误码
1366 * AUBO_BUSY
1367 * AUBO_BAD_STATE
1368 * -AUBO_BAD_STATE
1369 *
1370 * @throws arcs::common_interface::AuboException
1371 *
1372 * @par Python函数原型
1373 * setCondActive(self: pyaubo_sdk.ForceControl) -> int
1374 *
1375 * @par Lua函数原型
1376 * setCondActive() -> nil
1377 *
1378 * @par JSON-RPC请求示例
1379 * {"jsonrpc":"2.0","method":"rob1.ForceControl.setCondActive","params":[],"id":1}
1380 *
1381 * @par JSON-RPC响应示例
1382 * {"id":1,"jsonrpc":"2.0","result":0}
1383 * \endchinese
1384 * \english
1385 * Activate force control termination condition
1386 *
1387 * @return Return 0 if succeeded; return error code if failed
1388 * AUBO_BUSY
1389 * AUBO_BAD_STATE
1390 * -AUBO_BAD_STATE
1391 *
1392 * @throws arcs::common_interface::AuboException
1393 *
1394 * @par Python Function Prototype
1395 * setCondActive(self: pyaubo_sdk.ForceControl) -> int
1396 *
1397 * @par Lua Function Prototype
1398 * setCondActive() -> nil
1399 *
1400 * @par JSON-RPC Request example
1401 * {"jsonrpc":"2.0","method":"rob1.ForceControl.setCondActive","params":[],"id":1}
1402 *
1403 * @par JSON-RPC Response example
1404 * {"id":1,"jsonrpc":"2.0","result":0}
1405 * \endenglish
1406 */
1408
1409 /**
1410 * \chinese
1411 * 力控终止条件是否已经满足
1412 *
1413 * @return
1414 *
1415 * @throws arcs::common_interface::AuboException
1416 *
1417 * @par Python函数原型
1418 * isCondFullfiled(self: pyaubo_sdk.ForceControl) -> bool
1419 *
1420 * @par Lua函数原型
1421 * isCondFullfiled() -> boolean
1422 *
1423 * @par JSON-RPC请求示例
1424 * {"jsonrpc":"2.0","method":"rob1.ForceControl.isCondFullfiled","params":[],"id":1}
1425 *
1426 * @par JSON-RPC响应示例
1427 * {"id":1,"jsonrpc":"2.0","result":false}
1428 * \endchinese
1429 * \english
1430 * Check if the force control termination condition has been fulfilled
1431 *
1432 * @return
1433 *
1434 * @throws arcs::common_interface::AuboException
1435 *
1436 * @par Python Function Prototype
1437 * isCondFullfiled(self: pyaubo_sdk.ForceControl) -> bool
1438 *
1439 * @par Lua Function Prototype
1440 * isCondFullfiled() -> boolean
1441 *
1442 * @par JSON-RPC Request example
1443 * {"jsonrpc":"2.0","method":"rob1.ForceControl.isCondFullfiled","params":[],"id":1}
1444 *
1445 * @par JSON-RPC Response example
1446 * {"id":1,"jsonrpc":"2.0","result":false}
1447 * \endenglish
1448 */
1450
1451 /**
1452 * \chinese
1453 * setSupvForce 用于在力控中设置力监督。监督在通过 FCAct 指令激活力控时被激活。
1454 *
1455 * 力监督通过在力控坐标系的各个方向上定义最小和最大力限制来设置。
1456 * 一旦激活,如果力超出允许的范围,监督将停止执行。力监督在力控坐标系中指定。
1457 * 该坐标系由用户通过 FCAct 指令设置。
1458 *
1459 * @param min 最小力限制
1460 * @param max 最大力限制
1461 *
1462 * @return 成功返回0;失败返回错误码
1463 * AUBO_BUSY
1464 * AUBO_BAD_STATE
1465 * -AUBO_INVL_ARGUMENT
1466 * -AUBO_BAD_STATE
1467 *
1468 * @throws arcs::common_interface::AuboException
1469 *
1470 * @par Python函数原型
1471 * setSupvForce(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1:
1472 * List[float]) -> int
1473 *
1474 * @par Lua函数原型
1475 * setSupvForce(min: table, max: table) -> nil
1476 * \endchinese
1477 * \english
1478 * setSupvForce is used to set up force supervision in Force Control. The
1479 * supervision is activated when Force Control is activated with the
1480 * instruction FCAct.
1481 *
1482 * The force supervision is set up by defining minimum and maximum limits
1483 * for the force in the directions of the force control coordinate system.
1484 * Once activated, the supervision will stop the execution if the force is
1485 * outside the allowed values. The force supervision is specified in the
1486 * force control coordinate system. This coordinate system is setup by the
1487 * user with the instruction FCAct.
1488 *
1489 * @param min
1490 * @param max
1491 *
1492 * @return Return 0 if succeeded; return error code if failed
1493 * AUBO_BUSY
1494 * AUBO_BAD_STATE
1495 * -AUBO_INVL_ARGUMENT
1496 * -AUBO_BAD_STATE
1497 *
1498 * @throws arcs::common_interface::AuboException
1499 *
1500 * @par Python Function Prototype
1501 * setSupvForce(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1:
1502 * List[float]) -> int
1503 *
1504 * @par Lua Function Prototype
1505 * setSupvForce(min: table, max: table) -> nil
1506 * \endenglish
1507 */
1508 int setSupvForce(const std::vector<double> &min,
1509 const std::vector<double> &max);
1510
1511 /**
1512 * \chinese
1513 * setSupvOrient 用于设置工具姿态的监督条件。
1514 * 当通过 FCAct 指令激活力控时,监督条件被激活。
1515 *
1516 * 姿态监督通过定义相对于参考姿态的最大角度和最大旋转来设置。
1517 * 参考姿态可以由工具当前的z方向定义,也可以通过指定相对于工作对象z方向的姿态来定义。
1518 *
1519 * 一旦激活,工具姿态必须在限制范围内,否则监督将停止执行。
1520 *
1521 * @param frame
1522 * @param max_angle
1523 * @param max_rot
1524 * @param outside
1525 *
1526 * @return 成功返回0;失败返回错误码
1527 * AUBO_BUSY
1528 * AUBO_BAD_STATE
1529 * -AUBO_INVL_ARGUMENT
1530 * -AUBO_BAD_STATE
1531 *
1532 * @throws arcs::common_interface::AuboException
1533 *
1534 * @par Python函数原型
1535 * setSupvOrient(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1:
1536 * float, arg2: float, arg3: bool) -> int
1537 *
1538 * @par Lua函数原型
1539 * setSupvOrient(frame: table, max_angle: number, max_rot: number,
1540 * outside: boolean) -> nil
1541 * \endchinese
1542 * \english
1543 * setSupvOrient is used to set up an supervision for the tool orientation.
1544 * The supervision is activated when Force Control is activated with the
1545 * instruction FCAct.
1546 *
1547 * An orientation supervision is set up by defining a maximum angle and a
1548 * maximum rotation from a reference orientation. The reference orientation
1549 * is either defined by the current z direction of the tool, or by
1550 * specifying an orientation in relation to the z direction of the work
1551 * object.
1552 *
1553 * Once activated, the tool orientation must be within the limits otherwise
1554 * the supervision will stop the execution.
1555 *
1556 * @param frame
1557 * @param max_angle
1558 * @param max_rot
1559 * @param outside
1560 *
1561 * @return Return 0 if succeeded; return error code if failed
1562 * AUBO_BUSY
1563 * AUBO_BAD_STATE
1564 * -AUBO_INVL_ARGUMENT
1565 * -AUBO_BAD_STATE
1566 *
1567 * @throws arcs::common_interface::AuboException
1568 *
1569 * @par Python Function Prototype
1570 * setSupvOrient(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1:
1571 * float, arg2: float, arg3: bool) -> int
1572 *
1573 * @par Lua Function Prototype
1574 * setSupvOrient(frame: table, max_angle: number, max_rot: number,
1575 * outside: boolean) -> nil
1576 * \endenglish
1577 */
1578 int setSupvOrient(const std::vector<double> &frame, double max_angle,
1579 double max_rot, bool outside);
1580
1581 /**
1582 * \chinese
1583 * setSupvPosBox 用于在力控中设置位置监督。监督在通过 FCAct 指令激活力控时被激活。
1584 * 位置监督通过为TCP定义空间体积来设置。一旦激活,如果TCP超出该体积,监督将停止执行。
1585 *
1586 * @param frame
1587 * @param box
1588 *
1589 * @return 成功返回0;失败返回错误码
1590 * AUBO_BUSY
1591 * AUBO_BAD_STATE
1592 * -AUBO_INVL_ARGUMENT
1593 * -AUBO_BAD_STATE
1594 *
1595 * @throws arcs::common_interface::AuboException
1596 *
1597 * @par Python函数原型
1598 * setSupvPosBox(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1:
1599 * List[float[6]]) -> int
1600 *
1601 * @par Lua函数原型
1602 * setSupvPosBox(frame: table, box: table) -> nil
1603 * \endchinese
1604 * \english
1605 * setSupvPosBox is used to set up position supervision in Force Control.
1606 * Supervision is activated when Force Control is activated with the
1607 * instruction FCAct. Position supervision is set up by defining a volume in
1608 * space for the TCP. Once activated, the supervision will stop the
1609 * execution if the TCP is outside this volume.
1610 *
1611 * @param frame
1612 * @param box
1613 *
1614 * @return Return 0 if succeeded; return error code if failed
1615 * AUBO_BUSY
1616 * AUBO_BAD_STATE
1617 * -AUBO_INVL_ARGUMENT
1618 * -AUBO_BAD_STATE
1619 *
1620 * @throws arcs::common_interface::AuboException
1621 *
1622 * @par Python Function Prototype
1623 * setSupvPosBox(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1:
1624 * List[float[6]]) -> int
1625 *
1626 * @par Lua Function Prototype
1627 * setSupvPosBox(frame: table, box: table) -> nil
1628 * \endenglish
1629 */
1630 int setSupvPosBox(const std::vector<double> &frame, const Box &box);
1631
1632 /**
1633 * \chinese
1634 *
1635 * @param frame
1636 * @param cylinder
1637 *
1638 * @return 成功返回0;失败返回错误码
1639 * AUBO_BUSY
1640 * AUBO_BAD_STATE
1641 * -AUBO_INVL_ARGUMENT
1642 * -AUBO_BAD_STATE
1643 *
1644 * @throws arcs::common_interface::AuboException
1645 *
1646 * @par Python函数原型
1647 * setSupvPosCylinder(self: pyaubo_sdk.ForceControl, arg0: List[float],
1648 * arg1: List[float[5]]) -> int
1649 *
1650 * @par Lua函数原型
1651 * setSupvPosCylinder(frame: table, cylinder: table) -> nil
1652 *
1653 * \endchinese
1654 * \english
1655 *
1656 * @param frame
1657 * @param cylinder
1658 *
1659 * @return Return 0 if succeeded; return error code if failed
1660 * AUBO_BUSY
1661 * AUBO_BAD_STATE
1662 * -AUBO_INVL_ARGUMENT
1663 * -AUBO_BAD_STATE
1664 *
1665 * @throws arcs::common_interface::AuboException
1666 *
1667 * @par Python Function Prototype
1668 * setSupvPosCylinder(self: pyaubo_sdk.ForceControl, arg0: List[float],
1669 * arg1: List[float[5]]) -> int
1670 *
1671 * @par Lua Function Prototype
1672 * setSupvPosCylinder(frame: table, cylinder: table) -> nil
1673 *
1674 * \endenglish
1675 */
1676 int setSupvPosCylinder(const std::vector<double> &frame,
1677 const Cylinder &cylinder);
1678
1679 /**
1680 * \chinese
1681 *
1682 * @param frame
1683 * @param sphere
1684 *
1685 * @return 成功返回0;失败返回错误码
1686 * AUBO_BUSY
1687 * AUBO_BAD_STATE
1688 * -AUBO_INVL_ARGUMENT
1689 * -AUBO_BAD_STATE
1690 *
1691 * @throws arcs::common_interface::AuboException
1692 *
1693 * @par Python函数原型
1694 * setSupvPosSphere(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1:
1695 * List[float[3]]) -> int
1696 *
1697 * @par Lua函数原型
1698 * setSupvPosSphere(frame: table, sphere: table) -> nil
1699 *
1700 * \endchinese
1701 * \english
1702 *
1703 * @param frame
1704 * @param sphere
1705 *
1706 * @return Return 0 if succeeded; return error code if failed
1707 * AUBO_BUSY
1708 * AUBO_BAD_STATE
1709 * -AUBO_INVL_ARGUMENT
1710 * -AUBO_BAD_STATE
1711 *
1712 * @throws arcs::common_interface::AuboException
1713 *
1714 * @par Python Function Prototype
1715 * setSupvPosSphere(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1:
1716 * List[float[3]]) -> int
1717 *
1718 * @par Lua Function Prototype
1719 * setSupvPosSphere(frame: table, sphere: table) -> nil
1720 *
1721 * \endenglish
1722 */
1723 int setSupvPosSphere(const std::vector<double> &frame,
1724 const Sphere &sphere);
1725
1726 /**
1727 * \chinese
1728 * setSupvReoriSpeed 用于在力控中设置重新定向速度监督。监督在通过 FCAct 指令激活力控时被激活。
1729 *
1730 * 重新定向速度监督通过定义工作对象坐标系轴周围重新定向速度的最小和最大限制来设置。
1731 * 一旦激活,如果重新定向速度的值过高,监督将停止执行。
1732 *
1733 * 有两种速度监督:FCSupvReoriSpeed 和 FCSupvTCPSpeed,后者在第199页的 FCSupvTCPSpeed 部分有描述。
1734 * 可能需要两种监督,因为:
1735 * - 机器人轴可以在 TCP 静止时高速旋转。
1736 * - 当 TCP 距离旋转轴较远时,轴的微小旋转可能导致 TCP 的高速运动。
1737 *
1738 * @param speed_limit 速度限制
1739 * @param outside 是否在范围外有效
1740 * @param timeout 超时时间
1741 *
1742 * @return 成功返回0;失败返回错误码
1743 * AUBO_BUSY
1744 * AUBO_BAD_STATE
1745 * -AUBO_INVL_ARGUMENT
1746 * -AUBO_BAD_STATE
1747 *
1748 * @throws arcs::common_interface::AuboException
1749 *
1750 * @par Python函数原型
1751 * setSupvReoriSpeed(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1: bool, arg2: float) -> int
1752 *
1753 * @par Lua函数原型
1754 * setSupvReoriSpeed(speed_limit: table, outside: boolean, timeout: number) -> nil
1755 * \endchinese
1756 * \english
1757 * setSupvReoriSpeed is used to set up reorientation speed supervision in Force Control. The supervision is activated when Force Control is activated with the instruction FCAct.
1758 *
1759 * The reorientation speed supervision is set up by defining minimum and maximum limits for the reorientation speed around the axis of the work object coordinate system. Once activated, the supervision will stop the execution if the values of the reorientation speed are too high.
1760 *
1761 * There are two speed supervisions: FCSupvReoriSpeed and FCSupvTCPSpeed, which is described in section FCSupvTCPSpeed on page 199.
1762 * Both supervisions may be required because:
1763 * - A robot axis can rotate with high speed while the TCP is stationary.
1764 * - The TCP can be far from the rotating axis and a small axis rotation may result in a high speed movement of the TCP.
1765 *
1766 * @param speed_limit
1767 * @param outside
1768 * @param timeout
1769 *
1770 * @return Return 0 if succeeded; return error code if failed
1771 * AUBO_BUSY
1772 * AUBO_BAD_STATE
1773 * -AUBO_INVL_ARGUMENT
1774 * -AUBO_BAD_STATE
1775 *
1776 * @throws arcs::common_interface::AuboException
1777 *
1778 * @par Python Function Prototype
1779 * setSupvReoriSpeed(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1: bool, arg2: float) -> int
1780 *
1781 * @par Lua Function Prototype
1782 * setSupvReoriSpeed(speed_limit: table, outside: boolean, timeout: number) -> nil
1783 * \endenglish
1784 */
1785 int setSupvReoriSpeed(const std::vector<double> &speed_limit, bool outside,
1786 double timeout);
1787
1788 /**
1789 * \chinese
1790 * setSupvTcpSpeed 用于在力控中设置TCP速度监督。监督在通过 FCAct 指令激活力控时被激活。
1791 * TCP速度监督通过定义工作对象坐标系各方向上的最小和最大速度限制来设置。
1792 * 一旦激活,如果检测到过高的TCP速度值,监督将停止执行。
1793 *
1794 * 有两种速度监督:FCSupvTCPSpeed 和 FCSupvReoriSpeed,后者在第197页的 FCSupvReoriSpeed 部分有描述。
1795 *
1796 * 可能需要两种监督,因为:
1797 * - 机器人轴可以在TCP静止时高速旋转。
1798 * - 当TCP距离旋转轴较远时,轴的微小旋转可能导致TCP的高速运动。
1799 *
1800 * @param speed_limit 速度限制
1801 * @param outside 是否在范围外有效
1802 * @param timeout 超时时间
1803 *
1804 * @return 成功返回0;失败返回错误码
1805 * AUBO_BUSY
1806 * AUBO_BAD_STATE
1807 * -AUBO_INVL_ARGUMENT
1808 * -AUBO_BAD_STATE
1809 *
1810 * @throws arcs::common_interface::AuboException
1811 *
1812 * @par Python函数原型
1813 * setSupvTcpSpeed(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1: bool, arg2: float) -> int
1814 *
1815 * @par Lua函数原型
1816 * setSupvTcpSpeed(speed_limit: table, outside: boolean, timeout: number) -> nil
1817 * \endchinese
1818 * \english
1819 * setSupvTcpSpeed is used to set up TCP speed supervision in Force Control.
1820 * The supervision is activated when Force Control is activated with the
1821 * instruction FCAct. The TCP speed supervision is set up by defining
1822 * minimum and maximum limits for the TCP speed in the directions of the
1823 * work object coordinate system. Once activated, the supervision will stop
1824 * the execution if too high TCP speed values are detected.
1825 *
1826 * There are two speed supervisions: FCSupvTCPSpeed and FCSupvReoriSpeed,
1827 * which is described in section FCSupvReoriSpeed on page 197.
1828 *
1829 * Both supervisions may be required because:
1830 * - A robot axis can rotate with high speed while the TCP is stationary.
1831 * - The TCP can be far from the rotating axis and a small axis rotation may
1832 * result in a high speed movement of the TCP.
1833 *
1834 * @param speed_limit
1835 * @param outside
1836 * @param timeout
1837 *
1838 * @return Return 0 if succeeded; return error code if failed
1839 * AUBO_BUSY
1840 * AUBO_BAD_STATE
1841 * -AUBO_INVL_ARGUMENT
1842 * -AUBO_BAD_STATE
1843 *
1844 * @throws arcs::common_interface::AuboException
1845 *
1846 * @par Python Function Prototype
1847 * setSupvTcpSpeed(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1: bool, arg2: float) -> int
1848 *
1849 * @par Lua Function Prototype
1850 * setSupvTcpSpeed(speed_limit: table, outside: boolean, timeout: number) -> nil
1851 * \endenglish
1852 */
1853 int setSupvTcpSpeed(const std::vector<double> &speed_limit, bool outside,
1854 double timeout);
1855
1856 // 设置低通滤波器
1857 // --- force frame filter: 过滤测量到的力/力矩
1858 // +++ force loop filter: 力控输出参考速度的滤波器
1859
1860 /**
1861 * \chinese
1862 * 设置低通滤波器
1863 *
1864 * --- force frame filter: 过滤测量到的力/力矩
1865 * +++ force loop filter: 力控输出参考速度的滤波器
1866 *
1867 * @param cutoff_freq 截止频率
1868 *
1869 * @return 成功返回0;失败返回错误码
1870 * AUBO_BUSY
1871 * AUBO_BAD_STATE
1872 * -AUBO_INVL_ARGUMENT
1873 * -AUBO_BAD_STATE
1874 *
1875 * @throws arcs::common_interface::AuboException
1876 *
1877 * @par Python函数原型
1878 * setLpFilter(self: pyaubo_sdk.ForceControl, arg0: List[float]) -> int
1879 *
1880 * @par Lua函数原型
1881 * setLpFilter(cutoff_freq: table) -> nil
1882 * \endchinese
1883 * \english
1884 * Set low-pass filter
1885 *
1886 * --- force frame filter: filter measured force/torque
1887 * +++ force loop filter: filter for force control output reference speed
1888 *
1889 * FCSetLPFilterTune is used to change the response of force loop according to
1890 * the description in Damping and LP-filter on page 103.
1891 *
1892 * @param cutoff_freq Cutoff frequency
1893 *
1894 * @return Return 0 if succeeded; return error code if failed
1895 * AUBO_BUSY
1896 * AUBO_BAD_STATE
1897 * -AUBO_INVL_ARGUMENT
1898 * -AUBO_BAD_STATE
1899 *
1900 * @throws arcs::common_interface::AuboException
1901 *
1902 * @par Python Function Prototype
1903 * setLpFilter(self: pyaubo_sdk.ForceControl, arg0: List[float]) -> int
1904 *
1905 * @par Lua Function Prototype
1906 * setLpFilter(cutoff_freq: table) -> nil
1907 * \endenglish
1908 */
1909 int setLpFilter(const std::vector<double> &cutoff_freq);
1910
1911 /**
1912 * \chinese
1913 * 重置低通滤波器
1914 *
1915 * @return 成功返回0;失败返回错误码
1916 * AUBO_BUSY
1917 * AUBO_BAD_STATE
1918 * -AUBO_BAD_STATE
1919 *
1920 * @throws arcs::common_interface::AuboException
1921 *
1922 * @par Python函数原型
1923 * resetLpFilter(self: pyaubo_sdk.ForceControl) -> int
1924 *
1925 * @par Lua函数原型
1926 * resetLpFilter() -> nil
1927 *
1928 * @par JSON-RPC请求示例
1929 * {"jsonrpc":"2.0","method":"rob1.ForceControl.resetLpFilter","params":[],"id":1}
1930 *
1931 * @par JSON-RPC响应示例
1932 * {"id":1,"jsonrpc":"2.0","result":0}
1933 * \endchinese
1934 * \english
1935 * Reset low-pass filter
1936 *
1937 * @return Return 0 if succeeded; return error code if failed
1938 * AUBO_BUSY
1939 * AUBO_BAD_STATE
1940 * -AUBO_BAD_STATE
1941 *
1942 * @throws arcs::common_interface::AuboException
1943 *
1944 * @par Python Function Prototype
1945 * resetLpFilter(self: pyaubo_sdk.ForceControl) -> int
1946 *
1947 * @par Lua Function Prototype
1948 * resetLpFilter() -> nil
1949 *
1950 * @par JSON-RPC Request example
1951 * {"jsonrpc":"2.0","method":"rob1.ForceControl.resetLpFilter","params":[],"id":1}
1952 *
1953 * @par JSON-RPC Response example
1954 * {"id":1,"jsonrpc":"2.0","result":0}
1955 * \endenglish
1956 */
1958
1959 /**
1960 * \chinese
1961 * speedChangeEnable 用于激活 FC SpeedChange 功能,并设置期望的参考力和恢复行为。
1962 * 当 FC SpeedChange 功能被激活时,机器人速度会根据测量信号与参考值的接近程度自动降低或提高。
1963 *
1964 * @param ref_force 参考力
1965 *
1966 * @return 成功返回0;失败返回错误码
1967 * AUBO_BUSY
1968 * AUBO_BAD_STATE
1969 * -AUBO_INVL_ARGUMENT
1970 * -AUBO_BAD_STATE
1971 *
1972 * @throws arcs::common_interface::AuboException
1973 *
1974 * @par Python函数原型
1975 * speedChangeEnable(self: pyaubo_sdk.ForceControl, arg0: float) -> int
1976 *
1977 * @par Lua函数原型
1978 * speedChangeEnable(ref_force: number) -> nil
1979 * \endchinese
1980 * \english
1981 * The speedChangeEnable is used to activate FC SpeedChange function with desired
1982 * reference and recover behavior. When FC SpeedChange function is active,
1983 * the robot speed will be reduced/increased in order to keep the measured
1984 * signal close to the reference.
1985 *
1986 * @param ref_force
1987 *
1988 * @return Return 0 if succeeded; return error code if failed
1989 * AUBO_BUSY
1990 * AUBO_BAD_STATE
1991 * -AUBO_INVL_ARGUMENT
1992 * -AUBO_BAD_STATE
1993 *
1994 * @throws arcs::common_interface::AuboException
1995 *
1996 * @par Python Function Prototype
1997 * speedChangeEnable(self: pyaubo_sdk.ForceControl, arg0: float) -> int
1998 *
1999 * @par Lua Function Prototype
2000 * speedChangeEnable(ref_force: number) -> nil
2001 * \endenglish
2002 */
2003 int speedChangeEnable(double ref_force);
2004
2005 /**
2006 * \chinese
2007 * 停用 FC SpeedChange 功能。
2008 *
2009 * @return 成功返回0;失败返回错误码
2010 * AUBO_BUSY
2011 * AUBO_BAD_STATE
2012 * -AUBO_BAD_STATE
2013 *
2014 * @throws arcs::common_interface::AuboException
2015 *
2016 * @par Python函数原型
2017 * speedChangeDisable(self: pyaubo_sdk.ForceControl) -> int
2018 *
2019 * @par Lua函数原型
2020 * speedChangeDisable() -> nil
2021 *
2022 * @par JSON-RPC请求示例
2023 * {"jsonrpc":"2.0","method":"rob1.ForceControl.speedChangeDisable","params":[],"id":1}
2024 *
2025 * @par JSON-RPC响应示例
2026 * {"id":1,"jsonrpc":"2.0","result":0}
2027 * \endchinese
2028 * \english
2029 * Deactivate FC SpeedChange function.
2030 *
2031 * @return Return 0 if succeeded; return error code if failed
2032 * AUBO_BUSY
2033 * AUBO_BAD_STATE
2034 * -AUBO_BAD_STATE
2035 *
2036 * @throws arcs::common_interface::AuboException
2037 *
2038 * @par Python Function Prototype
2039 * speedChangeDisable(self: pyaubo_sdk.ForceControl) -> int
2040 *
2041 * @par Lua Function Prototype
2042 * speedChangeDisable() -> nil
2043 *
2044 * @par JSON-RPC Request example
2045 * {"jsonrpc":"2.0","method":"rob1.ForceControl.speedChangeDisable","params":[],"id":1}
2046 *
2047 * @par JSON-RPC Response example
2048 * {"id":1,"jsonrpc":"2.0","result":0}
2049 * \endenglish
2050 */
2052
2053 /**
2054 * \chinese
2055 * speedChangeTune 用于将 FC SpeedChange 系统参数设置为新值。
2056 *
2057 * @param speed_levels 速度级别
2058 * @param speed_ratio_min 最小速度比例
2059 *
2060 * @return 成功返回0;失败返回错误码
2061 * AUBO_BUSY
2062 * AUBO_BAD_STATE
2063 * -AUBO_INVL_ARGUMENT
2064 * -AUBO_BAD_STATE
2065 *
2066 * @throws arcs::common_interface::AuboException
2067 *
2068 * @par Python函数原型
2069 * speedChangeTune(self: pyaubo_sdk.ForceControl, arg0: int, arg1: float) -> int
2070 *
2071 * @par Lua函数原型
2072 * speedChangeTune(speed_levels: number, speed_ratio_min: number) -> nil
2073 * \endchinese
2074 * \english
2075 * speedChangeTune is used to set FC SpeedChange system parameters to a new value.
2076 *
2077 * @param speed_levels
2078 * @param speed_ratio_min
2079 *
2080 * @return Return 0 if succeeded; return error code if failed
2081 * AUBO_BUSY
2082 * AUBO_BAD_STATE
2083 * -AUBO_INVL_ARGUMENT
2084 * -AUBO_BAD_STATE
2085 *
2086 * @throws arcs::common_interface::AuboException
2087 *
2088 * @par Python Function Prototype
2089 * speedChangeTune(self: pyaubo_sdk.ForceControl, arg0: int, arg1: float) -> int
2090 *
2091 * @par Lua Function Prototype
2092 * speedChangeTune(speed_levels: number, speed_ratio_min: number) -> nil
2093 * \endenglish
2094 */
2095 int speedChangeTune(int speed_levels, double speed_ratio_min);
2096
2097 /* Defines how many Newtons are required to make the robot move 1 m/s. The
2098 higher the value, the less responsive the robot gets.
2099 The damping can be tuned (as a percentage of the system parameter values)
2100 by the RAPID instruction FCAct. */
2101 // 设置阻尼系数,阻尼的系统参数需要通过配置文件设置
2102 // [damping_fx, damping_fy, damping_fz, damping_tx, damping_ty, damping_tz]
2103 // A value between min and 10,000,000 Ns/m.
2104 // A value between minimum and 10,000,000 Nms/rad.
2105
2106 /**
2107 * \chinese
2108 * setDamping 用于在力控坐标系中调整阻尼。可调参数包括扭矩x方向到扭矩z方向的阻尼(见第255页)以及力x方向到力z方向的阻尼(见第254页)。
2109 *
2110 * 阻尼可以通过配置文件或FCAct指令设置。不同之处在于本指令可在力控激活时使用。FCSetDampingTune调整的是FCAct指令设置的实际值,而不是配置文件中的值。
2111 *
2112 * @param damping 阻尼参数
2113 * @param ramp_time 斜坡时间
2114 *
2115 * @return 成功返回0;失败返回错误码
2116 * AUBO_BUSY
2117 * AUBO_BAD_STATE
2118 * -AUBO_INVL_ARGUMENT
2119 * -AUBO_BAD_STATE
2120 *
2121 * @throws arcs::common_interface::AuboException
2122 *
2123 * @par Python函数原型
2124 * setDamping(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1: float) -> int
2125 *
2126 * @par Lua函数原型
2127 * setDamping(damping: table, ramp_time: number) -> nil
2128 * \endchinese
2129 * \english
2130 * setDamping is used to tune the damping in the force control coordinate systems. The parameters tuned are those described in Damping in Torque x Direction - Damping in Torque z Direction on page 255 and Damping in Force x Direction - Damping in Force z Direction on page 254.
2131 *
2132 * Damping can be set in the configuration file or by the instruction FCAct. The difference is that this instruction can be used when force control is active. FCSetDampingTune tunes the actual values set by the instruction FCAct, not the value in the configuration file.
2133 *
2134 * @param damping
2135 * @param ramp_time
2136 *
2137 * @return Return 0 if succeeded; return error code if failed
2138 * AUBO_BUSY
2139 * AUBO_BAD_STATE
2140 * -AUBO_INVL_ARGUMENT
2141 * -AUBO_BAD_STATE
2142 *
2143 * @throws arcs::common_interface::AuboException
2144 *
2145 * @par Python Function Prototype
2146 * setDamping(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1: float) -> int
2147 *
2148 * @par Lua Function Prototype
2149 * setDamping(damping: table, ramp_time: number) -> nil
2150 * \endenglish
2151 */
2152 int setDamping(const std::vector<double> &damping, double ramp_time);
2153
2154 /**
2155 * \chinese
2156 * 重置阻尼参数
2157 *
2158 * @return 成功返回0;失败返回错误码
2159 * AUBO_BUSY
2160 * AUBO_BAD_STATE
2161 * -AUBO_BAD_STATE
2162 *
2163 * @throws arcs::common_interface::AuboException
2164 *
2165 * @par Python函数原型
2166 * resetDamping(self: pyaubo_sdk.ForceControl) -> int
2167 *
2168 * @par Lua函数原型
2169 * resetDamping() -> nil
2170 *
2171 * @par JSON-RPC请求示例
2172 * {"jsonrpc":"2.0","method":"rob1.ForceControl.resetDamping","params":[],"id":1}
2173 *
2174 * @par JSON-RPC响应示例
2175 * {"id":1,"jsonrpc":"2.0","result":0}
2176 * \endchinese
2177 * \english
2178 * Reset damping parameters
2179 *
2180 * @return Return 0 if succeeded; return error code if failed
2181 * AUBO_BUSY
2182 * AUBO_BAD_STATE
2183 * -AUBO_BAD_STATE
2184 *
2185 * @throws arcs::common_interface::AuboException
2186 *
2187 * @par Python Function Prototype
2188 * resetDamping(self: pyaubo_sdk.ForceControl) -> int
2189 *
2190 * @par Lua Function Prototype
2191 * resetDamping() -> nil
2192 *
2193 * @par JSON-RPC Request example
2194 * {"jsonrpc":"2.0","method":"rob1.ForceControl.resetDamping","params":[],"id":1}
2195 *
2196 * @par JSON-RPC Response example
2197 * {"id":1,"jsonrpc":"2.0","result":0}
2198 * \endenglish
2199 */
2201
2202 /**
2203 * \chinese
2204 * 启用软浮动功能。
2205 *
2206 * @return 成功返回0;失败返回错误码
2207 * AUBO_BUSY
2208 * AUBO_BAD_STATE
2209 * -AUBO_BAD_STATE
2210 *
2211 * @throws arcs::common_interface::AuboException
2212 *
2213 * @par JSON-RPC请求示例
2214 * {"jsonrpc":"2.0","method":"rob1.ForceControl.softFloatEnable","params":[],"id":1}
2215 *
2216 * @par JSON-RPC响应示例
2217 * {"id":1,"jsonrpc":"2.0","result":0}
2218 * \endchinese
2219 * \english
2220 * Enable soft float function.
2221 *
2222 * @return Return 0 if succeeded; return error code if failed
2223 * AUBO_BUSY
2224 * AUBO_BAD_STATE
2225 * -AUBO_BAD_STATE
2226 *
2227 * @throws arcs::common_interface::AuboException
2228 *
2229 * @par JSON-RPC Request example
2230 * {"jsonrpc":"2.0","method":"rob1.ForceControl.softFloatEnable","params":[],"id":1}
2231 *
2232 * @par JSON-RPC Response example
2233 * {"id":1,"jsonrpc":"2.0","result":0}
2234 * \endenglish
2235 */
2237
2238 /**
2239 * \chinese
2240 * 停用软浮动功能。
2241 *
2242 * @return 成功返回0;失败返回错误码
2243 * AUBO_BUSY
2244 * AUBO_BAD_STATE
2245 * -AUBO_BAD_STATE
2246 *
2247 * @throws arcs::common_interface::AuboException
2248 *
2249 * @par JSON-RPC请求示例
2250 * {"jsonrpc":"2.0","method":"rob1.ForceControl.softFloatDisable","params":[],"id":1}
2251 *
2252 * @par JSON-RPC响应示例
2253 * {"id":1,"jsonrpc":"2.0","result":-1}
2254 * \endchinese
2255 * \english
2256 * Disable soft float function.
2257 *
2258 * @return Return 0 if succeeded; return error code if failed
2259 * AUBO_BUSY
2260 * AUBO_BAD_STATE
2261 * -AUBO_BAD_STATE
2262 *
2263 * @throws arcs::common_interface::AuboException
2264 *
2265 * @par JSON-RPC Request example
2266 * {"jsonrpc":"2.0","method":"rob1.ForceControl.softFloatDisable","params":[],"id":1}
2267 *
2268 * @par JSON-RPC Response example
2269 * {"id":1,"jsonrpc":"2.0","result":-1}
2270 * \endenglish
2271 */
2273
2274 /**
2275 * \chinese
2276 * 返回是否开启了软浮动
2277 *
2278 * @return
2279 *
2280 * @throws arcs::common_interface::AuboException
2281 *
2282 * @par JSON-RPC请求示例
2283 * {"jsonrpc":"2.0","method":"rob1.ForceControl.isSoftFloatEnabled","params":[],"id":1}
2284 *
2285 * @par JSON-RPC响应示例
2286 * {"id":1,"jsonrpc":"2.0","result":false}
2287 * \endchinese
2288 * \english
2289 * Returns whether soft float is enabled
2290 *
2291 * @return
2292 *
2293 * @throws arcs::common_interface::AuboException
2294 *
2295 * @par JSON-RPC Request example
2296 * {"jsonrpc":"2.0","method":"rob1.ForceControl.isSoftFloatEnabled","params":[],"id":1}
2297 *
2298 * @par JSON-RPC Response example
2299 * {"id":1,"jsonrpc":"2.0","result":false}
2300 * \endenglish
2301 */
2303
2304 /**
2305 * \chinese
2306 * 设置软浮动参数
2307 *
2308 * @param joint_softfloat 是否在关节空间启用软浮动
2309 * @param select 选择哪些自由度启用软浮动
2310 * @param stiff_percent 刚度百分比
2311 * @param stiff_damp_ratio 刚度阻尼比
2312 * @param force_threshold 力阈值
2313 * @param force_limit 力限制
2314 * @return 返回0表示成功,其他为错误码
2315 * \endchinese
2316 * \english
2317 * Set soft float parameters
2318 *
2319 * @param joint_softfloat Whether to enable soft float in joint space
2320 * @param select Select which degrees of freedom to enable soft float
2321 * @param stiff_percent Stiffness percentage
2322 * @param stiff_damp_ratio Stiffness damping ratio
2323 * @param force_threshold Force threshold
2324 * @param force_limit Force limit
2325 * @return Return 0 if succeeded, otherwise error code
2326 * \endenglish
2327 */
2328 int setSoftFloatParams(bool joint_space, const std::vector<bool> &select,
2329 const std::vector<double> &stiff_percent,
2330 const std::vector<double> &stiff_damp_ratio,
2331 const std::vector<double> &force_threshold,
2332 const std::vector<double> &force_limit);
2333
2334 /**
2335 * \chinese
2336 * 检测工具和外部物体的接触
2337 *
2338 * @param direction
2339 * 预期的接触方向,如果所有的元素为0,表示检测所有方向的接触
2340 * @return
2341 * 返回从当前点回退到碰撞开始点的周期步数,如果返回值为0,表示没有接触
2342 * \endchinese
2343 * \english
2344 * Detect contact between the tool and external objects
2345 *
2346 * @param direction
2347 * Expected contact direction. If all elements are 0, detect contact in all directions.
2348 * @return
2349 * Returns the number of cycle steps back from the current point to the collision start point. If the return value is 0, no contact is detected.
2350 * \endenglish
2351 */
2352 int toolContact(const std::vector<bool> &direction);
2353
2354 /**
2355 * \chinese
2356 * @brief 获取历史关节角度
2357 *
2358 * 根据给定的周期步数,从关节状态历史中回退指定数量的周期,获取当时的关节角度数据。
2359 *
2360 * @param steps
2361 * 需要回退的周期数(单位:控制周期数),值越大表示获取越早的历史数据
2362 * @return std::vector<double>
2363 * 对应时间点的各关节角度(单位:弧度)
2364 * \endchinese
2365 * \english
2366 * @brief Get historical joint positions
2367 *
2368 * According to the given number of cycle steps, go back the specified number of cycles from the joint state history to obtain the joint position data at that time.
2369 *
2370 * @param steps
2371 * Number of cycles to go back (unit: control cycles), the larger the value, the earlier the historical data is obtained
2372 * @return std::vector<double>
2373 * Joint positions (unit: radians) at the corresponding time point
2374 * \endenglish
2375 */
2376 std::vector<double> getActualJointPositionsHistory(int steps);
2377
2378protected:
2379 void *d_{ nullptr };
2380};
2381using ForceControlPtr = std::shared_ptr<ForceControl>;
2382} // namespace common_interface
2383} // namespace arcs
2384
2385#endif // AUBO_SDK_FORCE_CONTROL_INTERFACE_H
int setSoftFloatParams(bool joint_space, const std::vector< bool > &select, const std::vector< double > &stiff_percent, const std::vector< double > &stiff_damp_ratio, const std::vector< double > &force_threshold, const std::vector< double > &force_limit)
设置软浮动参数
int speedChangeEnable(double ref_force)
speedChangeEnable 用于激活 FC SpeedChange 功能,并设置期望的参考力和恢复行为。 当 FC SpeedChange 功能被激活时,机器人速度会根据测量信号与参考值的接近程...
int setDynamicModel1(const std::vector< double > &env_stiff, const std::vector< double > &damp_scale, const std::vector< double > &stiff_scale)
设置力控动力学模型
int setSupvReoriSpeed(const std::vector< double > &speed_limit, bool outside, double timeout)
setSupvReoriSpeed 用于在力控中设置重新定向速度监督。监督在通过 FCAct 指令激活力控时被激活。
int setDynamicModelSearch(const std::vector< double > &damp_scale, const std::vector< double > &stiff_scale)
设置力控搜孔场景下的动力学模型
int fcDisable()
失能力控。 fcDisable 被用于失能力控。 在成功失能力控之后,机器人将回到位置控制模式。
int setCondDistance(double distance, double timeout)
力控终止条件-距离
bool isSoftFloatEnabled()
返回是否开启了软浮动
int setSupvTcpSpeed(const std::vector< double > &speed_limit, bool outside, double timeout)
setSupvTcpSpeed 用于在力控中设置TCP速度监督。监督在通过 FCAct 指令激活力控时被激活。 TCP速度监督通过定义工作对象坐标系各方向上的最小和最大速度限制来设置。 一旦激活,如果检...
int setCondActive()
激活力控终止条件
bool isCondFullfiled()
力控终止条件是否已经满足
int setDynamicModelInsert(const std::vector< double > &damp_scale, const std::vector< double > &stiff_scale)
设置力控插/拔孔场景下的动力学模型
int setCondCylinder(const std::vector< double > &axis, double radius, bool outside, double timeout)
指定力控有效圆柱体,提供中心轴和圆柱半径,可以指定圆柱内部还是外部
int setDamping(const std::vector< double > &damping, double ramp_time)
setDamping 用于在力控坐标系中调整阻尼。可调参数包括扭矩x方向到扭矩z方向的阻尼(见第255页)以及力x方向到力z方向的阻尼(见第254页)。
int resetLpFilter()
重置低通滤波器
int setCondAdvanced(const std::string &type, const std::vector< double > &args, double timeout)
高级力控终止条件
int setLpFilter(const std::vector< double > &cutoff_freq)
设置低通滤波器
std::vector< double > getActualJointPositionsHistory(int steps)
int resetDamping()
重置阻尼参数
int setCondTcpSpeed(const std::vector< double > &min, const std::vector< double > &max, bool outside, double timeout)
设置TCP速度的终止条件。该条件可通过调用FCCondWaitWhile指令激活, 在指定条件为真时,程序将等待并保持执行。这样可以使参考力、力矩和运动继续, 直到速度超出指定范围。
int setCondForce(const std::vector< double > &min, const std::vector< double > &max, bool outside, double timeout)
设置力控终止条件:力,当测量的力在设置的范围之内,力控算法将保持运行,直到设置的条件不满足,力控将退出
int setDynamicModelContact(const std::vector< double > &env_stiff, const std::vector< double > &damp_scale, const std::vector< double > &stiff_scale)
设置力控接触场景下的动力学模型
int setCondSphere(const std::vector< double > &center, double radius, bool outside, double timeout)
指定力控有效球体,提供球心和半径,可以指定球体内部还是外部
int setCondPlane(const std::vector< double > &plane, double timeout)
指定力控有效平面,x-y平面,z方向有效
bool isFcEnabled()
判断力控是否被使能
int setSupvPosBox(const std::vector< double > &frame, const Box &box)
setSupvPosBox 用于在力控中设置位置监督。监督在通过 FCAct 指令激活力控时被激活。 位置监督通过为TCP定义空间体积来设置。一旦激活,如果TCP超出该体积,监督将停止执行。
int setSupvPosSphere(const std::vector< double > &frame, const Sphere &sphere)
int setSupvForce(const std::vector< double > &min, const std::vector< double > &max)
setSupvForce 用于在力控中设置力监督。监督在通过 FCAct 指令激活力控时被激活。
std::vector< double > getFcSensorLimits()
获取最大力限制
int speedChangeDisable()
停用 FC SpeedChange 功能。
int fcSetSensorThresholds(const std::vector< double > &thresholds)
设置力控阈值
int setSupvPosCylinder(const std::vector< double > &frame, const Cylinder &cylinder)
int setDynamicModel(const std::vector< double > &m, const std::vector< double > &d, const std::vector< double > &k)
设置力控动力学模型
int fcSetSensorLimits(const std::vector< double > &limits)
设置力控最大受力限制
DynamicsModel getDynamicModel()
获取力控动力学模型
int setTargetForce(const std::vector< double > &feature, const std::vector< bool > &compliance, const std::vector< double > &wrench, const std::vector< double > &limits, TaskFrameType type=TaskFrameType::FRAME_FORCE)
设置力控参考(目标)值
DynamicsModel fcCalDynamicModel(const std::vector< double > &env_stiff, const std::vector< double > &damp_scale, const std::vector< double > &stiff_scale)
计算力控动力学模型
int fcEnable()
使能力控。 fcEnable 被用于使能力控。 在力控被使能的同时, fcEnable 用于定义力控的坐标系,并调整力和力矩的阻尼。 如果在 fcEnable 中未指定坐标系, 则会创建一个默认的力控制...
int setSupvOrient(const std::vector< double > &frame, double max_angle, double max_rot, bool outside)
setSupvOrient 用于设置工具姿态的监督条件。 当通过 FCAct 指令激活力控时,监督条件被激活。
std::vector< double > getFcSensorThresholds()
获取力控阈值
int speedChangeTune(int speed_levels, double speed_ratio_min)
speedChangeTune 用于将 FC SpeedChange 系统参数设置为新值。
int softFloatEnable()
启用软浮动功能。
int toolContact(const std::vector< bool > &direction)
检测工具和外部物体的接触
int setCondOrient(const std::vector< double > &frame, double max_angle, double max_rot, bool outside, double timeout)
设置力控终止条件:姿态,当测量的姿态在设置的范围之内,力控算法将保持运行,直到设置的条件不满足,力控将退出.
int softFloatDisable()
停用软浮动功能。
std::tuple< std::vector< double >, std::vector< double >, std::vector< double > > DynamicsModel
Definition type_def.h:744
std::vector< double > Box
Definition type_def.h:752
std::vector< double > Sphere
Definition type_def.h:764
std::shared_ptr< ForceControl > ForceControlPtr
std::vector< double > Cylinder
Definition type_def.h:759
数据类型的定义