Pre-Finale Simulation World

Adding Static Obstacles

To add obstacles into the simulation environment, navigate to ~/ros2ws/src/sim_gazebo_bringup/config in the software stack and open the gen_params.json file.

To add obstacles navigate to the "embedded_models"_ sub-tag in the "world_params"_ tag. Then copy the following code:

					"model": "Raceway2",
					"name": "Raceway_1_track",
					"pose": "0 0 0.04000 0 0 0"
				},
				"embed_model_1": {
					"model": "start_point",
					"name": "start_point_1",
					"pose": "0.533241 0 0.067473 0 0 0"
				},
				"embed_model_2": {
					"model": "start_point",
					"name": "start_point_2",
					"pose": "-0.533241 0 0.067473 0 0 0"
				},
				"embed_model_3": {
					"model": "turn_right_sign",
					"name": "turn_left_1",
					"pose": "6.961647 6.999404 0.141243 0 0 0.224956"
				},
				"embed_model_4": {
					"model": "turn_right_sign",
					"name": "turn_left_2",
					"pose": "7.157476 7.866743 0.139078 0 0 -0.480452"
				},
				"embed_model_8": {
					"model": "turn_left_sign",
					"name": "turn_left_3",
					"pose": "-0.001217 2.517102 0.141243 0 0 1.561054"
				},
				"embed_model_9": {
					"model": "turn_left_sign",
					"name": "turn_left_4",
					"pose": "-0.450366 3.231226 0.141243 0 0 0.563165"
				},
				"embed_model_5": {
					"model": "turn_left_sign",
					"name": "turn_right_0",
					"pose": "6.101090 7.838730 0.141243 0 0 -1.401961"
				},				
				"embed_model_6": {
					"model": "turn_left_sign",
					"name": "turn_right_1",
					"pose": "6.039118 7.043794 0.141243 0 0 -1.401962"
				},
				"embed_model_7": {
					"model": "turn_left_sign",
					"name": "turn_right_2",
					"pose": "6.850454 6.458070 0.317739 0 0 -2.318629"
				},
				"embed_model_10": {
					"model": "stop_traffic_sign",
					"name": "stop_traffic_sign",
					"pose": "1.394454 1.362193 0.153013 0 0 1.582700"
				},
				"embed_model_11": {
					"model": "finish_line",
					"name": "finish_line",
					"pose": "1.264966 1.625857 0.014189 0 0 1.546246"
				},
				"embed_model_12": {
					"model": "turn_right_sign",
					"name": "turn_right_01",
					"pose": "6.036990 -1.957740 0.141243 0 0 -3.010565"
				},
				"embed_model_13": {
					"model": "turn_right_sign",
					"name": "turn_right_02",
					"pose": "5.892650 -1.129460 0.141243 0 0 -3.010571"
				},
				"embed_model_14": {
					"model": "turn_right_sign",
					"name": "turn_right_03",
					"pose": "7.008253 -1.155979 0.141243 0 0 -0.034782"
				},
				"embed_model_15": {
					"model": "turn_right_sign",
					"name": "turn_right_04",
					"pose": "6.967960 -1.997830 0.141243 0 0 -0.034782"
				},
				"embed_model_16": {
					"model": "car",
					"name": "car_1",
					"pose": "1.520010 -2.371180 0 0 0 0"
				},
				"embed_model_17": {
					"model": "car_blue",
					"name": "car_2",
					"pose": "3.778930 -0.209861 0 0 0 0"
				},
				"embed_model_18": {
					"model": "dumpster2",
					"name": "dumpster_1",
					"pose": "6.209020 3.039650 0 0 0 0"
				},
				"embed_model_19": {
					"model": "dumpster2",
					"name": "dumpster_2",
					"pose": "6.787890 3.078500 0 0 0 0"
				},
				"embed_model_20": {
					"model": "Construction_Cone_mini",
					"name": "Construction_Cone_1",
					"pose": "5.196230 7.230290 0 0 0 0"
				},
				"embed_model_21": {
					"model": "Construction_Cone_mini",
					"name": "Construction_Cone_2",
					"pose": "4.985940 7.626090 0 0 0 0"
				},
				"embed_model_22": {
					"model": "Construction_Cone_mini",
					"name": "Construction_Cone_3",
					"pose": "4.866470 7.247080 0 0 0 0"
				},
				"embed_model_23": {
					"model": "Construction_Cone_mini",
					"name": "Construction_Cone_4",
					"pose": "4.835070 7.643900 0 0 0 0"
				},
				"embed_model_24": {
					"model": "Construction_Cone_mini",
					"name": "Construction_Cone_5",
					"pose": "4.604640 7.258980 0 0 0 0"
				},
				"embed_model_25": {
					"model": "Construction_Cone_mini",
					"name": "Construction_Cone_6",
					"pose": "4.439520 7.363690 0 0 0 0"
				},
				"embed_model_26": {
					"model": "Construction_Cone_mini",
					"name": "Construction_Cone_7",
					"pose": "4.256437 7.416032 0 0 0 0"
				},
				"embed_model_27": {
					"model": "Construction_Cone_mini",
					"name": "Construction_Cone_8",
					"pose": "4.100130 7.720550 0 0 0 0"
				},
				"embed_model_28": {
					"model": "Construction_Cone_mini",
					"name": "Construction_Cone_9",
					"pose": "3.975580 7.679610 0 0 0 0"
				},
				"embed_model_29": {
					"model": "Construction_Cone_mini",
					"name": "Construction_Cone_10",
					"pose": "3.976610 7.328560 0 0 0 0"
				},
				"embed_model_30": {
					"model": "Construction_Cone_mini",
					"name": "Construction_Cone_11",
					"pose": "3.767880 7.589030 0 0 0 0"
				},
				"embed_model_31": {
					"model": "Construction_Cone_mini",
					"name": "Construction_Cone_12",
					"pose": "3.637660 7.525750 0 0 0 0"
				},
				"embed_model_32": {
					"model": "barricade",
					"name": "barricade_1",
					"pose": "0.326338 5.906060 0.030935 0 0 0"
				},
				"embed_model_33": {
					"model": "barricade",
					"name": "barricade_2",
					"pose": "-0.245990 5.526630 0.030935 0 0 0"
				},
				"embed_model_34": {
					"model": "barricade",
					"name": "barricade_3",
					"pose": "0.297154 4.981470 0.030935 0 0 0"
				},
				"embed_model_35": {
					"model": "barricade",
					"name": "barricade_4",
					"pose": "-0.268218 4.486810 0.030935 0 0 0"
				},
				"embed_model_36": {
					"model": "barricade",
					"name": "barricade_5",
					"pose": "1.716760 8.794882 0.479858 0 0 0"
				},
				"embed_model_37": {
					"model": "person_2",
					"name": "person_1",
					"pose": "6.255060 0.113153 0 0 0 0"
				},
				"embed_model_38": {
					"model": "person_1",
					"name": "person_2",
					"pose": "3.677107 4.207261 0.468489 0 0 0"
				},
				"embed_model_39": {
					"model": "postbox2",
					"name": "postbox_1",
					"pose": "6.805440 -3.120050 0 0 0 0"
				},
				"embed_model_40": {
					"model": "oak_tree_mini",
					"name": "tree_1",
					"pose": "9.417270 -3.485010 0 0 0 0"
				},
				"embed_model_41": {
					"model": "oak_tree_mini",
					"name": "tree_2",
					"pose": "9.611970 4.774720 0 0 0 0"
				},
				"embed_model_42": {
					"model": "oak_tree_mini",
					"name": "tree_3",
					"pose": "6.616697 9.718095 0.441569 0 0 0"
				},
				"embed_model_43": {
					"model": "traffic_light_red",
					"name": "traffic_light",
					"pose": "1.322568 7.290203 0.680126 0 0 1.528681"
				},
				"embed_model_44": {
					"model": "fire_hydrant2",
					"name": "fire_hydrant_1",
					"pose": "8.499910 6.678930 0 0 0 0"
				},
				"embed_model_45": {
					"model": "start_point",
					"name": "start_point_0001",
					"pose": "6.305489 1.876002 0 0 0 0"
				},
				 "embed_model_48": {
					"model": "barricade",
					"name": "barricade",
					"pose": "2.194609 -1.300408 0.018361 -0.093369 -0.009292 0"
				},
				 "embed_model_51": {
					"model": "car_blue",
					"name": "car62",
					"pose": "6.771580 0.623883 0 0 0 0"
				},
				
			          "embed_model_58": {
					"model": "car_blue",
					"name": "car63",
					"pose": "6.774790 1.007196 0 0 0 0"
				},
			          "embed_model_59": {
					"model": "car_blue",
					"name": "car64",
					"pose": "6.781790 0.823987 0 0 0 0"
				},
			          "embed_model_60": {
					"model": "postbox2",
					"name": "postbox_2",
					"pose": "6.707060 -4.025880 0 0 0 0"
				},
			          "embed_model_61": {
					"model": "postbox2",
					"name": "postbox_3",
					"pose": "6.873150 -4.212660 0 0 0 0"
				},
			          "embed_model_62": {
					"model": "postbox2",
					"name": "postbox_4",
					"pose": "7.157350 -4.368260 0 0 0 0"
				},
			          "embed_model_63": {
					"model": "oak_tree_mini",
					"name": "tree_4",
					"pose": "7.443300 -4.516780 0 0 0 0"
				},
			          "embed_model_64": {
					"model": "oak_tree_mini",
					"name": "tree_5",
					"pose": "7.727030 -4.570390 0 0 0 0"
				},
			          "embed_model_65": {
					"model": "oak_tree_mini",
					"name": "tree_6",
					"pose": "7.960390 -4.552590 0 0 0 0"
				},
			          "embed_model_69": {
					"model": "fire_hydrant2",
					"name": "fire_hydrant_5",
					"pose": "8.310840 -3.954310 0 0 0 0"
				},
			          "embed_model_70": {
					"model": "postbox2",
					"name": "postbox_5",
					"pose": "6.707060 -4.025880 0 0 0 0"
				},
			          "embed_model_71": {
					"model": "fire_hydrant2",
					"name": "fire_hydrant_6",
					"pose": "8.485060 -3.880990 0 0 0 0"
				},
			          "embed_model_72": {
					"model": "car",
					"name": "car1",
					"pose": "5.964630 -0.569309 0 0 0 0"
				},
			          "embed_model_73": {
					"model": "car",
					"name": "car2",
					"pose": "8.089680 3.431590 0 0 0 0"
				},
			          "embed_model_77": {
					"model": "car_red",
					"name": "car6",
					"pose": "2.798470 7.770910 0 0 0 0"
				},
			          "embed_model_78": {
					"model": "car_blue",
					"name": "car7",
					"pose": "3.219050 7.743590 0 0 0 -0.722550"
				},
			          "embed_model_79": {
					"model": "car",
					"name": "car11",
					"pose": "2.379117 7.836338 0 0 0 -0.722550"
				},
			          "embed_model_80": {
					"model": "car_blue",
					"name": "car12",
					"pose": "3.019249 7.028828 0 0 0 -0.722550"
				},
			          "embed_model_81": {
					"model": "car",
					"name": "car13",
					"pose": "2.240290 7.064150 0 0 0 -0.722550"
				},
			          "embed_model_90": {
					"model": "oak_tree_mini",
					"name": "tree_18",
					"pose": "9.798663 5.240543 0 0 0 0"
				},
			          "embed_model_91": {
					"model": "oak_tree_mini",
					"name": "tree_19",
					"pose": "9.713505 4.396950 0 0 0 0"
				},
			          "embed_model_92": {
					"model": "oak_tree_mini",
					"name": "tree_20",
					"pose": "9.656664 4.021600 0 0 0 0"
				},
			          "embed_model_93": {
					"model": "oak_tree_mini",
					"name": "tree_21",
					"pose": "9.749110 5.729170 0 0 0 0"
				},
			          "embed_model_94": {
					"model": "oak_tree_mini",
					"name": "tree_22",
					"pose": "9.573650 6.120090 0 0 0 0"
				},
			          "embed_model_95": {
					"model": "oak_tree_mini",
					"name": "tree_23",
					"pose": "9.475110 6.494870 0 0 0 0"
				}
				
			},

