ARCS SDK API  0.25.0
载入中...
搜索中...
未找到
force_control.h
浏览该文件的文档.
1/** @file force_control.h
2 * @brief 力控接口
3 *
4 * 力控的限制
5 * When the robot is force controlled, the following functionality is not
6 * accessible:
7 *
8 * • Collision Detection (option 613-1) \n
9 * • SoftMove (option 885-1) \n
10 * • Tracking functionality like Conveyor Tracking (option 606-1), Optical
11 * Tracking (6601) and Weld Guide (815-2) \n
12 * • Sensor Synchronization or Analog Synchronization \n
13 * • World Zones (option 608-1) \n
14 * • Independent Axes (option 610-1) \n
15 * • Path Offset (option 612-1) \n
16 * • Arc options \n
17 * • PickMaster options \n
18 * • Joint soft servo (instruction SoftAct) \n
19 * • Force Control cannot be activated when the robot is running in MultiMove
20 * Coordinated mode (option 604-1). \n
21 * • If Force Control is used together with SafeMove (option 810-2) or
22 * Electronic Position Switches (option 810-1), the function Operational
23 * Safety Range must be used. See the respective manual for these options. \n
24 * • RAPID instructions such as FCAct, FCDeact, FCConditionWaitWhile and
25 * FCRefStop can only be called from normal level in a motion task.
26 *
27 * 应用:抛光、打磨、清洁 \n
28 * FC Pressure \n
29 * 设置轨迹坐标系的z方向为力控轴,spring设置为0 \n
30 * 在还没接触前设置输出力为0,spring设置为固定值(根据vel确定) \n
31 * 离开接触面:设置输出力为0,spring设置为固定值 \n
32 *
33 * 活塞(Piston)装配 \n
34 * Forward clutch hub \n
35 * 设置力控终止模式
36 *
37 * 基于末端力传感器的拖动示教 \n
38 * spring = 0; force_ref = 0; 参考轨迹点任意
39 */
40#ifndef AUBO_SDK_FORCE_CONTROL_INTERFACE_H
41#define AUBO_SDK_FORCE_CONTROL_INTERFACE_H
42
43#include <vector>
44#include <thread>
45
46#include <aubo/global_config.h>
47#include <aubo/type_def.h>
48
49namespace arcs {
50namespace common_interface {
51
52/**
53 * 力控接口抽象类
54 */
55class ARCS_ABI_EXPORT ForceControl
56{
57public:
59 virtual ~ForceControl();
60
61 /**
62 * Start force control
63 *
64 * fcEnable is used to enable Force Control. At the same time as Force
65 * Control is enabled, fcEnable is used to define the coordinate system
66 * for Force Control, and tune the force and torque damping. If a coordinate
67 * system is not specified in fcEnable a default force control coordinate
68 * system is created with the same orientation as the work object coordinate
69 * system. All Force Control supervisions are activated by fcEnable.
70 *
71 * 使能力控。
72 * fcEnable 被用于使能力控。 在力控被使能的同时,
73 * fcEnable 用于定义力控的坐标系,并调整力和力矩的阻尼。
74 * 如果在 fcEnable 中未指定坐标系,
75 * 则会创建一个默认的力控制坐标系,其方向与工作对象坐标系相同。
76 * 所有力控制监管功能都被 fcEnable 激活。
77 *
78 * @return 成功返回0;失败返回错误码
79 * AUBO_BUSY
80 * AUBO_BAD_STATE
81 * -AUBO_BAD_STATE
82 *
83 * @throws arcs::common_interface::AuboException
84 *
85 * @par Python函数原型
86 * fcEnable(self: pyaubo_sdk.ForceControl) -> int
87 *
88 * @par Lua函数原型
89 * fcEnable() -> nil
90 *
91 * @par JSON-RPC请求示例
92 * {"jsonrpc":"2.0","method":"rob1.ForceControl.fcEnable","params":[],"id":1}
93 *
94 * @par JSON-RPC响应示例
95 * {"id":1,"jsonrpc":"2.0","result":0}
96 *
97 */
98 int fcEnable();
99
100 /**
101 * End force control
102 *
103 * fcDisable is used to disable Force Control. After a successful
104 * deactivation the robot is back in position control.
105 *
106 * 失能力控。
107 * fcDisable 被用于失能力控。 在成功失能力控之后,机器人将回到位置控制模式。
108 *
109 * @return 成功返回0;失败返回错误码
110 * AUBO_BUSY
111 * AUBO_BAD_STATE
112 * -AUBO_BAD_STATE
113 *
114 * @throws arcs::common_interface::AuboException
115 *
116 * @par Python函数原型
117 * fcDisable(self: pyaubo_sdk.ForceControl) -> int
118 *
119 * @par Lua函数原型
120 * fcDisable() -> nil
121 *
122 * @par JSON-RPC请求示例
123 * {"jsonrpc":"2.0","method":"rob1.ForceControl.fcDisable","params":[],"id":1}
124 *
125 * @par JSON-RPC响应示例
126 * {"id":1,"jsonrpc":"2.0","result":0}
127 *
128 */
130
131 /**
132 * 判断力控是否被使能
133 *
134 * @return 使能返回true,失能返回false
135 *
136 * @throws arcs::common_interface::AuboException
137 *
138 * @par Python函数原型
139 * isFcEnabled(self: pyaubo_sdk.ForceControl) -> bool
140 *
141 * @par Lua函数原型
142 * isFcEnabled() -> boolean
143 *
144 * @par JSON-RPC请求示例
145 * {"jsonrpc":"2.0","method":"rob1.ForceControl.isFcEnabled","params":[],"id":1}
146 *
147 * @par JSON-RPC响应示例
148 * {"id":1,"jsonrpc":"2.0","result":false}
149 *
150 */
152
153 /**
154 * 设置力控参考(目标)值
155 *
156 * @param feature: 参考几何特征,用于生成力控参考坐标系
157 * @param compliance: 柔性轴(方向)选择
158 * @param wrench: 目标力/力矩
159 * @param limits: 速度限制
160 * @param type: 力控参考坐标系类型
161 *
162 * @return 成功返回0;失败返回错误码
163 * AUBO_BUSY
164 * AUBO_BAD_STATE
165 * -AUBO_INVL_ARGUMENT
166 * -AUBO_BAD_STATE
167 *
168 * @throws arcs::common_interface::AuboException
169 *
170 * @par Python函数原型
171 * setTargetForce(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1:
172 * List[bool], arg2: List[float], arg3: List[float], arg4:
173 * arcs::common_interface::TaskFrameType) -> int
174 *
175 * @par Lua函数原型
176 * setTargetForce(feature: table, compliance: table, wrench: table, limits:
177 * table, type: number) -> nil
178 *
179 */
180 int setTargetForce(const std::vector<double> &feature,
181 const std::vector<bool> &compliance,
182 const std::vector<double> &wrench,
183 const std::vector<double> &limits,
184 TaskFrameType type = TaskFrameType::FRAME_FORCE);
185
186 /**
187 * 设置力控搜孔场景下的动力学模型
188 *
189 * @param damp_scale: 表征阻尼水平的参数,取值范围[0, 1],默认为0.5
190 * @param stiff_scale: 表征软硬程度的参数,取值范围[0, 1],默认为0.5
191 *
192 * @return 成功返回0;失败返回错误码
193 * AUBO_BUSY
194 * AUBO_BAD_STATE
195 * -AUBO_INVL_ARGUMENT
196 * -AUBO_BAD_STATE
197 *
198 * @throws arcs::common_interface::AuboException
199 *
200 * @par Python函数原型
201 * setDynamicModelSearch(self: pyaubo_sdk.ForceControl, arg0: List[float],
202 * arg1: List[float]) -> int
203 *
204 * @par Lua函数原型
205 * setDynamicModelSearch(damp_scale: table, stiff_scale: table) -> nil
206 *
207 */
208 int setDynamicModelSearch(const std::vector<double> &damp_scale,
209 const std::vector<double> &stiff_scale);
210
211 /**
212 * 设置力控插/拔孔场景下的动力学模型
213 *
214 * @param damp_scale: 表征阻尼水平的参数,取值范围[0, 1],默认为0.5
215 * @param stiff_scale: 表征软硬程度的参数,取值范围[0, 1],默认为0.5
216 *
217 * @return 成功返回0;失败返回错误码
218 * AUBO_BUSY
219 * AUBO_BAD_STATE
220 * -AUBO_INVL_ARGUMENT
221 * -AUBO_BAD_STATE
222 *
223 * @throws arcs::common_interface::AuboException
224 *
225 * @par Python函数原型
226 * setDynamicModelInsert(self: pyaubo_sdk.ForceControl, arg0: List[float],
227 * arg1: List[float]) -> int
228 *
229 * @par Lua函数原型
230 * setDynamicModelInsert(damp_scale: table, stiff_scale: table) -> nil
231 *
232 */
233 int setDynamicModelInsert(const std::vector<double> &damp_scale,
234 const std::vector<double> &stiff_scale);
235
236 /**
237 * 设置力控动力学模型
238 *
239 * @param m
240 * @param d
241 * @param k
242 *
243 * @return 成功返回0;失败返回错误码
244 * AUBO_BUSY
245 * AUBO_BAD_STATE
246 * -AUBO_INVL_ARGUMENT
247 * -AUBO_BAD_STATE
248 *
249 * @throws arcs::common_interface::AuboException
250 *
251 * @par Python函数原型
252 * setDynamicModel(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1:
253 * List[float], arg2: List[float]) -> int
254 *
255 * @par Lua函数原型
256 * setDynamicModel(m: table, d: table, k: table) -> nil
257 *
258 */
259 int setDynamicModel(const std::vector<double> &m,
260 const std::vector<double> &d,
261 const std::vector<double> &k);
262
263 /**
264 * 设置力控阈值
265 *
266 * @param thresholds: 力控阈值
267 *
268 * @return 成功返回0;失败返回错误码
269 * AUBO_BUSY
270 * AUBO_BAD_STATE
271 * -AUBO_INVL_ARGUMENT
272 * -AUBO_BAD_STATE
273 *
274 * @throws arcs::common_interface::AuboException
275 *
276 * @par Python函数原型
277 * fcSetSensorThresholds(self: pyaubo_sdk.ForceControl, arg0:
278 * List[float]) -> int
279 *
280 * @par Lua函数原型
281 * fcSetSensorThresholds(feature: table, compliance: table, wrench:
282 * table, limits: table, type: number) -> nil
283 *
284 */
285 int fcSetSensorThresholds(const std::vector<double> &thresholds);
286
287 /**
288 * 设置力控最大受力限制
289 *
290 * @param limits: 力限制
291 *
292 * @return 成功返回0;失败返回错误码
293 * AUBO_BUSY
294 * AUBO_BAD_STATE
295 * -AUBO_INVL_ARGUMENT
296 * -AUBO_BAD_STATE
297 *
298 * @throws arcs::common_interface::AuboException
299 *
300 * @par Python函数原型
301 * fcSetSensorLimits(self: pyaubo_sdk.ForceControl, arg0:
302 * List[float]) -> int
303 *
304 * @par Lua函数原型
305 * fcSetSensorLimits(feature: table, compliance: table, wrench:
306 * table, limits: table, type: number) -> nil
307 *
308 */
309 int fcSetSensorLimits(const std::vector<double> &limits);
310
311 /**
312 * 获取力控阈值
313 *
314 * @return 力控最小力阈值
315 *
316 * @throws arcs::common_interface::AuboException
317 *
318 * @par Python函数原型
319 * getFcSensorThresholds(self: pyaubo_sdk.ForceControl) -> list
320 *
321 * @par Lua函数原型
322 * getFcSensorThresholds() -> table
323 *
324 */
325 std::vector<double> getFcSensorThresholds();
326
327 /**
328 * 获取最大力限制
329 *
330 * @return 力控最大力限制
331 *
332 * @throws arcs::common_interface::AuboException
333 *
334 * @par Python函数原型
335 * getFcSensorLimits(self: pyaubo_sdk.ForceControl) -> list
336 *
337 * @par Lua函数原型
338 * getFcSensorLimits() -> table
339 *
340 */
341 std::vector<double> getFcSensorLimits();
342
343 /**
344 * 获取力控动力学模型
345 *
346 * @return 力控动力学模型
347 *
348 * @throws arcs::common_interface::AuboException
349 *
350 * @par Python函数原型
351 * getDynamicModel(self: pyaubo_sdk.ForceControl) -> Tuple[List[float],
352 * List[float], List[float]]
353 *
354 * @par Lua函数原型
355 * getDynamicModel() -> table
356 *
357 * @par JSON-RPC请求示例
358 * {"jsonrpc":"2.0","method":"rob1.ForceControl.getDynamicModel","params":[],"id":1}
359 *
360 * @par JSON-RPC响应示例
361 * {"id":1,"jsonrpc":"2.0","result":[[],[20.0,20.0,20.0,5.0,5.0,5.0],[]]}
362 *
363 */
365
366 /**
367 * 设置力控终止条件:力,当测量的力在设置的范围之内,力控算法将保持运行,直到设置的条件不满足,力控将退出
368 *
369 * FCCondForce is used to set up an end condition based on measured force.
370 * The condition is lateractivated by calling the instruction
371 * FCCondWaitWhile, which will wait and hold the program execution while the
372 * specified condition is true. This allows the reference force, torque and
373 * movement to continue until the force is outside the specified limits.
374 *
375 * A force condition is set up by defining minimum and maximum limits for
376 * the force in the directions of the force control coordinate system. Once
377 * activated with FCCondWaitWhile, the program execution will continue to
378 * wait while the measured force is within its specified limits.
379 *
380 * It is possible to specify that the condition is fulfilled when the force
381 * is outside the specified limits instead. This is done by using the switch
382 * argument Outside. The condition on force is specified in the force
383 * control coordinate system. This coordinate system is setup by the user in
384 * the instruction FCAct.
385 *
386 * @param min 各方向最小的力/力矩
387 * @param max 各方向最大的力/力矩
388 * @param outside false 在设置条件的范围之内有效
389 * true 在设置条件的范围之外有效
390 * @param timeout
391 * 时间限制,单位s(秒),从开始力控到达该时间时,不管是否满足力控终止条件,都会终止力控
392 *
393 * @return 成功返回0;失败返回错误码
394 * AUBO_BUSY
395 * AUBO_BAD_STATE
396 * -AUBO_INVL_ARGUMENT
397 * -AUBO_BAD_STATE
398 *
399 * @throws arcs::common_interface::AuboException
400 *
401 * @par Python函数原型
402 * setCondForce(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1:
403 * List[float], arg2: bool, arg3: float) -> int
404 *
405 * @par Lua函数原型
406 * setCondForce(min: table, max: table, outside: boolean, timeout: number)
407 * -> nil
408 *
409 */
410 int setCondForce(const std::vector<double> &min,
411 const std::vector<double> &max, bool outside,
412 double timeout);
413
414 /**
415 * FCCondOrient is used to set up an end condition for the tool orientation.
416 * The condition is lateractivated by calling the instruction
417 * FCCondWaitWhile, which will wait and hold the program execution while the
418 * specified condition is true. This allows the reference force, torque and
419 * movement to continue until the orientation is outside the specified
420 * limits.
421 *
422 * An orientation condition is set up by defining a maximum angle and a
423 * maximum rotation from a reference orientation. The reference orientation
424 * is either defined by the current z direction of the tool, or by
425 * specifying an orientation in relation to the z direction of the work
426 * object.
427 *
428 * Once activated, the tool orientation must be within the limits (or
429 * outside, if the argument Outside is used).
430 *
431 * @param frame
432 * @param max_angle
433 * @param max_rot
434 * @param outside
435 * @param timeout
436 *
437 * @return 成功返回0;失败返回错误码
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函数原型
446 * setCondOrient(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1:
447 * float, arg2: float, arg3: bool, arg4: float) -> int
448 *
449 * @par Lua函数原型
450 * setCondOrient(frame: table, max_angle: number, max_rot: number, outside:
451 * boolean, timeout: number) -> nil
452 *
453 */
454 int setCondOrient(const std::vector<double> &frame, double max_angle,
455 double max_rot, bool outside, double timeout);
456
457 /**
458 * 指定力控有效平面,x-y平面,z方向有效
459 *
460 * FCCondPos is used to set up an end condition for the TCP position. The
461 * condition is later activated by calling the instruction FCCondWaitWhile,
462 * which will wait and hold the program execution while the specified
463 * condition is true. This allows the reference force, torque and movement
464 * to continue until the specified position is outside the specified limits.
465 *
466 * A position condition is set up by defining a volume in space for the TCP
467 * position. Once activated the measured TCP position has to be within the
468 * specified volume (or outside, if the argument Outside is used).
469 *
470 * @param plane={A,B,C,D}
471 * 平面表示方法 Ax +By +Cz + D = 0
472 * 其中,n = (A, B, C)是平面的法向量,
473 * D 是将平面平移到坐标原点所需距离(所以D=0时,平面过原点)
474 * @param timeout
475 *
476 * @return 成功返回0;失败返回错误码
477 * AUBO_BUSY
478 * AUBO_BAD_STATE
479 * -AUBO_INVL_ARGUMENT
480 * -AUBO_BAD_STATE
481 *
482 * @throws arcs::common_interface::AuboException
483 *
484 * @par Python函数原型
485 * setCondPlane(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1:
486 * float) -> int
487 *
488 * @par Lua函数原型
489 * setCondPlane(plane: table, timeout: number) -> nil
490 *
491 */
492 int setCondPlane(const std::vector<double> &plane, double timeout);
493
494 /**
495 * 指定力控有效圆柱体,提供中心轴和圆柱半径,可以指定圆柱内部还是外部
496 *
497 * @param axis
498 * @param radius
499 * @param outside
500 * @param timeout
501 *
502 * @return 成功返回0;失败返回错误码
503 * AUBO_BUSY
504 * AUBO_BAD_STATE
505 * -AUBO_INVL_ARGUMENT
506 * -AUBO_BAD_STATE
507 *
508 * @throws arcs::common_interface::AuboException
509 *
510 * @par Python函数原型
511 * setCondCylinder(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1:
512 * float, arg2: bool, arg3: float) -> int
513 *
514 * @par Lua函数原型
515 * setCondCylinder(axis: table, radius: number, outside: boolean, timeout:
516 * number) -> nil
517 *
518 */
519 int setCondCylinder(const std::vector<double> &axis, double radius,
520 bool outside, double timeout);
521
522 /**
523 * 指定力控有效球体,提供球心和半径,可以指定球体内部还是外部
524 *
525 * @param center
526 * @param radius
527 * @param outside
528 * @param timeout
529 *
530 * @return 成功返回0;失败返回错误码
531 * AUBO_BUSY
532 * AUBO_BAD_STATE
533 * -AUBO_INVL_ARGUMENT
534 * -AUBO_BAD_STATE
535 *
536 * @throws arcs::common_interface::AuboException
537 *
538 * @par Python函数原型
539 * setCondSphere(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1:
540 * float, arg2: bool, arg3: float) -> int
541 *
542 * @par Lua函数原型
543 * setCondSphere(center: table, radius: number, outside: boolean, timeout:
544 * number) -> nil
545 *
546 */
547 int setCondSphere(const std::vector<double> &center, double radius,
548 bool outside, double timeout);
549
550 /**
551 * FCCondTCPSpeed is used to setup an end condition for the TCP speed. The
552 * condition is lateractivated by calling the instruction FCCondWaitWhile,
553 * which will wait and hold the program execution while the specified
554 * condition is true. This allows the reference force, torque and movement
555 * to continue until the speed is outside the specified limits.
556 *
557 * A TCP speed condition is setup up by defining minimum and maximum limits
558 * for the TCP speed in all directions of the work object. Once activated
559 * with FCCondWaitWhile, the program execution will continue to wait while
560 * the measured speed is within its specified limits.
561 *
562 * It is possible to specify that the condition is fulfilled when the speed
563 * is outside the specified limits instead. This is the done by using the
564 * switch argument Outside. The condition on TCP speed is specified in the
565 * work object coordinate system.
566 *
567 * @param min
568 * @param max
569 * @param outside
570 * @param timeout
571 *
572 * @return 成功返回0;失败返回错误码
573 * AUBO_BUSY
574 * AUBO_BAD_STATE
575 * -AUBO_INVL_ARGUMENT
576 * -AUBO_BAD_STATE
577 *
578 * @throws arcs::common_interface::AuboException
579 *
580 * @par Python函数原型
581 * setCondTcpSpeed(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1:
582 * List[float], arg2: bool, arg3: float) -> int
583 *
584 * @par Lua函数原型
585 * setCondTcpSpeed(min: table, max: table, outside: boolean, timeout:
586 * number) -> nil
587 *
588 */
589 int setCondTcpSpeed(const std::vector<double> &min,
590 const std::vector<double> &max, bool outside,
591 double timeout);
592
593 /**
594 * 力控终止条件-距离
595 *
596 * @param distance
597 * @param timeout
598 *
599 * @return 成功返回0;失败返回错误码
600 * AUBO_BUSY
601 * AUBO_BAD_STATE
602 * -AUBO_INVL_ARGUMENT
603 * -AUBO_BAD_STATE
604 *
605 * @throws arcs::common_interface::AuboException
606 *
607 */
608 int setCondDistance(double distance, double timeout);
609
610 /**
611 * 高级力控终止条件
612 *
613 * @param type
614 * @param args
615 * @param timeout
616 *
617 * @return 成功返回0;失败返回错误码
618 * AUBO_BUSY
619 * AUBO_BAD_STATE
620 * -AUBO_INVL_ARGUMENT
621 * -AUBO_BAD_STATE
622 *
623 * @throws arcs::common_interface::AuboException
624 *
625 */
626 int setCondAdvanced(const std::string &type,
627 const std::vector<double> &args, double timeout);
628
629 /**
630 * 激活力控终止条件
631 *
632 * @return 成功返回0;失败返回错误码
633 * AUBO_BUSY
634 * AUBO_BAD_STATE
635 * -AUBO_BAD_STATE
636 *
637 * @throws arcs::common_interface::AuboException
638 *
639 * @par Python函数原型
640 * setCondActive(self: pyaubo_sdk.ForceControl) -> int
641 *
642 * @par Lua函数原型
643 * setCondActive() -> nil
644 *
645 * @par JSON-RPC请求示例
646 * {"jsonrpc":"2.0","method":"rob1.ForceControl.setCondActive","params":[],"id":1}
647 *
648 * @par JSON-RPC响应示例
649 * {"id":1,"jsonrpc":"2.0","result":0}
650 *
651 */
653
654 /**
655 * 力控终止条件是否已经满足
656 *
657 * @return
658 *
659 * @throws arcs::common_interface::AuboException
660 *
661 * @par Python函数原型
662 * isCondFullfiled(self: pyaubo_sdk.ForceControl) -> bool
663 *
664 * @par Lua函数原型
665 * isCondFullfiled() -> boolean
666 *
667 * @par JSON-RPC请求示例
668 * {"jsonrpc":"2.0","method":"rob1.ForceControl.isCondFullfiled","params":[],"id":1}
669 *
670 * @par JSON-RPC响应示例
671 * {"id":1,"jsonrpc":"2.0","result":false}
672 *
673 */
675
676 /**
677 * FCSupvForce is used to set up force supervision in Force Control. The
678 * supervision is activated when Force Control is activated with the
679 * instruction FCAct.
680 *
681 * The force supervision is set up by defining minimum and maximum limits
682 * for the force in the directions of the force control coordinate system.
683 * Once activated, the supervision will stop the execution if the force is
684 * outside the allowed values. The force supervision is specified in the
685 * force control coordinate system. This coordinate system is setup by the
686 * user with the instruction FCAct.
687 *
688 * @param min
689 * @param max
690 *
691 * @return 成功返回0;失败返回错误码
692 * AUBO_BUSY
693 * AUBO_BAD_STATE
694 * -AUBO_INVL_ARGUMENT
695 * -AUBO_BAD_STATE
696 *
697 * @throws arcs::common_interface::AuboException
698 *
699 * @par Python函数原型
700 * setSupvForce(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1:
701 * List[float]) -> int
702 *
703 * @par Lua函数原型
704 * setSupvForce(min: table, max: table) -> nil
705 *
706 */
707 int setSupvForce(const std::vector<double> &min,
708 const std::vector<double> &max);
709
710 /**
711 * FCSupvOrient is used to set up an supervision for the tool orientation.
712 * The supervision is activated when Force Control is activated with the
713 * instruction FCAct.
714 *
715 * An orientation supervision is set up by defining a maximum angle and a
716 * maximum rotation from a reference orientation. The reference orientation
717 * is either defined by the current z direction of the tool, or by
718 * specifying an orientation in relation to the z direction of the work
719 * object.
720 *
721 * Once activated, the tool orientation must be within the limits otherwise
722 * the supervision will stop the execution.
723 *
724 * @param frame
725 * @param max_angle
726 * @param max_rot
727 * @param outside
728 *
729 * @return 成功返回0;失败返回错误码
730 * AUBO_BUSY
731 * AUBO_BAD_STATE
732 * -AUBO_INVL_ARGUMENT
733 * -AUBO_BAD_STATE
734 *
735 * @throws arcs::common_interface::AuboException
736 *
737 * @par Python函数原型
738 * setSupvOrient(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1:
739 * float, arg2: float, arg3: bool) -> int
740 *
741 * @par Lua函数原型
742 * setSupvOrient(frame: table, max_angle: number, max_rot: number,
743 * outside: boolean) -> nil
744 *
745 */
746 int setSupvOrient(const std::vector<double> &frame, double max_angle,
747 double max_rot, bool outside);
748
749 /**
750 * FCSupvPos is used to set up position supervision in Force Control.
751 * Supervision is activated when Force Control is activated with the
752 * instruction FCAct. Position supervision is set up by defining a volume in
753 * space for the TCP. Once activated, the supervision will stop the
754 * execution if the TCP is outside this volume.
755 *
756 * @param frame
757 * @param box
758 *
759 * @return 成功返回0;失败返回错误码
760 * AUBO_BUSY
761 * AUBO_BAD_STATE
762 * -AUBO_INVL_ARGUMENT
763 * -AUBO_BAD_STATE
764 *
765 * @throws arcs::common_interface::AuboException
766 *
767 * @par Python函数原型
768 * setSupvPosBox(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1:
769 * List[float[6]]) -> int
770 *
771 * @par Lua函数原型
772 * setSupvPosBox(frame: table, box: table) -> nil
773 *
774 */
775 int setSupvPosBox(const std::vector<double> &frame, const Box &box);
776
777 /**
778 *
779 * @param frame
780 * @param cylinder
781 *
782 * @return 成功返回0;失败返回错误码
783 * AUBO_BUSY
784 * AUBO_BAD_STATE
785 * -AUBO_INVL_ARGUMENT
786 * -AUBO_BAD_STATE
787 *
788 * @throws arcs::common_interface::AuboException
789 *
790 * @par Python函数原型
791 * setSupvPosCylinder(self: pyaubo_sdk.ForceControl, arg0: List[float],
792 * arg1: List[float[5]]) -> int
793 *
794 * @par Lua函数原型
795 * setSupvPosCylinder(frame: table, cylinder: table) -> nil
796 *
797 */
798 int setSupvPosCylinder(const std::vector<double> &frame,
799 const Cylinder &cylinder);
800
801 /**
802 *
803 * @param frame
804 * @param sphere
805 *
806 * @return 成功返回0;失败返回错误码
807 * AUBO_BUSY
808 * AUBO_BAD_STATE
809 * -AUBO_INVL_ARGUMENT
810 * -AUBO_BAD_STATE
811 *
812 * @throws arcs::common_interface::AuboException
813 *
814 * @par Python函数原型
815 * setSupvPosSphere(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1:
816 * List[float[3]]) -> int
817 *
818 * @par Lua函数原型
819 * setSupvPosSphere(frame: table, sphere: table) -> nil
820 *
821 */
822 int setSupvPosSphere(const std::vector<double> &frame,
823 const Sphere &sphere);
824
825 /**
826 * FCSupvReoriSpeed is used to set up reorientation speed supervision in
827 * Force Control. The supervision is activated when Force Control is
828 * activated with the instruction FCAct.
829 *
830 * The reorientation speed supervision is set up by defining minimum and
831 * maximum limits for the reorientation speed around the axis of the work
832 * object coordinate system. Once activated, the supervision will stop the
833 * execution if the values of the reorientation speed are to high.
834 *
835 * There are two speed supervisions: FCSupvReoriSpeed and FCSupvTCPSpeed,
836 * which is described in section FCSupvTCPSpeed on page 199.
837 * Both supervisions may be required because:
838 * - A robot axis can rotate with high speed while the TCP is stationary.
839 * - The TCP can be far from the rotating axisand asmallaxis rotation may
840 * result in a high speed movement of the TCP
841 *
842 * @param speed_limit
843 * @param outside
844 * @param timeout
845 *
846 * @return 成功返回0;失败返回错误码
847 * AUBO_BUSY
848 * AUBO_BAD_STATE
849 * -AUBO_INVL_ARGUMENT
850 * -AUBO_BAD_STATE
851 *
852 * @throws arcs::common_interface::AuboException
853 *
854 * @par Python函数原型
855 * setSupvReoriSpeed(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1:
856 * bool, arg2: float) -> int
857 *
858 * @par Lua函数原型
859 * setSupvReoriSpeed(speed_limit: table, outside: boolean, timeout: number)
860 * -> nil
861 *
862 */
863 int setSupvReoriSpeed(const std::vector<double> &speed_limit, bool outside,
864 double timeout);
865
866 /**
867 * FCSupvTCPSpeed is used to set up TCP speed supervision in Force Control.
868 * The supervision is activated when Force Control is activated with the
869 * instruction FCAct. The TCP speed supervision is set up by defining
870 * minimum and maximum limits for the TCP speed in the directions of the
871 * work object coordinate system. Once activated, the supervision will stop
872 * the execution if too high TCP speed values are detected.
873 *
874 * There are two speed supervisions: FCSupvTCPSpeed and FCSupvReorispeed,
875 * which is described in section FCSupvReoriSpeed on page 197.
876 *
877 * Both supervisions may be required because:
878 * - A robot axis can rotate with high speed while the TCP is stationary.
879 * - The TCP can be far from the rotating axisand asmallaxis rotation may
880 * result in a high speed movement of the TCP.
881 *
882 * @param speed_limit
883 * @param outside
884 * @param timeout
885 *
886 * @return 成功返回0;失败返回错误码
887 * AUBO_BUSY
888 * AUBO_BAD_STATE
889 * -AUBO_INVL_ARGUMENT
890 * -AUBO_BAD_STATE
891 *
892 * @throws arcs::common_interface::AuboException
893 *
894 * @par Python函数原型
895 * setSupvTcpSpeed(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1:
896 * bool, arg2: float) -> int
897 *
898 * @par Lua函数原型
899 * setSupvTcpSpeed(speed_limit: table, outside: boolean, timeout: number) ->
900 * nil
901 *
902 */
903 int setSupvTcpSpeed(const std::vector<double> &speed_limit, bool outside,
904 double timeout);
905
906 // 设置低通滤波器
907 // --- force frame filter: 过滤测量到的力/力矩
908 // +++ force loop filter: 力控输出参考速度的滤波器
909
910 /**
911 * 设置低通滤波器
912 *
913 * --- force frame filter: 过滤测量到的力/力矩
914 * +++ force loop filter: 力控输出参考速度的滤波器
915 *
916 * FCSetLPFilterTune is used change the response of force loop according to
917 * description in Damping and LP-filter on page 103.
918 *
919 * @param cutoff_freq
920 *
921 * @return 成功返回0;失败返回错误码
922 * AUBO_BUSY
923 * AUBO_BAD_STATE
924 * -AUBO_INVL_ARGUMENT
925 * -AUBO_BAD_STATE
926 *
927 * @throws arcs::common_interface::AuboException
928 *
929 * @par Python函数原型
930 * setLpFilter(self: pyaubo_sdk.ForceControl, arg0: List[float]) -> int
931 *
932 * @par Lua函数原型
933 * setLpFilter(cutoff_freq: table) -> nil
934 *
935 */
936 int setLpFilter(const std::vector<double> &cutoff_freq);
937
938 /**
939 * 重置低通滤波器
940 *
941 * @return 成功返回0;失败返回错误码
942 * AUBO_BUSY
943 * AUBO_BAD_STATE
944 * -AUBO_BAD_STATE
945 *
946 * @throws arcs::common_interface::AuboException
947 *
948 * @par Python函数原型
949 * resetLpFilter(self: pyaubo_sdk.ForceControl) -> int
950 *
951 * @par Lua函数原型
952 * resetLpFilter() -> nil
953 *
954 * @par JSON-RPC请求示例
955 * {"jsonrpc":"2.0","method":"rob1.ForceControl.resetLpFilter","params":[],"id":1}
956 *
957 * @par JSON-RPC响应示例
958 * {"id":1,"jsonrpc":"2.0","result":0}
959 *
960 */
962
963 /**
964 * The FCSpdChgAct is used to activate FC SpeedChange function with desired
965 * reference and recover behavior. When FC SpeedChange function is active,
966 * the robot speed will be reduced/increased in order to keep the measured
967 * signal close to the reference.
968 *
969 * @param ref_force
970 *
971 * @return 成功返回0;失败返回错误码
972 * AUBO_BUSY
973 * AUBO_BAD_STATE
974 * -AUBO_INVL_ARGUMENT
975 * -AUBO_BAD_STATE
976 *
977 * @throws arcs::common_interface::AuboException
978 *
979 * @par Python函数原型
980 * speedChangeEnable(self: pyaubo_sdk.ForceControl, arg0: float) -> int
981 *
982 * @par Lua函数原型
983 * speedChangeEnable(ref_force: number) -> nil
984 *
985 */
986 int speedChangeEnable(double ref_force);
987
988 /**
989 * Deactivate FC SpeedChange function.
990 *
991 * @return 成功返回0;失败返回错误码
992 * AUBO_BUSY
993 * AUBO_BAD_STATE
994 * -AUBO_BAD_STATE
995 *
996 * @throws arcs::common_interface::AuboException
997 *
998 * @par Python函数原型
999 * speedChangeDisable(self: pyaubo_sdk.ForceControl) -> int
1000 *
1001 * @par Lua函数原型
1002 * speedChangeDisable() -> nil
1003 *
1004 * @par JSON-RPC请求示例
1005 * {"jsonrpc":"2.0","method":"rob1.ForceControl.speedChangeDisable","params":[],"id":1}
1006 *
1007 * @par JSON-RPC响应示例
1008 * {"id":1,"jsonrpc":"2.0","result":0}
1009 *
1010 */
1012
1013 /**
1014 * FCSpdChgTunSet is used to set FC SpeedChange system parameters to a new
1015 * value.
1016 *
1017 * @param speed_levels
1018 * @param speed_ratio_min
1019 *
1020 * @return 成功返回0;失败返回错误码
1021 * AUBO_BUSY
1022 * AUBO_BAD_STATE
1023 * -AUBO_INVL_ARGUMENT
1024 * -AUBO_BAD_STATE
1025 *
1026 * @throws arcs::common_interface::AuboException
1027 *
1028 * @par Python函数原型
1029 * speedChangeTune(self: pyaubo_sdk.ForceControl, arg0: int, arg1: float) ->
1030 * int
1031 *
1032 * @par Lua函数原型
1033 * speedChangeTune(speed_levels: number, speed_ratio_min: number) -> nil
1034 *
1035 */
1036 int speedChangeTune(int speed_levels, double speed_ratio_min);
1037
1038 /* Defines how many Newtons are required to make the robot move 1 m/s. The
1039 higher the value, the less responsive the robot gets.
1040 The damping can be tuned (as a percentage of the system parameter values)
1041 by the RAPID instruction FCAct. */
1042 // 设置阻尼系数,阻尼的系统参数需要通过配置文件设置
1043 // [damping_fx, damping_fy, damping_fz, damping_tx, damping_ty, damping_tz]
1044 // A value between min and 10,000,000 Ns/m.
1045 // A value between minimum and 10,000,000 Nms/rad.
1046
1047 /**
1048 * FCSetDampingTune is used to tune the damping in the force control
1049 * coordinate systems. The parameters tuned are those described in Damping
1050 * in Torque x Direction - Damping in Torque z Direction on page 255 and
1051 * Damping in Force x Direction - Damping in Force z Direction on page 254.
1052 *
1053 * Damping can be set in the configuration file or by the instruction FCAct.
1054 * The difference is that this instruction can be used when force control is
1055 * active. FCSetDampingTune tunes the actual values set by the instruction
1056 * FCAct, not the value in the configuration file.
1057 *
1058 * @param damping
1059 * @param ramp_time
1060 *
1061 * @return 成功返回0;失败返回错误码
1062 * AUBO_BUSY
1063 * AUBO_BAD_STATE
1064 * -AUBO_INVL_ARGUMENT
1065 * -AUBO_BAD_STATE
1066 *
1067 * @throws arcs::common_interface::AuboException
1068 *
1069 * @par Python函数原型
1070 * setDamping(self: pyaubo_sdk.ForceControl, arg0: List[float], arg1: float)
1071 * -> int
1072 *
1073 * @par Lua函数原型
1074 * setDamping(damping: table, ramp_time: number) -> nil
1075 *
1076 */
1077 int setDamping(const std::vector<double> &damping, double ramp_time);
1078
1079 /**
1080 *
1081 *
1082 * @return 成功返回0;失败返回错误码
1083 * AUBO_BUSY
1084 * AUBO_BAD_STATE
1085 * -AUBO_BAD_STATE
1086 *
1087 * @throws arcs::common_interface::AuboException
1088 *
1089 * @par Python函数原型
1090 * resetDamping(self: pyaubo_sdk.ForceControl) -> int
1091 *
1092 * @par Lua函数原型
1093 * resetDamping() -> nil
1094 *
1095 * @par JSON-RPC请求示例
1096 * {"jsonrpc":"2.0","method":"rob1.ForceControl.resetDamping","params":[],"id":1}
1097 *
1098 * @par JSON-RPC响应示例
1099 * {"id":1,"jsonrpc":"2.0","result":0}
1100 *
1101 */
1103
1104 /**
1105 *
1106 * @return 成功返回0;失败返回错误码
1107 * AUBO_BUSY
1108 * AUBO_BAD_STATE
1109 * -AUBO_BAD_STATE
1110 *
1111 * @throws arcs::common_interface::AuboException
1112 *
1113 * @par JSON-RPC请求示例
1114 * {"jsonrpc":"2.0","method":"rob1.ForceControl.softFloatEnable","params":[],"id":1}
1115 *
1116 * @par JSON-RPC响应示例
1117 * {"id":1,"jsonrpc":"2.0","result":0}
1118 *
1119 */
1121
1122 /**
1123 *
1124 * @return 成功返回0;失败返回错误码
1125 * AUBO_BUSY
1126 * AUBO_BAD_STATE
1127 * -AUBO_BAD_STATE
1128 *
1129 * @throws arcs::common_interface::AuboException
1130 *
1131 * @par JSON-RPC请求示例
1132 * {"jsonrpc":"2.0","method":"rob1.ForceControl.softFloatDisable","params":[],"id":1}
1133 *
1134 * @par JSON-RPC响应示例
1135 * {"id":1,"jsonrpc":"2.0","result":-1}
1136 *
1137 */
1139
1140 /**
1141 * 返回是否开启了软浮动
1142 *
1143 * @return
1144 *
1145 * @throws arcs::common_interface::AuboException
1146 *
1147 * @par JSON-RPC请求示例
1148 * {"jsonrpc":"2.0","method":"rob1.ForceControl.isSoftFloatEnabled","params":[],"id":1}
1149 *
1150 * @par JSON-RPC响应示例
1151 * {"id":1,"jsonrpc":"2.0","result":false}
1152 *
1153 */
1155
1156 /**
1157 * 设置软浮动参数
1158 *
1159 * @param joint_softfloat
1160 * @param select
1161 * @param stiff_percent
1162 * @param stiff_damp_ratio
1163 * @param force_threshold
1164 * @param force_limit
1165 * @return
1166 */
1167 int setSoftFloatParams(bool joint_space, const std::vector<bool> &select,
1168 const std::vector<double> &stiff_percent,
1169 const std::vector<double> &stiff_damp_ratio,
1170 const std::vector<double> &force_threshold,
1171 const std::vector<double> &force_limit);
1172
1173 /**
1174 * 检测工具和外部物体的接触
1175 *
1176 * @param direction
1177 * 预期的接触方向,如果所有的元素为0,表示检测所有方向的接触
1178 * @return
1179 * 返回从当前点回退到碰撞开始点的周期步数,如果返回值为0,表示没有接触
1180 */
1181 int toolContact(const std::vector<bool> &direction);
1182
1183protected:
1184 void *d_{ nullptr };
1185};
1186using ForceControlPtr = std::shared_ptr<ForceControl>;
1187
1188// clang-format off
1189#define ForceControl_DECLARES \
1190 _INST(ForceControl, 0, fcEnable) \
1191 _INST(ForceControl, 0, fcDisable) \
1192 _FUNC(ForceControl, 0, isFcEnabled) \
1193 _INST(ForceControl, 5, setTargetForce, feature, compliance, wrench, limits, type) \
1194 _INST(ForceControl, 1, fcSetSensorThresholds, thresholds) \
1195 _INST(ForceControl, 1, fcSetSensorLimits, limits) \
1196 _FUNC(ForceControl, 0, getFcSensorThresholds) \
1197 _FUNC(ForceControl, 0, getFcSensorLimits) \
1198 _INST(ForceControl, 2, setDynamicModelSearch, damp_scale, stiff_scale) \
1199 _INST(ForceControl, 2, setDynamicModelInsert, damp_scale, stiff_scale) \
1200 _INST(ForceControl, 3, setDynamicModel, m, d, k) \
1201 _FUNC(ForceControl, 0, getDynamicModel) \
1202 _INST(ForceControl, 4, setCondForce, min, max, outside, timeout) \
1203 _INST(ForceControl, 5, setCondOrient, frame, max_angle, max_rot, outside, timeout) \
1204 _INST(ForceControl, 2, setCondPlane, plane, timeout) \
1205 _INST(ForceControl, 4, setCondCylinder, axis, radius, outside, timeout) \
1206 _INST(ForceControl, 4, setCondSphere, center, radius, outside, timeout) \
1207 _INST(ForceControl, 4, setCondTcpSpeed, min, max, outside, timeout) \
1208 _INST(ForceControl, 0, setCondActive) \
1209 _INST(ForceControl, 2, setCondDistance, distance, timeout) \
1210 _INST(ForceControl, 3, setCondAdvanced, type, args, timeout) \
1211 _FUNC(ForceControl, 0, isCondFullfiled) \
1212 _INST(ForceControl, 2, setSupvForce, min, max) \
1213 _INST(ForceControl, 4, setSupvOrient, frame, max_angle, max_rot, outside) \
1214 _INST(ForceControl, 2, setSupvPosBox, frame, box) \
1215 _INST(ForceControl, 2, setSupvPosCylinder, frame, cylinder) \
1216 _INST(ForceControl, 2, setSupvPosSphere, frame, sphere) \
1217 _INST(ForceControl, 3, setSupvReoriSpeed, speed_limit, outside, timeout) \
1218 _INST(ForceControl, 3, setSupvTcpSpeed, speed_limit, outside, timeout) \
1219 _INST(ForceControl, 1, setLpFilter, cutoff_freq) \
1220 _INST(ForceControl, 0, resetLpFilter) \
1221 _INST(ForceControl, 2, speedChangeTune, speed_levels, speed_ratio_min) \
1222 _INST(ForceControl, 1, speedChangeEnable, ref_force) \
1223 _INST(ForceControl, 0, speedChangeDisable) \
1224 _INST(ForceControl, 2, setDamping, damping, ramp_time) \
1225 _INST(ForceControl, 0, resetDamping) \
1226 _INST(ForceControl, 0, softFloatEnable) \
1227 _INST(ForceControl, 0, softFloatDisable) \
1228 _FUNC(ForceControl, 0, isSoftFloatEnabled) \
1229 _INST(ForceControl, 6, setSoftFloatParams, joint_space, select, stiff_percent, stiff_damp_ratio, force_threshold, force_limit) \
1230 _FUNC(ForceControl, 1, toolContact, direction)
1231// clang-format on
1232} // namespace common_interface
1233} // namespace arcs
1234
1235#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)
The FCSpdChgAct is used to activate FC SpeedChange function with desired reference and recover behavi...
int setSupvReoriSpeed(const std::vector< double > &speed_limit, bool outside, double timeout)
FCSupvReoriSpeed is used to set up reorientation speed supervision in Force Control.
int setDynamicModelSearch(const std::vector< double > &damp_scale, const std::vector< double > &stiff_scale)
设置力控搜孔场景下的动力学模型
int fcDisable()
End force control
int setCondDistance(double distance, double timeout)
力控终止条件-距离
bool isSoftFloatEnabled()
返回是否开启了软浮动
int setSupvTcpSpeed(const std::vector< double > &speed_limit, bool outside, double timeout)
FCSupvTCPSpeed is used to set up TCP speed supervision in Force Control.
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)
FCSetDampingTune is used to tune the damping in the force control coordinate systems.
int resetLpFilter()
重置低通滤波器
int setCondAdvanced(const std::string &type, const std::vector< double > &args, double timeout)
高级力控终止条件
int setLpFilter(const std::vector< double > &cutoff_freq)
设置低通滤波器
int setCondTcpSpeed(const std::vector< double > &min, const std::vector< double > &max, bool outside, double timeout)
FCCondTCPSpeed is used to setup an end condition for the TCP speed.
int setCondForce(const std::vector< double > &min, const std::vector< double > &max, bool outside, double timeout)
设置力控终止条件:力,当测量的力在设置的范围之内,力控算法将保持运行,直到设置的条件不满足,力控将退出
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)
FCSupvPos is used to set up position supervision in Force Control.
int setSupvPosSphere(const std::vector< double > &frame, const Sphere &sphere)
int setSupvForce(const std::vector< double > &min, const std::vector< double > &max)
FCSupvForce is used to set up force supervision in Force Control.
std::vector< double > getFcSensorLimits()
获取最大力限制
int speedChangeDisable()
Deactivate FC SpeedChange function.
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)
设置力控参考(目标)值
int fcEnable()
Start force control
int setSupvOrient(const std::vector< double > &frame, double max_angle, double max_rot, bool outside)
FCSupvOrient is used to set up an supervision for the tool orientation.
std::vector< double > getFcSensorThresholds()
获取力控阈值
int speedChangeTune(int speed_levels, double speed_ratio_min)
FCSpdChgTunSet is used to set FC SpeedChange system parameters to a new value.
int toolContact(const std::vector< bool > &direction)
检测工具和外部物体的接触
int setCondOrient(const std::vector< double > &frame, double max_angle, double max_rot, bool outside, double timeout)
FCCondOrient is used to set up an end condition for the tool orientation.
std::tuple< std::vector< double >, std::vector< double >, std::vector< double > > DynamicsModel
Definition type_def.h:680
std::vector< double > Box
Definition type_def.h:688
std::vector< double > Sphere
Definition type_def.h:700
std::shared_ptr< ForceControl > ForceControlPtr
std::vector< double > Cylinder
Definition type_def.h:695
数据类型的定义