guarded_sequence.xml
This example application shows the usage of some force skills with guarded sequence.
Models used
skill_guarded_sequence: lines 52
skill_guarded_sequence_with_start: lines 94
skill_lin: lines 46
skill_lin_time_optimal_ruckig: lines 59, 65, 80, 86, 99, 106, 112, 127, 133
skill_relative_ptp: lines 42
skill_sequence: lines 34
File contents
1<?xml version="1.0" encoding="UTF-8"?>
2
3<!-- This example application shows the usage of some force skills with guarded sequence.
4-->
5
6<pitasc>
7
8 <models>
9 <include package="pitasc_library" file="models/pitasc.xml" />
10 <include package="pitasc_library" file="models/skills.xml" />
11
12 <include package="pitasc_library" file="universal_robots/ur.xml" />
13 </models>
14
15 <clone prototype="project">
16
17 <member id="configuration">
18 <clone id="configuration" prototype="default_configuration" />
19 </member>
20
21 <member id="environment">
22 <clone prototype="robot_ur5">
23 <member id="robot_driver.max_velocity">2.0</member>
24 <member id="robot_driver.max_acceleration">3.0</member>
25 <member id="components">
26 <clone prototype="force_sensor">
27 <member id="wrench_topic">wrench</member>
28 </clone>
29 </member>
30 </clone>
31 </member>
32
33 <member id="applications">
34 <clone id="simple_forces" prototype="skill_sequence">
35
36 <member id="robot" reference_id="environment.robot_ur5" />
37
38 <!-- Skills -->
39 <member id="skills">
40
41 <!-- First move to start position -->
42 <clone prototype="skill_relative_ptp">
43 <member id="relative_joint_state">0, 0, 0, -0.01, 0, 0</member>
44 </clone>
45
46 <clone prototype="skill_lin">
47 <member id="tool_frame">tool</member>
48 <member id="target_frame">start_position</member>
49 </clone>
50
51 <!-- Raises an exception when a force occurs -->
52 <clone prototype="skill_guarded_sequence">
53 <member id="force_measurement_frame">tool</member>
54 <member id="max_forces">10.0,10.0,10.0</member>
55 <member id="monitor_axes">x,y,z</member>
56 <member id="event">exception</member>
57 <member id="protected_skills">
58
59 <clone prototype="skill_lin_time_optimal_ruckig">
60 <member id="tool_frame">tool</member>
61 <member id="target_frame">start_position</member>
62 <member id="target_offsets">0, 0, -0.1, 0, 0, 0</member>
63 <member id="max_linear_velocity">0.1</member>
64 </clone>
65 <clone prototype="skill_lin_time_optimal_ruckig">
66 <member id="tool_frame">tool</member>
67 <member id="target_frame">start_position</member>
68 <member id="target_offsets">0, 0, 0.2, 0, 0, 0</member>
69 <member id="max_linear_velocity">0.1</member>
70 </clone>
71 </member>
72 <member id="transitions">
73 <clone prototype="transition">
74 <member id="event">exception</member>
75 <member id="target">back</member>
76 </clone>
77 </member>
78 </clone>
79
80 <clone id="starting_position" prototype="skill_lin_time_optimal_ruckig">
81 <member id="tool_frame">tool</member>
82 <member id="target_frame">start_position</member>
83 <member id="target_offsets">0, 0, -0.1, 0, 0, 0</member>
84 </clone>
85
86 <clone id="back" prototype="skill_lin_time_optimal_ruckig">
87 <member id="tool_frame">tool</member>
88 <member id="target_frame">start_position</member>
89 </clone>
90
91 <!-- You can also use this skill with a start skill, that will be executed
92 before the monitoring forces. Typcially, you would use this in conjunction with
93 a "tare" skill that zeros the forces -->
94 <clone prototype="skill_guarded_sequence_with_start">
95 <member id="force_measurement_frame">tool</member>
96 <member id="max_forces">10.0,10.0,10.0</member>
97 <member id="monitor_axes">x,y,z</member>
98 <member id="event">exception</member>
99 <clone id="start_skill" prototype="skill_lin_time_optimal_ruckig">
100 <member id="tool_frame">tool</member>
101 <member id="target_frame">start_position</member>
102 <member id="target_offsets">0, 0, -0.05, 0, 0, 0</member>
103 <member id="max_linear_velocity">1.0</member>
104 </clone>
105 <member id="protected_skills">
106 <clone prototype="skill_lin_time_optimal_ruckig">
107 <member id="tool_frame">tool</member>
108 <member id="target_frame">start_position</member>
109 <member id="target_offsets">0, 0, -0.1, 0, 0, 0</member>
110 <member id="max_linear_velocity">0.1</member>
111 </clone>
112 <clone prototype="skill_lin_time_optimal_ruckig">
113 <member id="tool_frame">tool</member>
114 <member id="target_frame">start_position</member>
115 <member id="target_offsets">0, 0, 0.2, 0, 0, 0</member>
116 <member id="max_linear_velocity">0.1</member>
117 </clone>
118 </member>
119 <member id="transitions">
120 <clone prototype="transition">
121 <member id="event">exception</member>
122 <member id="target">back_second</member>
123 </clone>
124 </member>
125 </clone>
126
127 <clone prototype="skill_lin_time_optimal_ruckig">
128 <member id="tool_frame">tool</member>
129 <member id="target_frame">start_position</member>
130 <member id="target_offsets">0, 0, -0.1, 0, 0, 0</member>
131 </clone>
132
133 <clone id="back_second" prototype="skill_lin_time_optimal_ruckig">
134 <member id="tool_frame">tool</member>
135 <member id="target_frame">start_position</member>
136 </clone>
137
138
139 </member>
140
141 </clone>
142
143 </member>
144
145 </clone>
146
147</pitasc>