Adding Moving Obstacles

First download the given .zip file and save it in ~/ros2ws/nxp_gazebo/ directory.

To add moving obstacles into the simulation navigate to gen.world.jinja located at **~/ros2ws/nxp_gazebo/worlds ** in the software stack. Navigate to line 115. Below this line instert following lines of code:

    <include>
      <uri>model://car_blue</uri>
      <name>moving_car</name>
      <pose>-1.562250 3.107690 0 0 0 0</pose>
      <plugin name="push_animate" filename="/home/aditya/ros2ws/nxp_gazebo/custom_pluggins/car_animation/build/libanimated_car.so"/>
    </include>
    
    <include>
      <uri>model://person_1</uri>
      <name>moving_person_1</name>
      <pose>-2.071470 0.387716 0.018239 0 0 1.612632</pose>
      <plugin name="push_animate2" filename="/home/aditya/ros2ws/nxp_gazebo/custom_pluggins/person_animation_x_dir/build/libanimated_person_xDir.so"/>
    </include>
    
    <include>
      <uri>model://person_1</uri>
      <pose>2.603500 0.543162 0.018239 0 0 0</pose>
      <name>moving_person_2</name>
      <plugin name="push_animate3" filename="/home/aditya/ros2ws/nxp_gazebo/custom_pluggins/person_animation_y_dir/build/libanimated_person_yDir.so"/>
    </include>

Please make sure to provide the full path of the plugin to be used as many times gazebo have problems in locating custom plugin files. Also replace the /home/aditya/ros2ws with the path in your own system.

Make traffic light change colour during simulation

In spawn_light.py file, replace the content of the file with following lines of code:

from time import sleep

spawn_green="gz model --spawn-file=/home/aditya/ros2ws/nxp_gazebo/models/traffic_light_green/model.sdf --model-name=lightGreen -x 1.496568 -y 7.320472 -z 0.778152 -R -3.121948 -P -0.006105 -Y 1.503726"
del_green="gz model -m lightGreen -d"

while(True):	
	sleep(10)
	os.system(spawn_green)
	sleep(10)
	os.system(del_green)	

While simulation is running, open a new terminal and run the following command:

$ python3 spawn_light.py

Run the above command only when gazebo has started and initialized succesfully

This script will enable changing of red light to green light (and vice versa) in simulation after 10 seconds interval.

Pre-finale World Visualised

The gazebo world will look like the image below:

Last updated