move_math_parser.xml

This example application shows the usage of monitors.

Models used

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>