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

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>