QCar Floor Mats

Description
The QCar is accompanied by floor mats. These tiles are considered an “actor” in Quanser Interactive Labs. These tiles are created to help students with self-driving car skills.
Library
Constants
- QLabsQCarFlooring.ID_FLOORING = 10090
Class ID
- QLabsQCarFlooring.FLOORING_QCAR_MAP_LARGE = 0
- QLabsQCarFlooring.FLOORING_QCAR_MAP_SMALL = 1
Member Variables
- QLabsQCarFlooring.actorNumber = None
The current actor number of this class to be addressed. This will be set by spawn methods and cleared by destroy methods. It will not be modified by the destroy all actors. This can be manually altered at any time to use one object to address multiple actors.
Parent Class (actor.py) Methods
- QLabsQCarFlooring.spawn(location=[0, 0, 0], rotation=[0, 0, 0], scale=[1, 1, 1], configuration=0, waitForConfirmation=True)
Spawns a new actor with the next available actor number within this class.
- Parameters
location (float array[3]) – (Optional) An array of floats for x, y and z coordinates
rotation (float array[3]) – (Optional) An array of floats for the roll, pitch, and yaw in radians
scale (float array[3]) – (Optional) An array of floats for the scale in the x, y, and z directions. Scale values of 0.0 should not be used.
configuration (uint32) – (Optional) Spawn configuration. See class library for configuration options.
waitForConfirmation (boolean) – (Optional) Make this operation blocking until confirmation of the spawn has occurred. Note that if this is False, the returned actor number will be invalid.
- Returns
status - 0 if successful, 1 class not available, 3 unknown error, -1 communications error.
actorNumber - An actor number to use for future references.
- Return type
int32, int32
- QLabsQCarFlooring.spawn_degrees(location=[0, 0, 0], rotation=[0, 0, 0], scale=[1, 1, 1], configuration=0, waitForConfirmation=True)
Spawns a new actor with the next available actor number within this class.
- Parameters
location (float array[3]) – (Optional) An array of floats for x, y and z coordinates
rotation (float array[3]) – (Optional) An array of floats for the roll, pitch, and yaw in degrees
scale (float array[3]) – (Optional) An array of floats for the scale in the x, y, and z directions. Scale values of 0.0 should not be used.
configuration (uint32) – (Optional) Spawn configuration. See class library for configuration options.
waitForConfirmation (boolean) – (Optional) Make this operation blocking until confirmation of the spawn has occurred. Note that if this is False, the returned actor number will be invalid.
- Returns
status - 0 if successful, 1 class not available, 3 unknown error, -1 communications error.
actorNumber - An actor number to use for future references.
- Return type
int32, int32
- QLabsQCarFlooring.spawn_id(actorNumber, location=[0, 0, 0], rotation=[0, 0, 0], scale=[1, 1, 1], configuration=0, waitForConfirmation=True)
Spawns a new actor.
- Parameters
actorNumber (uint32) – User defined unique identifier for the class actor in QLabs
location (float array[3]) – (Optional) An array of floats for x, y and z coordinates
rotation (float array[3]) – (Optional) An array of floats for the roll, pitch, and yaw in radians
scale (float array[3]) – (Optional) An array of floats for the scale in the x, y, and z directions. Scale values of 0.0 should not be used.
configuration (uint32) – (Optional) Spawn configuration. See class library for configuration options.
waitForConfirmation (boolean) – (Optional) Make this operation blocking until confirmation of the spawn has occurred.
- Returns
status - 0 if successful, 1 class not available, 2 actor number not available or already in use, 3 unknown error, -1 communications error
- Return type
int32
- QLabsQCarFlooring.spawn_id_degrees(actorNumber, location=[0, 0, 0], rotation=[0, 0, 0], scale=[1, 1, 1], configuration=0, waitForConfirmation=True)
Spawns a new actor.
- Parameters
actorNumber (uint32) – User defined unique identifier for the class actor in QLabs
location (float array[3]) – (Optional) An array of floats for x, y and z coordinates
rotation (float array[3]) – (Optional) An array of floats for the roll, pitch, and yaw in radians
scale (float array[3]) – (Optional) An array of floats for the scale in the x, y, and z directions. Scale values of 0.0 should not be used.
configuration (uint32) – (Optional) Spawn configuration. See class library for configuration options.
waitForConfirmation (boolean) – (Optional) Make this operation blocking until confirmation of the spawn has occurred.
- Returns
status - 0 if successful, 1 class not available, 2 actor number not available or already in use, 3 unknown error, -1 communications error
- Return type
int32
- QLabsQCarFlooring.spawn_id_and_parent_with_relative_transform(actorNumber, location=[0, 0, 0], rotation=[0, 0, 0], scale=[1, 1, 1], configuration=0, parentClassID=0, parentActorNumber=0, parentComponent=0, waitForConfirmation=True)
Spawns a new actor relative to an existing actor and creates a kinematic relationship.
- Parameters
actorNumber (uint32) – User defined unique identifier for the class actor in QLabs
location (float array[3]) – (Optional) An array of floats for x, y and z coordinates
rotation (float array[3]) – (Optional) An array of floats for the roll, pitch, and yaw in radians
scale (float array[3]) – (Optional) An array of floats for the scale in the x, y, and z directions. Scale values of 0.0 should not be used.
configuration (uint32) – (Optional) Spawn configuration. See class library for configuration options.
parentClassID (uint32) – See the ID variables in the respective library classes for the class identifier
parentActorNumber (uint32) – User defined unique identifier for the class actor in QLabs
parentComponent (uint32) – 0 for the origin of the parent actor, see the parent class for additional reference frame options
waitForConfirmation (boolean) – (Optional) Make this operation blocking until confirmation of the spawn has occurred.
- Returns
status - 0 if successful, 1 class not available, 2 actor number not available or already in use, 3 cannot find the parent actor, 4 unknown error, -1 communications error
- Return type
int32
- QLabsQCarFlooring.spawn_id_and_parent_with_relative_transform_degrees(actorNumber, location=[0, 0, 0], rotation=[0, 0, 0], scale=[1, 1, 1], configuration=0, parentClassID=0, parentActorNumber=0, parentComponent=0, waitForConfirmation=True)
Spawns a new actor relative to an existing actor and creates a kinematic relationship.
- Parameters
actorNumber (uint32) – User defined unique identifier for the class actor in QLabs
location (float array[3]) – (Optional) An array of floats for x, y and z coordinates
rotation (float array[3]) – (Optional) An array of floats for the roll, pitch, and yaw in degrees
scale (float array[3]) – (Optional) An array of floats for the scale in the x, y, and z directions. Scale values of 0.0 should not be used.
configuration (uint32) – (Optional) Spawn configuration. See class library for configuration options.
parentClassID (uint32) – See the ID variables in the respective library classes for the class identifier
parentActorNumber (uint32) – User defined unique identifier for the class actor in QLabs
parentComponent (uint32) – 0 for the origin of the parent actor, see the parent class for additional reference frame options
waitForConfirmation (boolean) – (Optional) Make this operation blocking until confirmation of the spawn has occurred.
- Returns
status - 0 if successful, 1 class not available, 2 actor number not available or already in use, 3 cannot find the parent actor, 4 unknown error, -1 communications error
- Return type
int32
- QLabsQCarFlooring.destroy()
Find and destroy a specific actor. This is a blocking operation.
- Returns
numActorsDestroyed - The number of actors destroyed. -1 if failed.
- Return type
int32
- QLabsQCarFlooring.destroy_all_actors_of_class()
Find and destroy all actors of this class. This is a blocking operation.
- Returns
numActorsDestroyed - The number of actors destroyed. -1 if failed.
- Return type
int32
- QLabsQCarFlooring.ping()
Checks if the actor is still present in the environment. Note that if you did not spawn the actor with one of the spawn functions, you may need to manually set the actorNumber member variable.
- Returns
status - True if successful, False otherwise
- Return type
boolean
- QLabsQCarFlooring.get_world_transform()
Get the location, rotation, and scale in world coordinates of the actor.
- Returns
status - True if successful, False otherwise
location
rotation
scale
- Return type
boolean, float array[3], float array[3], float array[3]
- QLabsQCarFlooring.get_world_transform_degrees()
Get the location, rotation, and scale in world coordinates of the actor.
- Returns
status - True if successful, False otherwise
location
rotation
scale
- Return type
boolean, float array[3], float array[3], float array[3]
- QLabsQCarFlooring.parent_with_relative_transform(location=[0, 0, 0], rotation=[0, 0, 0], scale=[1, 1, 1], parentClassID=0, parentActorNumber=0, parentComponent=0, waitForConfirmation=True)
Parents one existing actor to another to create a kinematic relationship.
- Parameters
location (float array[3]) – (Optional) An array of floats for x, y and z coordinates
rotation (float array[3]) – (Optional) An array of floats for the roll, pitch, and yaw in radians
scale (float array[3]) – (Optional) An array of floats for the scale in the x, y, and z directions. Scale values of 0.0 should not be used.
parentClassID (uint32) – See the ID variables in the respective library classes for the class identifier
parentActorNumber (uint32) – User defined unique identifier for the class actor in QLabs
parentComponent (uint32) – 0 for the origin of the parent actor, see the parent class for additional reference frame options
waitForConfirmation (boolean) – (Optional) Make this operation blocking until confirmation of the spawn has occurred.
- Returns
status - 0 if successful, 1 cannot find this actor, 2 cannot find the parent actor, 3 unknown error, -1 communications error
- Return type
int32
- QLabsQCarFlooring.parent_with_relative_transform_degrees(location=[0, 0, 0], rotation=[0, 0, 0], scale=[1, 1, 1], parentClassID=0, parentActorNumber=0, parentComponent=0, waitForConfirmation=True)
Parents one existing actor to another to create a kinematic relationship.
- Parameters
location (float array[3]) – (Optional) An array of floats for x, y and z coordinates
rotation (float array[3]) – (Optional) An array of floats for the roll, pitch, and yaw in degrees
scale (float array[3]) – (Optional) An array of floats for the scale in the x, y, and z directions. Scale values of 0.0 should not be used.
parentClassID (uint32) – (Optional) See the ID variables in the respective library classes for the class identifier
parentActorNumber (uint32) – (Optional) User defined unique identifier for the class actor in QLabs
parentComponent (uint32) – (Optional) 0 for the origin of the parent actor, see the parent class for additional reference frame options
waitForConfirmation (boolean) – (Optional) Make this operation blocking until confirmation of the spawn has occurred.
- Returns
status - 0 if successful, 1 cannot find this actor, 2 cannot find the parent actor, 3 unknown error, -1 communications error
- Return type
int32
- QLabsQCarFlooring.parent_with_current_world_transform(parentClassID=0, parentActorNumber=0, parentComponent=0, waitForConfirmation=True)
Parents one existing actor to another to create a kinematic relationship while preserving the current world transform of the child actor.
- Parameters
parentClassID (uint32) – See the ID variables in the respective library classes for the class identifier
parentActorNumber (uint32) – User defined unique identifier for the class actor in QLabs
parentComponent (uint32) – 0 for the origin of the parent actor, see the parent class for additional reference frame options
waitForConfirmation (boolean) – (Optional) Make this operation blocking until confirmation of the spawn has occurred.
- Returns
status - 0 if successful, 1 cannot find this actor, 2 cannot find the parent actor, 3 unknown error, -1 communications error
- Return type
int32
- QLabsQCarFlooring.parent_break(waitForConfirmation=True)
Breaks any relationship with a parent actor (if it exists) and preserves the current world transform
- Parameters
waitForConfirmation (boolean) – (Optional) Make this operation blocking until confirmation of the spawn has occurred.
- Returns
status - 0 if successful, 1 cannot find this actor, -1 communications error
- Return type
int32
Configurations
There are 2 configurations (0-1) for the QCar flooring class.
0 - Large QCar Map
1 - Small QCar Map
Tip
See QCar Flooring Tutorial to see the different flooring options.
Connection Points
There are no connections points for the person actor.
QCar Flooring Tutorial
Python Tutorial
Raw to download this tutorial: QCar Floor Mats Tutorial (.py)
.
1"""
2QCar Floor Mats Example
3---------------
4
5.. note::
6
7 Make sure you have Quanser Interactive Labs open before running this
8 example. This example is designed to be run in any of the open world
9 environments.
10
11"""
12
13from qvl.qcar_flooring import QLabsQCarFlooring
14from qvl.qlabs import QuanserInteractiveLabs
15from qvl.free_camera import QLabsFreeCamera
16from qvl.system import QLabsSystem
17
18import time
19import os
20import math
21
22from qvl.walls import QLabsWalls
23
24
25def main():
26
27 # Clears the screen in Windows
28 os.system('cls')
29
30 print("\n\n------------------------------ Communications --------------------------------\n")
31
32 # Creates a server connection with Quanser Interactive Labs and manages
33 # the communications
34 qlabs = QuanserInteractiveLabs()
35
36 # Ensure that QLabs is running on your local machine
37 print("Connecting to QLabs...")
38 if (not qlabs.open("localhost")):
39 print("Unable to connect to QLabs")
40 return
41
42 print("Connected")
43
44 hSystem = QLabsSystem(qlabs)
45 hSystem.set_title_string('QCar Floor Mats Tutorial')
46
47 num_destroyed = qlabs.destroy_all_spawned_actors()
48
49 # Initialize an instance of a camera
50 camera = QLabsFreeCamera(qlabs)
51
52 # Set the spawn of the camera in a specific location
53 camera.spawn([4.945, -3.006, 1.482], [0, 0.201, 2.644], [1, 1, 1], 0, 1)
54
55 # Spawn the camera
56 camera.possess()
57
58 # set locational parameters
59 x_offset = 0.13
60 y_offset = 0
61
62 # Initialize an instance of each configuration of floor mat
63 floor = QLabsQCarFlooring(qlabs)
64 floor1 = QLabsQCarFlooring(qlabs)
65
66 time.sleep(0.5)
67
68 # Spawn the first configuration floor mat
69 floor.spawn_degrees([x_offset, y_offset, 0.001], [0, 0, -90], [1, 1, 1], 0, 1)
70
71 # Initialize instances of walls
72 wall = QLabsWalls(qlabs)
73
74
75
76 # Use 'for' loops to spawn walls on the perimeter of the floor mat and wait for walls to spawn
77 for y in range (5):
78 wall.spawn_degrees([-2.4 + x_offset, (-y*1.0)+2.55 + y_offset, 0.001], [0, 0, 0], [1, 1, 1], 0, 1)
79 #make walls harder to knock down
80 wall.set_enable_dynamics(False)
81 time.sleep(1)
82
83 for x in range (4):
84 wall.spawn_degrees([-1.9 + x + x_offset, 3.05 + y_offset, 0.001], [0, 0, 90], [1, 1, 1], 0, 1)
85 wall.set_enable_dynamics(False)
86
87 time.sleep(1)
88 wall.spawn_degrees([2.174, 2.686, 0.001], [0, 0, 45], [1, 1, 1], 0, 1)
89 wall.set_enable_dynamics(False)
90
91 time.sleep(1)
92
93 for y in range (4):
94 wall.spawn_degrees([2.4 + x_offset, (-y*1.0)+1.68 + y_offset, 0.001], [0, 0, 0], [1, 1, 1,], 0, 1)
95 wall.set_enable_dynamics(False)
96
97 time.sleep(1)
98
99 wall.spawn_degrees([2.334, -2.456, 0.001], [0, 0, -22], [1, 1, 1], 0, 1)
100 wall.set_enable_dynamics(False)
101
102 time.sleep(1)
103
104 for x in range (3):
105 wall.spawn_degrees([-0.56 + x + x_offset, -3.05 + y_offset, 0.001], [0, 0, 90], [1, 1, 1], 0, 1)
106 wall.set_enable_dynamics(False)
107
108 time.sleep(1)
109
110 wall.spawn_degrees([-2.03 + x_offset, -2.275 + y_offset, 0.001], [0, 0, 48], [1, 1, 1], 0, 1)
111 wall.set_enable_dynamics(False)
112 wall.spawn_degrees([-1.575 + x_offset, -2.7 + y_offset, 0.001], [0, 0, 48], [1, 1, 1], 0, 1)
113 wall.set_enable_dynamics(False)
114
115 time.sleep(2)
116
117 # Destroy all of the walls
118 wall.destroy_all_actors_of_class()
119
120 time.sleep(1)
121
122 # Destroy the first configuration floor mat
123 floor.destroy()
124
125 # Spawn the second configuration floor mat
126 floor1.spawn_degrees([0, 0, 0.001], [0, 0, -90], [1, 1, 1], 1, 1)
127
128 time.sleep(1)
129
130 # Spawn the walls around the second floor mat
131
132 wall.spawn_degrees([2.217, -0.819, 0.001], [0, 0, -22], [1, 1, 1], 0, 1)
133 wall.set_enable_dynamics(False)
134
135 time.sleep(1)
136
137 for x in range (3):
138 wall.spawn_degrees([-0.6 + x + x_offset, -1.3, 0.001], [0, 0, 90], [1, 1, 1], 0, 1)
139 wall.set_enable_dynamics(False)
140
141 time.sleep(1)
142
143 wall.spawn_degrees([-2.06 + x_offset, -0.6, 0.001], [0, 0, 48], [1, 1, 1], 0, 1)
144 wall.set_enable_dynamics(False)
145 wall.spawn_degrees([-1.5 + x_offset, -1.1, 0.001], [0, 0, 48], [1, 1, 1], 0, 1)
146 wall.set_enable_dynamics(False)
147
148 time.sleep(1)
149
150 wall.spawn_degrees([-2.3, 0.28, 0.001], [0, 0, 0], [1, 1, 1], 0, 1)
151 wall.set_enable_dynamics(False)
152 wall.spawn_degrees([-2.3, 0.8, 0.001], [0, 0, 0], [1, 1, 1], 0, 1)
153 wall.set_enable_dynamics(False)
154
155 time.sleep(1)
156
157 for x in range (5):
158 wall.spawn_degrees([-1.9 + x + x_offset, 1.32 , 0.001], [0, 0, 90], [1, 1, 1], 0, 1)
159 wall.set_enable_dynamics(False)
160
161 time.sleep(1)
162
163 wall.spawn_degrees([2.4, 0.22, 0.001], [0, 0, 0], [1, 1, 1], 0, 1)
164 wall.set_enable_dynamics(False)
165 wall.spawn_degrees([2.4, 0.8, 0.001], [0, 0, 0], [1, 1, 1], 0, 1)
166 wall.set_enable_dynamics(False)
167
168 time.sleep(2)
169
170 # Destroy all of the walls
171 wall.destroy_all_actors_of_class()
172
173 time.sleep(2)
174
175 # Destroy the second configuration of floor mat
176 floor1.destroy()
177
178 # Closing qlabs
179 qlabs.close()
180 print('Done!')
181
182if __name__ == "__main__":
183 main()
Matlab Tutorial
Raw to download this tutorial: QCar Floor Mats Tutorial (.m)
.
1% QCar Floor Mats Example
2% -------------------------
3%
4% .. note::
5%
6% Make sure you have Quanser Interactive Labs open before running this
7% example. This example is designed to be run in any of the open world
8% environments.
9
10close all;
11clear all;
12clc;
13
14% --------------------------------------------------------------
15% Setting MATLAB Path for the libraries
16% Always keep at the start, it will make sure it finds the correct references
17newPathEntry = fullfile(getenv('QAL_DIR'), 'libraries', 'matlab', 'qvl');
18pathCell = regexp(path, pathsep, 'split');
19if ispc % Windows is not case-sensitive
20 onPath = any(strcmpi(newPathEntry, pathCell));
21else
22 onPath = any(strcmp(newPathEntry, pathCell));
23end
24
25if onPath == 0
26 path(path, newPathEntry)
27 savepath
28end
29% --------------------------------------------------------------
30
31fprintf('\n\n------------------------------ Communications --------------------------------\n\n');
32
33qlabs = QuanserInteractiveLabs();
34connection_established = qlabs.open('localhost');
35
36if connection_established == false
37 disp("Failed to open connection.")
38 return
39end
40
41disp('Connected')
42
43num_destroyed = qlabs.destroy_all_spawned_actors();
44
45fprintf('%d actors destroyed', num_destroyed, '');
46
47% Use hSystem to set the tutorial title on the qlabs display screen
48hSystem = QLabsSystem(qlabs);
49hSystem.set_title_string('QCar Floor Mats Tutorial')
50
51% Delete any previous QCar instances and stop any running spawn models
52qlabs.destroy_all_spawned_actors();
53
54% Initialize an instance of a camera
55camera = QLabsFreeCamera(qlabs);
56
57% Set the spawn of the camera in a specific location
58camera.spawn([4.945, -3.006, 1.482], [0, 0.201, 2.644], [1, 1, 1], 0, 1)
59
60% Spawn the camera
61camera.possess();
62
63% set locational parameters
64x_offset = 0.13;
65y_offset = 0;
66
67% Initialize an instance of each configuration of floor mat
68floor = QLabsQCarFlooring(qlabs);
69floor1 = QLabsQCarFlooring(qlabs);
70
71pause(0.5);
72
73
74% Spawn the first configuration floor mat
75floor.spawn_degrees([x_offset, y_offset, 0.001], [0, 0, -90], [1, 1, 1], 0, 1);
76
77
78% Initialize instances of walls
79wall = QLabsWalls(qlabs);
80
81% Use 'for' loops to spawn walls on the perimeter of the floor mat and wait for walls to spawn
82for y = 0:5
83 wall.spawn_degrees([-2.4 + x_offset, (-y*1.0)+2.55 + y_offset, 0.001], [0, 0, 0], [1, 1, 1], 0, 1);
84 % make walls harder to knock down
85 wall.set_enable_dynamics(false);
86end
87
88pause(1);
89
90for x = 0:3
91 wall.spawn_degrees([-1.9 + x + x_offset, 3.05 + y_offset, 0.001], [0, 0, 90], [1, 1, 1], 0, 1);
92 wall.set_enable_dynamics(false);
93end
94
95pause(1);
96
97wall.spawn_degrees([2.174, 2.686, 0.001], [0, 0, 45], [1, 1, 1], 0, 1);
98wall.set_enable_dynamics(false);
99
100pause(1);
101
102for y = 0:3
103 wall.spawn_degrees([2.4 + x_offset, (-y*1.0)+1.68 + y_offset, 0.001], [0, 0, 0], [1, 1, 1,], 0, 1);
104 wall.set_enable_dynamics(false);
105end
106
107pause(1);
108
109wall.spawn_degrees([2.334, -2.456, 0.001], [0, 0, -22], [1, 1, 1], 0, 1)
110wall.set_enable_dynamics(false);
111
112pause(1);
113
114for x = 0:2
115 wall.spawn_degrees([-0.56 + x + x_offset, -3.05 + y_offset, 0.001], [0, 0, 90], [1, 1, 1], 0, 1);
116 wall.set_enable_dynamics(false);
117end
118
119pause(1);
120
121wall.spawn_degrees([-2.03 + x_offset, -2.275 + y_offset, 0.001], [0, 0, 48], [1, 1, 1], 0, 1);
122wall.set_enable_dynamics(false);
123wall.spawn_degrees([-1.575 + x_offset, -2.7 + y_offset, 0.001], [0, 0, 48], [1, 1, 1], 0, 1);
124wall.set_enable_dynamics(false);
125
126pause(2);
127
128% Destroy all of the walls
129wall.destroy_all_actors_of_class();
130
131pause(1);
132
133% Destroy the first configuration floor mat
134floor.destroy();
135
136% Spawn the second configuration floor mat
137floor1.spawn_degrees([0, 0, 0.001], [0, 0, -90], [1, 1, 1], 1, 1);
138
139pause(1);
140
141% Spawn the walls around the second floor mat
142
143wall.spawn_degrees([2.217, -0.819, 0.001], [0, 0, -22], [1, 1, 1], 0, 1)
144wall.set_enable_dynamics(false);
145
146pause(1);
147
148for x = 0:2
149 wall.spawn_degrees([-0.6 + x + x_offset, -1.3, 0.001], [0, 0, 90], [1, 1, 1], 0, 1);
150 wall.set_enable_dynamics(false);
151end
152
153pause(1);
154
155wall.spawn_degrees([-2.06 + x_offset, -0.6, 0.001], [0, 0, 48], [1, 1, 1], 0, 1);
156wall.set_enable_dynamics(false);
157wall.spawn_degrees([-1.5 + x_offset, -1.1, 0.001], [0, 0, 48], [1, 1, 1], 0, 1);
158wall.set_enable_dynamics(false);
159
160pause(1);
161
162wall.spawn_degrees([-2.3, 0.28, 0.001], [0, 0, 0], [1, 1, 1], 0, 1);
163wall.set_enable_dynamics(false);
164wall.spawn_degrees([-2.3, 0.8, 0.001], [0, 0, 0], [1, 1, 1], 0, 1);
165wall.set_enable_dynamics(false);
166
167pause(1);
168
169for x = 0:4
170 wall.spawn_degrees([-1.9 + x + x_offset, 1.32 , 0.001], [0, 0, 90], [1, 1, 1], 0, 1);
171 wall.set_enable_dynamics(false);
172end
173
174pause(1);
175
176wall.spawn_degrees([2.4, 0.22, 0.001], [0, 0, 0], [1, 1, 1], 0, 1);
177wall.set_enable_dynamics(false);
178wall.spawn_degrees([2.4, 0.8, 0.001], [0, 0, 0], [1, 1, 1], 0, 1);
179wall.set_enable_dynamics(false);
180
181pause(2);
182
183% Destroy all of the walls
184wall.destroy_all_actors_of_class();
185
186pause(2);
187
188% Destroy the second configuration of floor mat
189floor1.destroy();
190
191% Closing qlabs
192qlabs.close();
193disp('Done!');