move_math_parser.xml
This example application shows the usage of monitors.
Models used
monitor_duration: lines 50, 70
skill_cartesian_tracking: lines 37, 60
skill_sequence: lines 31
File contents
1<?xml version="1.0" encoding="UTF-8"?>
2
3<!-- This example application shows the usage of monitors.
4
5-->
6
7<pitasc>
8
9 <models>
10 <include package="pitasc_library" file="models/pitasc.xml"/>
11 <include package="pitasc_library" file="models/skills.xml"/>
12
13 <include package="pitasc_library" file="universal_robots/ur.xml"/>
14 </models>
15
16 <clone prototype="project">
17
18 <member id="configuration">
19 <clone id="configuration" prototype="default_configuration"/>
20 </member>
21
22 <member id="environment">
23 <clone prototype="robot_ur5">
24 <member id="robot_driver.max_velocity">$(0.15 + 0.85)</member>
25 <member id="robot_driver.max_acceleration">3.0</member>
26 </clone>
27 <clone id="starting_nr" prototype="string_parameter">2</clone>
28 </member>
29
30 <member id="applications">
31 <clone prototype="skill_sequence">
32
33 <member id="robot" reference_id="environment.robot_ur5"/>
34
35 <member id="skills">
36
37 <clone id="move_1" prototype="skill_cartesian_tracking">
38 <!-- The formula interpreter only allows certain types to be referenced -->
39 <!-- e.g. in a number paramter only float or int are allowed, no string -->
40 <member id="skill_name">$("move_" + "1")</member>
41 <member id="tool_frame">tool</member>
42 <!-- You can reference elements within the "project" scope with normal notation -->
43 <member id="target_frame">$("target" + environment.starting_nr)</member>
44 <!-- With skip notation ('..') you can skip members in between, if the path is unique -->
45 <member id="max_linear_velocity">$(2.0 * environment..max_velocity)</member>
46 <!-- You can also set parts of a CSV as a formula -->
47 <member id="target_offsets">$(0.05*2), 0.0, 0.0, $(pi/8), 0, 0</member>
48
49 <member id="monitors">
50 <clone prototype="monitor_duration">
51 <!-- You can do a global search here with skip connections -->
52 <!-- It fetches all members, that fit the signature [..]robot_ur5[..]max_velocity -->
53 <!-- i.e. that means is searches for any parameter 'robot_ur5' -->
54 <member id="duration">$(..robot_ur5..max_velocity * 1)</member>
55 </clone>
56 </member>
57
58 </clone>
59
60 <clone prototype="skill_cartesian_tracking">
61 <member id="skill_name">move_2</member>
62 <!-- You can do relative references by defining the input hook -->
63 <!-- The algorithm looks in the path for the first element ('skills') -->
64 <!-- And then you can reference the sub-skills from there -->
65 <member id="tool_frame">$(skills.move_1.tool_frame + "0")</member>
66 <member id="target_frame">marker</member>
67 <member id="max_linear_velocity">$(environment..max_velocity * 0.1)</member>
68
69 <member id="monitors">
70 <clone prototype="monitor_duration">
71 <member id="duration">$(..robot_ur5..max_velocity * 5)</member>
72 </clone>
73 </member>
74
75 </clone>
76
77 </member>
78
79 </clone>
80 </member>
81
82 </clone>
83
84</pitasc>