lin_trajectory.xml
This example application shows how to run a linear trajectory through several waypoints with blending.
A UR5 moves to start position, then he performs the trajectory. Then, he does it again with higher velocity. Then the application terminates.
Models used
script_measurement_logger: lines 93, 98
skill_lin: lines 50, 107
skill_lin_trajectory: lines 56, 113
skill_sequence: lines 41
File contents
1<?xml version="1.0" encoding="UTF-8"?>
2
3<!-- This example application shows how to run a linear trajectory through several waypoints with blending.
4
5A UR5 moves to start position, then he performs the trajectory. Then, he does it again with higher velocity. Then the application terminates.
6-->
7
8<pitasc>
9
10 <models>
11 <!-- Include pitasc -->
12 <include package="pitasc_library" file="models/pitasc.xml"/>
13
14 <!-- Include the UR5 -->
15 <include package="pitasc_library" file="universal_robots/ur.xml"/>
16
17 <!-- Include the skills -->
18 <include package="pitasc_library" file="models/skills.xml"/>
19
20 </models>
21
22 <!-- Create a project -->
23 <clone prototype="project">
24
25 <member id="configuration">
26 <!-- Use the default configuration with recommended settings -->
27 <clone id="configuration" prototype="default_configuration"/>
28 </member>
29
30 <member id="environment">
31 <!-- Add a UR5 -->
32 <clone prototype="robot_ur5">
33 <member id="robot_driver.max_velocity">2.0</member>
34 <member id="robot_driver.max_acceleration">3.0</member>
35 </clone>
36 </member>
37
38 <member id="applications">
39
40 <!-- Use a skill sequence as a container -->
41 <clone prototype="skill_sequence">
42
43 <!-- Use the UR5 for this skill (and for its subskill) -->
44 <member id="robot" reference_id="environment.robot_ur5"/>
45
46 <!-- Add subskill(s) -->
47 <member id="skills">
48
49 <!-- Move to target1 (lin)-->
50 <clone prototype="skill_lin">
51 <member id="tool_frame">tool</member>
52 <member id="target_frame">target1</member>
53 </clone>
54
55 <!-- Move along several LIN waypoints and log the desired and measured cartesian positions. -->
56 <clone prototype="skill_lin_trajectory">
57 <member id="tool_frame">tool</member>
58 <!-- <member id="target_frame">target1</member> --> <!-- must not be set, results in errors. Target point is the last waypoint-->
59 <member id="max_linear_velocity">0.5</member>
60 <member id="max_linear_acceleration">1.5</member>
61 <member id="linear_ff_controller_gain">0.8</member>
62
63 <member id="waypoints">
64 <clone prototype="lin_trajectory_waypoint">
65 <member id="target_frame">target2</member>
66 <member id="blending_distance">0.02</member>
67 <member id="max_linear_velocity">0.2</member> <!-- can be set; is valid for the distance to this waypoint -->
68 <member id="max_angular_velocity">0.5</member> <!-- can be set; is valid for the distance to this waypoint -->
69 <member id="max_linear_acceleration">3.0</member> <!-- can be set; is valid for the distance to this waypoint and the blending -->
70 <member id="max_angular_acceleration">10.0</member> <!-- can be set; is valid for the (angular) distance to this waypoint and the blending -->
71 </clone>
72 <clone prototype="lin_trajectory_waypoint">
73 <member id="target_frame">start_position</member>
74 <member id="blending_distance">0.1</member>
75 <member id="max_linear_velocity">0.3</member>
76 <member id="max_angular_velocity">0.6</member>
77 <member id="max_linear_acceleration">5.0</member>
78 </clone>
79 <clone prototype="lin_trajectory_waypoint">
80 <member id="target_frame">target3</member>
81 <member id="blending_distance">0.03</member>
82 <member id="target_offsets">0, 0.05, 0, 0, 0, 0</member>
83 </clone>
84 <clone prototype="lin_trajectory_waypoint">
85 <member id="target_frame">target3</member>
86 <member id="target_offsets">-0.05, 0, 0, 0, 0, 0</member>
87 <member id="max_linear_velocity">0.1</member>
88 <member id="max_angular_velocity">1.0</member>
89 </clone>
90 </member>
91
92 <member id="scripts">
93 <clone prototype="script_measurement_logger">
94 <member id="provider" reference_id="collections.target_to_tool.chains"/>
95 <member id="file_name">{rospkg pitasc_common}/examples/skills/logs/lin_trajectory_measured_pos.csv</member>
96 <member id="filter"></member>
97 </clone>
98 <clone prototype="script_measurement_logger">
99 <member id="provider" reference_id="tasks.tracking.setpoint_generators"/>
100 <member id="file_name">{rospkg pitasc_common}/examples/skills/logs/lin_trajectory_desired_pos.csv</member>
101 <member id="filter"></member>
102 </clone>
103 </member>
104 </clone>
105
106 <!-- Move to target1 (lin)-->
107 <clone prototype="skill_lin">
108 <member id="tool_frame">tool</member>
109 <member id="target_frame">target1</member>
110 </clone>
111
112 <!-- Move along several LIN waypoints, with double speed. Notice the manual controller tuning -->
113 <clone prototype="skill_lin_trajectory">
114 <member id="tool_frame">tool</member>
115 <!-- <member id="target_frame">target1</member> --> <!-- must not be set, results in errors. Target point is the last waypoint-->
116 <member id="max_linear_velocity">0.4</member>
117 <member id="max_angular_velocity">5.0</member>
118 <member id="max_linear_acceleration">1.5</member>
119 <member id="linear_controller_gain">4.0</member>
120 <member id="angular_controller_gain">2.0</member>
121 <member id="linear_ff_controller_gain">0.7</member>
122 <member id="angular_ff_controller_gain">0.8</member>
123
124 <member id="waypoints">
125 <clone prototype="lin_trajectory_waypoint">
126 <member id="target_frame">target2</member>
127 <member id="blending_distance">0.02</member>
128 </clone>
129 <clone prototype="lin_trajectory_waypoint">
130 <member id="target_frame">start_position</member>
131 <member id="blending_distance">0.1</member>
132 </clone>
133 <clone prototype="lin_trajectory_waypoint">
134 <member id="target_frame">target3</member>
135 <member id="blending_distance">0.03</member>
136 <member id="target_offsets">0, 0.05, 0, 0, 0, 0</member>
137 </clone>
138 <clone prototype="lin_trajectory_waypoint">
139 <member id="target_frame">target3</member>
140 <member id="target_offsets">-0.05, 0, 0, 0, 0, 0</member>
141 </clone>
142 </member>
143
144 </clone>
145 </member>
146
147 </clone>
148
149 </member>
150
151 </clone>
152
153</pitasc>