diff --git a/README.en.md b/README.en.md
index f760ba0..1f545a3 100644
--- a/README.en.md
+++ b/README.en.md
@@ -89,13 +89,13 @@ USV
- Founders: Kun Xiao, Shaochang Tan
- Adviser: Xiangke Wang
-- Developers: Kun Xiao, Shaochang Tan, Guanzheng Wang, Lan Ma, Qipeng Wang, Xinyu Hu, Wenxin Hu, Yi Bao, Ruoqiao Guan, Xinyu Hu, Keyan Chen, Gao Chen
+- Developers: Kun Xiao, Shaochang Tan, Guanzheng Wang, Lan Ma, Qipeng Wang, Xinyu Hu, Ruoqiao Guan, Wenxin Hu, Feng Yi, Jiarun Yan, Yi Bao, Keyan Chen, Gao Chen
### Contributers
Sincerely thank you for your contribution to XTDrone.
-Changhao Sun, Zihan Lin, Yao He
+Changhao Sun, Ying Nie, Fanjie Kong, Chaoran Li, Xudong Li, Zihan Lin, Yao He
diff --git a/README.md b/README.md
index 1c6a346..665ac42 100644
--- a/README.md
+++ b/README.md
@@ -93,7 +93,7 @@ Xiao, K., Ma, L., Tan, S., Cong, Y., Wang, X.: Implementation of UAV Coordinatio
- 创立者:肖昆,谭劭昌
- 指导老师:王祥科
-- 开发团队:肖昆,谭劭昌,王冠政,马澜,王齐鹏,胡新雨,胡文信,鲍毅,管若乔,陈科研,陈皋
+- 开发团队:肖昆,谭劭昌,王冠政,马澜,王齐鹏,胡新雨,管若乔,胡文信,易丰,颜佳润,鲍毅,陈科研,陈皋
### 加入我们
@@ -103,7 +103,7 @@ Xiao, K., Ma, L., Tan, S., Cong, Y., Wang, X.: Implementation of UAV Coordinatio
非常感谢你们为XTDrone的贡献
-孙长浩 林梓涵 何瑶
+孙长浩,聂莹,孔凡杰,李超然,李旭东,林梓涵,何瑶
### 捐赠
diff --git a/contributer_demo/demo1/README.md b/contributer_demo/demo1/README.md
new file mode 100644
index 0000000..c8dad8d
--- /dev/null
+++ b/contributer_demo/demo1/README.md
@@ -0,0 +1,22 @@
+
+# UAV Collaborative Simulation
+
+To simulate UAVs Collaborative for target searching , recognition and localization.
+
+## Introduction
+To run the project, do as follows:
+### 1.Source Download
+```bash
+git clone https://codechina.csdn.net/qq_44715174/uav_collaborative_simulation.git
+```
+### 2.Simulation Environment
+1.copy .launch and .world to px4
+```bash
+cd uav_collaborative_simulation
+cp worlds/* ~/PX4_Firmware/Tools/sitl_gazebo/worlds/
+cp launch/* ~/PX4_Firmware/launch/
+```
+2.run the simulation environment
+```bash
+roslaunch px4 cic2021.launch
+```
diff --git a/contributer_demo/demo1/doc/rostopic list b/contributer_demo/demo1/doc/rostopic list
new file mode 100644
index 0000000..15a6f27
--- /dev/null
+++ b/contributer_demo/demo1/doc/rostopic list
@@ -0,0 +1,400 @@
+/clock
+/diagnostics
+/gazebo/link_states
+/gazebo/model_states
+/gazebo/parameter_descriptions
+/gazebo/parameter_updates
+/gazebo/set_link_state
+/gazebo/set_model_state
+/rosout
+/rosout_agg
+/tf
+/tf_static
+/typhoon_h480_0/cgo3_camera/camera_info
+/typhoon_h480_0/cgo3_camera/image_raw
+/typhoon_h480_0/cgo3_camera/image_raw/compressed
+/typhoon_h480_0/cgo3_camera/image_raw/compressed/parameter_descriptions
+/typhoon_h480_0/cgo3_camera/image_raw/compressed/parameter_updates
+/typhoon_h480_0/cgo3_camera/image_raw/compressedDepth
+/typhoon_h480_0/cgo3_camera/image_raw/compressedDepth/parameter_descriptions
+/typhoon_h480_0/cgo3_camera/image_raw/compressedDepth/parameter_updates
+/typhoon_h480_0/cgo3_camera/image_raw/theora
+/typhoon_h480_0/cgo3_camera/image_raw/theora/parameter_descriptions
+/typhoon_h480_0/cgo3_camera/image_raw/theora/parameter_updates
+/typhoon_h480_0/cgo3_camera/parameter_descriptions
+/typhoon_h480_0/cgo3_camera/parameter_updates
+/typhoon_h480_0/mavlink/from
+/typhoon_h480_0/mavlink/gcs_ip
+/typhoon_h480_0/mavlink/to
+/typhoon_h480_0/mavros/actuator_control
+/typhoon_h480_0/mavros/adsb/send
+/typhoon_h480_0/mavros/adsb/vehicle
+/typhoon_h480_0/mavros/altitude
+/typhoon_h480_0/mavros/battery
+/typhoon_h480_0/mavros/cam_imu_sync/cam_imu_stamp
+/typhoon_h480_0/mavros/companion_process/status
+/typhoon_h480_0/mavros/debug_value/debug
+/typhoon_h480_0/mavros/debug_value/debug_vector
+/typhoon_h480_0/mavros/debug_value/named_value_float
+/typhoon_h480_0/mavros/debug_value/named_value_int
+/typhoon_h480_0/mavros/debug_value/send
+/typhoon_h480_0/mavros/esc_info
+/typhoon_h480_0/mavros/esc_status
+/typhoon_h480_0/mavros/estimator_status
+/typhoon_h480_0/mavros/extended_state
+/typhoon_h480_0/mavros/fake_gps/mocap/tf
+/typhoon_h480_0/mavros/global_position/compass_hdg
+/typhoon_h480_0/mavros/global_position/global
+/typhoon_h480_0/mavros/global_position/gp_lp_offset
+/typhoon_h480_0/mavros/global_position/gp_origin
+/typhoon_h480_0/mavros/global_position/home
+/typhoon_h480_0/mavros/global_position/local
+/typhoon_h480_0/mavros/global_position/raw/fix
+/typhoon_h480_0/mavros/global_position/raw/gps_vel
+/typhoon_h480_0/mavros/global_position/raw/satellites
+/typhoon_h480_0/mavros/global_position/rel_alt
+/typhoon_h480_0/mavros/global_position/set_gp_origin
+/typhoon_h480_0/mavros/gps_rtk/rtk_baseline
+/typhoon_h480_0/mavros/gps_rtk/send_rtcm
+/typhoon_h480_0/mavros/gpsstatus/gps1/raw
+/typhoon_h480_0/mavros/gpsstatus/gps1/rtk
+/typhoon_h480_0/mavros/gpsstatus/gps2/raw
+/typhoon_h480_0/mavros/gpsstatus/gps2/rtk
+/typhoon_h480_0/mavros/hil/actuator_controls
+/typhoon_h480_0/mavros/hil/controls
+/typhoon_h480_0/mavros/hil/gps
+/typhoon_h480_0/mavros/hil/imu_ned
+/typhoon_h480_0/mavros/hil/optical_flow
+/typhoon_h480_0/mavros/hil/rc_inputs
+/typhoon_h480_0/mavros/hil/state
+/typhoon_h480_0/mavros/home_position/home
+/typhoon_h480_0/mavros/home_position/set
+/typhoon_h480_0/mavros/imu/data
+/typhoon_h480_0/mavros/imu/data_raw
+/typhoon_h480_0/mavros/imu/diff_pressure
+/typhoon_h480_0/mavros/imu/mag
+/typhoon_h480_0/mavros/imu/static_pressure
+/typhoon_h480_0/mavros/imu/temperature_baro
+/typhoon_h480_0/mavros/imu/temperature_imu
+/typhoon_h480_0/mavros/landing_target/lt_marker
+/typhoon_h480_0/mavros/landing_target/pose
+/typhoon_h480_0/mavros/landing_target/pose_in
+/typhoon_h480_0/mavros/local_position/accel
+/typhoon_h480_0/mavros/local_position/odom
+/typhoon_h480_0/mavros/local_position/pose
+/typhoon_h480_0/mavros/local_position/pose_cov
+/typhoon_h480_0/mavros/local_position/velocity_body
+/typhoon_h480_0/mavros/local_position/velocity_body_cov
+/typhoon_h480_0/mavros/local_position/velocity_local
+/typhoon_h480_0/mavros/log_transfer/raw/log_data
+/typhoon_h480_0/mavros/log_transfer/raw/log_entry
+/typhoon_h480_0/mavros/manual_control/control
+/typhoon_h480_0/mavros/manual_control/send
+/typhoon_h480_0/mavros/mission/reached
+/typhoon_h480_0/mavros/mission/waypoints
+/typhoon_h480_0/mavros/mocap/pose
+/typhoon_h480_0/mavros/mount_control/command
+/typhoon_h480_0/mavros/mount_control/orientation
+/typhoon_h480_0/mavros/obstacle/send
+/typhoon_h480_0/mavros/odometry/in
+/typhoon_h480_0/mavros/odometry/out
+/typhoon_h480_0/mavros/onboard_computer/status
+/typhoon_h480_0/mavros/param/param_value
+/typhoon_h480_0/mavros/play_tune
+/typhoon_h480_0/mavros/px4flow/ground_distance
+/typhoon_h480_0/mavros/px4flow/raw/optical_flow_rad
+/typhoon_h480_0/mavros/px4flow/raw/send
+/typhoon_h480_0/mavros/px4flow/temperature
+/typhoon_h480_0/mavros/radio_status
+/typhoon_h480_0/mavros/rc/in
+/typhoon_h480_0/mavros/rc/out
+/typhoon_h480_0/mavros/rc/override
+/typhoon_h480_0/mavros/setpoint_accel/accel
+/typhoon_h480_0/mavros/setpoint_attitude/cmd_vel
+/typhoon_h480_0/mavros/setpoint_attitude/thrust
+/typhoon_h480_0/mavros/setpoint_position/global
+/typhoon_h480_0/mavros/setpoint_position/global_to_local
+/typhoon_h480_0/mavros/setpoint_position/local
+/typhoon_h480_0/mavros/setpoint_raw/attitude
+/typhoon_h480_0/mavros/setpoint_raw/global
+/typhoon_h480_0/mavros/setpoint_raw/local
+/typhoon_h480_0/mavros/setpoint_raw/target_attitude
+/typhoon_h480_0/mavros/setpoint_raw/target_global
+/typhoon_h480_0/mavros/setpoint_raw/target_local
+/typhoon_h480_0/mavros/setpoint_trajectory/desired
+/typhoon_h480_0/mavros/setpoint_trajectory/local
+/typhoon_h480_0/mavros/setpoint_velocity/cmd_vel
+/typhoon_h480_0/mavros/setpoint_velocity/cmd_vel_unstamped
+/typhoon_h480_0/mavros/state
+/typhoon_h480_0/mavros/statustext/recv
+/typhoon_h480_0/mavros/statustext/send
+/typhoon_h480_0/mavros/target_actuator_control
+/typhoon_h480_0/mavros/time_reference
+/typhoon_h480_0/mavros/timesync_status
+/typhoon_h480_0/mavros/trajectory/desired
+/typhoon_h480_0/mavros/trajectory/generated
+/typhoon_h480_0/mavros/trajectory/path
+/typhoon_h480_0/mavros/vfr_hud
+/typhoon_h480_0/mavros/vision_pose/pose
+/typhoon_h480_0/mavros/vision_pose/pose_cov
+/typhoon_h480_0/mavros/vision_speed/speed_twist_cov
+/typhoon_h480_0/mavros/wind_estimation
+/typhoon_h480_1/cgo3_camera/camera_info
+/typhoon_h480_1/cgo3_camera/image_raw
+/typhoon_h480_1/cgo3_camera/image_raw/compressed
+/typhoon_h480_1/cgo3_camera/image_raw/compressed/parameter_descriptions
+/typhoon_h480_1/cgo3_camera/image_raw/compressed/parameter_updates
+/typhoon_h480_1/cgo3_camera/image_raw/compressedDepth
+/typhoon_h480_1/cgo3_camera/image_raw/compressedDepth/parameter_descriptions
+/typhoon_h480_1/cgo3_camera/image_raw/compressedDepth/parameter_updates
+/typhoon_h480_1/cgo3_camera/image_raw/theora
+/typhoon_h480_1/cgo3_camera/image_raw/theora/parameter_descriptions
+/typhoon_h480_1/cgo3_camera/image_raw/theora/parameter_updates
+/typhoon_h480_1/cgo3_camera/parameter_descriptions
+/typhoon_h480_1/cgo3_camera/parameter_updates
+/typhoon_h480_1/mavlink/from
+/typhoon_h480_1/mavlink/gcs_ip
+/typhoon_h480_1/mavlink/to
+/typhoon_h480_1/mavros/actuator_control
+/typhoon_h480_1/mavros/adsb/send
+/typhoon_h480_1/mavros/adsb/vehicle
+/typhoon_h480_1/mavros/altitude
+/typhoon_h480_1/mavros/battery
+/typhoon_h480_1/mavros/cam_imu_sync/cam_imu_stamp
+/typhoon_h480_1/mavros/companion_process/status
+/typhoon_h480_1/mavros/debug_value/debug
+/typhoon_h480_1/mavros/debug_value/debug_vector
+/typhoon_h480_1/mavros/debug_value/named_value_float
+/typhoon_h480_1/mavros/debug_value/named_value_int
+/typhoon_h480_1/mavros/debug_value/send
+/typhoon_h480_1/mavros/esc_info
+/typhoon_h480_1/mavros/esc_status
+/typhoon_h480_1/mavros/estimator_status
+/typhoon_h480_1/mavros/extended_state
+/typhoon_h480_1/mavros/fake_gps/mocap/tf
+/typhoon_h480_1/mavros/global_position/compass_hdg
+/typhoon_h480_1/mavros/global_position/global
+/typhoon_h480_1/mavros/global_position/gp_lp_offset
+/typhoon_h480_1/mavros/global_position/gp_origin
+/typhoon_h480_1/mavros/global_position/home
+/typhoon_h480_1/mavros/global_position/local
+/typhoon_h480_1/mavros/global_position/raw/fix
+/typhoon_h480_1/mavros/global_position/raw/gps_vel
+/typhoon_h480_1/mavros/global_position/raw/satellites
+/typhoon_h480_1/mavros/global_position/rel_alt
+/typhoon_h480_1/mavros/global_position/set_gp_origin
+/typhoon_h480_1/mavros/gps_rtk/rtk_baseline
+/typhoon_h480_1/mavros/gps_rtk/send_rtcm
+/typhoon_h480_1/mavros/gpsstatus/gps1/raw
+/typhoon_h480_1/mavros/gpsstatus/gps1/rtk
+/typhoon_h480_1/mavros/gpsstatus/gps2/raw
+/typhoon_h480_1/mavros/gpsstatus/gps2/rtk
+/typhoon_h480_1/mavros/hil/actuator_controls
+/typhoon_h480_1/mavros/hil/controls
+/typhoon_h480_1/mavros/hil/gps
+/typhoon_h480_1/mavros/hil/imu_ned
+/typhoon_h480_1/mavros/hil/optical_flow
+/typhoon_h480_1/mavros/hil/rc_inputs
+/typhoon_h480_1/mavros/hil/state
+/typhoon_h480_1/mavros/home_position/home
+/typhoon_h480_1/mavros/home_position/set
+/typhoon_h480_1/mavros/imu/data
+/typhoon_h480_1/mavros/imu/data_raw
+/typhoon_h480_1/mavros/imu/diff_pressure
+/typhoon_h480_1/mavros/imu/mag
+/typhoon_h480_1/mavros/imu/static_pressure
+/typhoon_h480_1/mavros/imu/temperature_baro
+/typhoon_h480_1/mavros/imu/temperature_imu
+/typhoon_h480_1/mavros/landing_target/lt_marker
+/typhoon_h480_1/mavros/landing_target/pose
+/typhoon_h480_1/mavros/landing_target/pose_in
+/typhoon_h480_1/mavros/local_position/accel
+/typhoon_h480_1/mavros/local_position/odom
+/typhoon_h480_1/mavros/local_position/pose
+/typhoon_h480_1/mavros/local_position/pose_cov
+/typhoon_h480_1/mavros/local_position/velocity_body
+/typhoon_h480_1/mavros/local_position/velocity_body_cov
+/typhoon_h480_1/mavros/local_position/velocity_local
+/typhoon_h480_1/mavros/log_transfer/raw/log_data
+/typhoon_h480_1/mavros/log_transfer/raw/log_entry
+/typhoon_h480_1/mavros/manual_control/control
+/typhoon_h480_1/mavros/manual_control/send
+/typhoon_h480_1/mavros/mission/reached
+/typhoon_h480_1/mavros/mission/waypoints
+/typhoon_h480_1/mavros/mocap/pose
+/typhoon_h480_1/mavros/mount_control/command
+/typhoon_h480_1/mavros/mount_control/orientation
+/typhoon_h480_1/mavros/obstacle/send
+/typhoon_h480_1/mavros/odometry/in
+/typhoon_h480_1/mavros/odometry/out
+/typhoon_h480_1/mavros/onboard_computer/status
+/typhoon_h480_1/mavros/param/param_value
+/typhoon_h480_1/mavros/play_tune
+/typhoon_h480_1/mavros/px4flow/ground_distance
+/typhoon_h480_1/mavros/px4flow/raw/optical_flow_rad
+/typhoon_h480_1/mavros/px4flow/raw/send
+/typhoon_h480_1/mavros/px4flow/temperature
+/typhoon_h480_1/mavros/radio_status
+/typhoon_h480_1/mavros/rc/in
+/typhoon_h480_1/mavros/rc/out
+/typhoon_h480_1/mavros/rc/override
+/typhoon_h480_1/mavros/setpoint_accel/accel
+/typhoon_h480_1/mavros/setpoint_attitude/cmd_vel
+/typhoon_h480_1/mavros/setpoint_attitude/thrust
+/typhoon_h480_1/mavros/setpoint_position/global
+/typhoon_h480_1/mavros/setpoint_position/global_to_local
+/typhoon_h480_1/mavros/setpoint_position/local
+/typhoon_h480_1/mavros/setpoint_raw/attitude
+/typhoon_h480_1/mavros/setpoint_raw/global
+/typhoon_h480_1/mavros/setpoint_raw/local
+/typhoon_h480_1/mavros/setpoint_raw/target_attitude
+/typhoon_h480_1/mavros/setpoint_raw/target_global
+/typhoon_h480_1/mavros/setpoint_raw/target_local
+/typhoon_h480_1/mavros/setpoint_trajectory/desired
+/typhoon_h480_1/mavros/setpoint_trajectory/local
+/typhoon_h480_1/mavros/setpoint_velocity/cmd_vel
+/typhoon_h480_1/mavros/setpoint_velocity/cmd_vel_unstamped
+/typhoon_h480_1/mavros/state
+/typhoon_h480_1/mavros/statustext/recv
+/typhoon_h480_1/mavros/statustext/send
+/typhoon_h480_1/mavros/target_actuator_control
+/typhoon_h480_1/mavros/time_reference
+/typhoon_h480_1/mavros/timesync_status
+/typhoon_h480_1/mavros/trajectory/desired
+/typhoon_h480_1/mavros/trajectory/generated
+/typhoon_h480_1/mavros/trajectory/path
+/typhoon_h480_1/mavros/vfr_hud
+/typhoon_h480_1/mavros/vision_pose/pose
+/typhoon_h480_1/mavros/vision_pose/pose_cov
+/typhoon_h480_1/mavros/vision_speed/speed_twist_cov
+/typhoon_h480_1/mavros/wind_estimation
+/typhoon_h480_2/cgo3_camera/camera_info
+/typhoon_h480_2/cgo3_camera/image_raw
+/typhoon_h480_2/cgo3_camera/image_raw/compressed
+/typhoon_h480_2/cgo3_camera/image_raw/compressed/parameter_descriptions
+/typhoon_h480_2/cgo3_camera/image_raw/compressed/parameter_updates
+/typhoon_h480_2/cgo3_camera/image_raw/compressedDepth
+/typhoon_h480_2/cgo3_camera/image_raw/compressedDepth/parameter_descriptions
+/typhoon_h480_2/cgo3_camera/image_raw/compressedDepth/parameter_updates
+/typhoon_h480_2/cgo3_camera/image_raw/theora
+/typhoon_h480_2/cgo3_camera/image_raw/theora/parameter_descriptions
+/typhoon_h480_2/cgo3_camera/image_raw/theora/parameter_updates
+/typhoon_h480_2/cgo3_camera/parameter_descriptions
+/typhoon_h480_2/cgo3_camera/parameter_updates
+/typhoon_h480_2/mavlink/from
+/typhoon_h480_2/mavlink/gcs_ip
+/typhoon_h480_2/mavlink/to
+/typhoon_h480_2/mavros/actuator_control
+/typhoon_h480_2/mavros/adsb/send
+/typhoon_h480_2/mavros/adsb/vehicle
+/typhoon_h480_2/mavros/altitude
+/typhoon_h480_2/mavros/battery
+/typhoon_h480_2/mavros/cam_imu_sync/cam_imu_stamp
+/typhoon_h480_2/mavros/companion_process/status
+/typhoon_h480_2/mavros/debug_value/debug
+/typhoon_h480_2/mavros/debug_value/debug_vector
+/typhoon_h480_2/mavros/debug_value/named_value_float
+/typhoon_h480_2/mavros/debug_value/named_value_int
+/typhoon_h480_2/mavros/debug_value/send
+/typhoon_h480_2/mavros/esc_info
+/typhoon_h480_2/mavros/esc_status
+/typhoon_h480_2/mavros/estimator_status
+/typhoon_h480_2/mavros/extended_state
+/typhoon_h480_2/mavros/fake_gps/mocap/tf
+/typhoon_h480_2/mavros/global_position/compass_hdg
+/typhoon_h480_2/mavros/global_position/global
+/typhoon_h480_2/mavros/global_position/gp_lp_offset
+/typhoon_h480_2/mavros/global_position/gp_origin
+/typhoon_h480_2/mavros/global_position/home
+/typhoon_h480_2/mavros/global_position/local
+/typhoon_h480_2/mavros/global_position/raw/fix
+/typhoon_h480_2/mavros/global_position/raw/gps_vel
+/typhoon_h480_2/mavros/global_position/raw/satellites
+/typhoon_h480_2/mavros/global_position/rel_alt
+/typhoon_h480_2/mavros/global_position/set_gp_origin
+/typhoon_h480_2/mavros/gps_rtk/rtk_baseline
+/typhoon_h480_2/mavros/gps_rtk/send_rtcm
+/typhoon_h480_2/mavros/gpsstatus/gps1/raw
+/typhoon_h480_2/mavros/gpsstatus/gps1/rtk
+/typhoon_h480_2/mavros/gpsstatus/gps2/raw
+/typhoon_h480_2/mavros/gpsstatus/gps2/rtk
+/typhoon_h480_2/mavros/hil/actuator_controls
+/typhoon_h480_2/mavros/hil/controls
+/typhoon_h480_2/mavros/hil/gps
+/typhoon_h480_2/mavros/hil/imu_ned
+/typhoon_h480_2/mavros/hil/optical_flow
+/typhoon_h480_2/mavros/hil/rc_inputs
+/typhoon_h480_2/mavros/hil/state
+/typhoon_h480_2/mavros/home_position/home
+/typhoon_h480_2/mavros/home_position/set
+/typhoon_h480_2/mavros/imu/data
+/typhoon_h480_2/mavros/imu/data_raw
+/typhoon_h480_2/mavros/imu/diff_pressure
+/typhoon_h480_2/mavros/imu/mag
+/typhoon_h480_2/mavros/imu/static_pressure
+/typhoon_h480_2/mavros/imu/temperature_baro
+/typhoon_h480_2/mavros/imu/temperature_imu
+/typhoon_h480_2/mavros/landing_target/lt_marker
+/typhoon_h480_2/mavros/landing_target/pose
+/typhoon_h480_2/mavros/landing_target/pose_in
+/typhoon_h480_2/mavros/local_position/accel
+/typhoon_h480_2/mavros/local_position/odom
+/typhoon_h480_2/mavros/local_position/pose
+/typhoon_h480_2/mavros/local_position/pose_cov
+/typhoon_h480_2/mavros/local_position/velocity_body
+/typhoon_h480_2/mavros/local_position/velocity_body_cov
+/typhoon_h480_2/mavros/local_position/velocity_local
+/typhoon_h480_2/mavros/log_transfer/raw/log_data
+/typhoon_h480_2/mavros/log_transfer/raw/log_entry
+/typhoon_h480_2/mavros/manual_control/control
+/typhoon_h480_2/mavros/manual_control/send
+/typhoon_h480_2/mavros/mission/reached
+/typhoon_h480_2/mavros/mission/waypoints
+/typhoon_h480_2/mavros/mocap/pose
+/typhoon_h480_2/mavros/mount_control/command
+/typhoon_h480_2/mavros/mount_control/orientation
+/typhoon_h480_2/mavros/obstacle/send
+/typhoon_h480_2/mavros/odometry/in
+/typhoon_h480_2/mavros/odometry/out
+/typhoon_h480_2/mavros/onboard_computer/status
+/typhoon_h480_2/mavros/param/param_value
+/typhoon_h480_2/mavros/play_tune
+/typhoon_h480_2/mavros/px4flow/ground_distance
+/typhoon_h480_2/mavros/px4flow/raw/optical_flow_rad
+/typhoon_h480_2/mavros/px4flow/raw/send
+/typhoon_h480_2/mavros/px4flow/temperature
+/typhoon_h480_2/mavros/radio_status
+/typhoon_h480_2/mavros/rc/in
+/typhoon_h480_2/mavros/rc/out
+/typhoon_h480_2/mavros/rc/override
+/typhoon_h480_2/mavros/setpoint_accel/accel
+/typhoon_h480_2/mavros/setpoint_attitude/cmd_vel
+/typhoon_h480_2/mavros/setpoint_attitude/thrust
+/typhoon_h480_2/mavros/setpoint_position/global
+/typhoon_h480_2/mavros/setpoint_position/global_to_local
+/typhoon_h480_2/mavros/setpoint_position/local
+/typhoon_h480_2/mavros/setpoint_raw/attitude
+/typhoon_h480_2/mavros/setpoint_raw/global
+/typhoon_h480_2/mavros/setpoint_raw/local
+/typhoon_h480_2/mavros/setpoint_raw/target_attitude
+/typhoon_h480_2/mavros/setpoint_raw/target_global
+/typhoon_h480_2/mavros/setpoint_raw/target_local
+/typhoon_h480_2/mavros/setpoint_trajectory/desired
+/typhoon_h480_2/mavros/setpoint_trajectory/local
+/typhoon_h480_2/mavros/setpoint_velocity/cmd_vel
+/typhoon_h480_2/mavros/setpoint_velocity/cmd_vel_unstamped
+/typhoon_h480_2/mavros/state
+/typhoon_h480_2/mavros/statustext/recv
+/typhoon_h480_2/mavros/statustext/send
+/typhoon_h480_2/mavros/target_actuator_control
+/typhoon_h480_2/mavros/time_reference
+/typhoon_h480_2/mavros/timesync_status
+/typhoon_h480_2/mavros/trajectory/desired
+/typhoon_h480_2/mavros/trajectory/generated
+/typhoon_h480_2/mavros/trajectory/path
+/typhoon_h480_2/mavros/vfr_hud
+/typhoon_h480_2/mavros/vision_pose/pose
+/typhoon_h480_2/mavros/vision_pose/pose_cov
+/typhoon_h480_2/mavros/vision_speed/speed_twist_cov
+/typhoon_h480_2/mavros/wind_estimation
+
diff --git a/contributer_demo/demo1/launch/cic2021.launch b/contributer_demo/demo1/launch/cic2021.launch
new file mode 100644
index 0000000..b435393
--- /dev/null
+++ b/contributer_demo/demo1/launch/cic2021.launch
@@ -0,0 +1,108 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/contributer_demo/demo1/src/CMakeLists.txt b/contributer_demo/demo1/src/CMakeLists.txt
new file mode 120000
index 0000000..66dd650
--- /dev/null
+++ b/contributer_demo/demo1/src/CMakeLists.txt
@@ -0,0 +1 @@
+/opt/ros/melodic/share/catkin/cmake/toplevel.cmake
\ No newline at end of file
diff --git a/contributer_demo/demo1/src/formation/CMakeLists.txt b/contributer_demo/demo1/src/formation/CMakeLists.txt
new file mode 100644
index 0000000..21453e5
--- /dev/null
+++ b/contributer_demo/demo1/src/formation/CMakeLists.txt
@@ -0,0 +1,24 @@
+cmake_minimum_required(VERSION 2.8.3)
+project(formation)
+
+find_package(catkin REQUIRED COMPONENTS
+ geometry_msgs
+ rosmsg
+ rospy
+ std_msgs
+ message_generation
+)
+
+
+generate_messages(
+ DEPENDENCIES
+ std_msgs
+ geometry_msgs
+)
+
+catkin_package(
+ CATKIN_DEPENDS
+ std_msgs
+ geometry_msgs
+)
+
diff --git a/contributer_demo/demo1/src/formation/package.xml b/contributer_demo/demo1/src/formation/package.xml
new file mode 100644
index 0000000..259a5ae
--- /dev/null
+++ b/contributer_demo/demo1/src/formation/package.xml
@@ -0,0 +1,27 @@
+
+
+ formation
+ 0.0.0
+ The PX4 Formation Control package
+ malan
+ TODO
+
+ catkin
+ geometry_msgs
+ rosmsg
+ rospy
+ std_msgs
+ message_generation
+ geometry_msgs
+ rosmsg
+ rospy
+ std_msgs
+ geometry_msgs
+ rosmsg
+ rospy
+ std_msgs
+ message_runtime
+
+
+
+
diff --git a/contributer_demo/demo1/src/formation/script/enviroment.py b/contributer_demo/demo1/src/formation/script/enviroment.py
new file mode 100644
index 0000000..aeacfa8
--- /dev/null
+++ b/contributer_demo/demo1/src/formation/script/enviroment.py
@@ -0,0 +1,97 @@
+import numpy as np
+import matplotlib.pyplot as plt
+import random
+
+class Env():
+ def __init__(self, vehicle_num, target_num, map_size, visualized):
+ self.visualized = visualized
+ self.vehicles_position = np.zeros(vehicle_num, dtype=np.int32)
+ self.vehicles_speed = np.zeros(vehicle_num, dtype=np.int32)
+ self.targets = np.zeros(shape=(target_num + 1, 4), dtype=np.int32)
+ self.distant_mat = np.zeros((target_num + 1, target_num + 1), dtype=np.float32)
+ self.map_size_x = map_size[0]
+ self.map_size_y = map_size[1]
+ self.speed_range = [1, 1, 1]
+ self.time_lim = max(self.map_size_x, self.map_size_y )/ self.speed_range[0]
+ self.vehicles_lefttime = np.ones(vehicle_num, dtype=np.float32) * self.time_lim
+ self.assignment = [[] for i in range(vehicle_num)]
+ self.total_reward = 0
+ for i in range(self.vehicles_speed.shape[0]):
+ speed_type = random.randint(0,2)
+ self.vehicles_speed[i] = self.speed_range[speed_type]
+ self.time_limit = max(self.map_size_x, self.map_size_y) / self.speed_range[0]
+ self.end = False
+ self.task_generator()
+
+ def task_generator(self):
+ for i in range(self.targets.shape[0]-1):
+ self.targets[i+1,0] = random.randint(1,self.map_size_x) - 0.5*self.map_size_x # x position
+ self.targets[i+1,1] = random.randint(1,self.map_size_y) - 0.5*self.map_size_y # y position
+ self.targets[i + 1, 2] = random.randint(1, 10) # reward
+ self.targets[i + 1, 3] = random.randint(5, 30) # time consumption to finish the mission
+ self.targets[self.targets.shape[0]-2, 0] = 20
+ self.targets[self.targets.shape[0] - 2, 1] = -27
+ for i in range(self.targets.shape[0]):
+ for j in range(self.targets.shape[0]-i):
+ self.distant_mat[i, j] = np.linalg.norm(self.targets[i, :2] - self.targets[j, :2])
+
+ def visualize(self):
+ if self.assignment == None:
+ plt.scatter(x=0,y=0,s=200,c='k')
+ plt.scatter(x=self.targets[1:,0],y=self.targets[1:,1],s=self.targets[1:,2]*10,c='r')
+ plt.title('Target distribution')
+ plt.savefig('task_pic/'+'/'+self.algorithm+ "-%d-%d.png" % (self.play,self.rond))
+ plt.cla()
+ else:
+ plt.title('Task assignment by '+self.algorithm +', total reward : '+str(self.total_reward))
+ plt.scatter(x=0,y=0,s=200,c='k')
+ plt.scatter(x=self.targets[1:,0],y=self.targets[1:,1],s=self.targets[1:,2]*10,c='r')
+ for i in range(len(self.assignment)):
+ trajectory = np.array([[0,0,20]])
+ for j in range(len(self.assignment[i])):
+ position = self.targets[self.assignment[i][j],:3]
+ trajectory = np.insert(trajectory,j+1,values=position,axis=0)
+ plt.scatter(x=trajectory[1:,0],y=trajectory[1:,1],s=trajectory[1:,2]*10,c='b')
+ plt.plot(trajectory[:,0], trajectory[:,1])
+ plt.savefig('task_picture/'+self.algorithm+ "-%d-%d.png" % (self.play,self.rond))
+ plt.cla()
+
+ def get_total_reward(self):
+ for i in range(len(self.assignment)):
+ speed = self.vehicles_speed[i]
+ for j in range(len(self.assignment[i])):
+ position = self.targets[self.assignment[i][j],:4]
+ self.total_reward = self.total_reward + position[2]
+ if j == 0:
+ self.vehicles_lefttime[i] = self.vehicles_lefttime[i] - np.linalg.norm(position[:2]) / speed - position[3]
+ else:
+ self.vehicles_lefttime[i] = self.vehicles_lefttime[i] - np.linalg.norm(position[:2]-position_last[:2]) / speed - position[3]
+ position_last = position
+ if self.vehicles_lefttime[i] > self.time_lim:
+ self.end = True
+ break
+ if self.end:
+ self.total_reward = 0
+ break
+
+ def run(self, assignment, algorithm, play, rond):
+ self.assignment = assignment
+ self.algorithm = algorithm
+ self.play = play
+ self.rond = rond
+ self.get_total_reward()
+ if self.visualized:
+ self.visualize()
+
+ def reset(self):
+ self.vehicles_position = np.zeros(self.vehicles_position.shape[0],dtype=np.int32)
+ self.vehicles_lefttime = np.ones(self.vehicles_position.shape[0],dtype=np.float32) * self.time_lim
+ self.targets[:,2] = self.targets_value
+ self.total_reward = 0
+ self.reward = 0
+ self.end = False
+
+
+
+
+
diff --git a/contributer_demo/demo1/src/formation/script/formation_gcs.py b/contributer_demo/demo1/src/formation/script/formation_gcs.py
new file mode 100644
index 0000000..b8bccb7
--- /dev/null
+++ b/contributer_demo/demo1/src/formation/script/formation_gcs.py
@@ -0,0 +1,181 @@
+# -*- coding: UTF-8 -*-
+"""
+Framework for Formation GCS
+
+* send cmd by ros topic
+
+Before running this code, you need to make sure ros master started:
+if not:
+$ roscore # start ros master
+
+And then, you can run this code via:
+$ python formation_gcs.py # start gcs
+"""
+
+import rospy
+from std_msgs.msg import String
+import sys, select, os
+import tty, termios
+import copy
+from enviroment import Env
+from ga2 import GA2
+from geometry_msgs.msg import PoseStamped
+import math
+
+msg2ui = """
+Welcome use gcs!
+Let's go!
+---------------------------
+ 1 2 3 4 5 6 7 8 9 0
+ t
+ h l
+
+t : takeoff
+l : land
+h : hover
+0 : search target
+1 : formation 1
+2 : fortion 2
+3~9 : extendable mission(eg.different formation configuration)
+q/Q : quit
+"""
+
+uav_type = 'typhoon_h480'
+
+uav_bias = [[0,0,0],[0,3,0],[0,-3,0]]
+
+class GroundControler:
+ def __init__(self):
+ self.settings = termios.tcgetattr(sys.stdin)
+ self.gcs_cmd = String()
+ self.gcs_cmd = 'start'
+ self.formation_mode = {'FORM_0':'search', 'FORM_1':'straight', 'FORM_2':'triangle'}
+ # ros publishers
+ self.gcs_cmd_pub = rospy.Publisher("/formation_gcs/cmd", String, queue_size=10)
+
+ #ga
+ self.map_size_x = 80
+ self.map_size_y = 80
+ self.map_size = [self.map_size_x, self.map_size_y]
+ self.vehicle_num = 3
+ self.target_num = 10
+ self.target = [PoseStamped() for i in range(self.vehicle_num)]
+ self.env = Env(self.vehicle_num, self.target_num, self.map_size, False)
+ self.ga2_result = None
+ self.ga2 = GA2(self.vehicle_num, self.env.vehicles_speed, self.target_num, self.env.targets, self.env.time_limit)
+ self.ga_flag = False
+ self.pos_i = [1 for i in range(self.vehicle_num)]
+
+ # ros subscribers
+ for i in range(self.vehicle_num):
+ rospy.Subscriber(uav_type+ '_' + str(i) + "/mavros/local_position/pose", PoseStamped, self.local_pose_callback, i, queue_size = 2)
+
+ # ros publishers
+ self.local_target_pub = [rospy.Publisher(uav_type + '_' + str(i) + '/mavros/setpoint_position/local', PoseStamped, queue_size=10) for i in range(self.vehicle_num)]
+
+ self.global_pose = [PoseStamped() for i in range(self.vehicle_num)]
+
+ print("Ground Controller Start!")
+
+ def working(self):
+ rospy.init_node("gcs_control_node")
+ rate = rospy.Rate(60)
+ self.print_ui()
+ while rospy.is_shutdown() is False:
+ key = self.getKey()
+ if key == 't' :
+ self.gcs_cmd = 'TAKEOFF'
+ self.print_ui()
+ print(self.gcs_cmd)
+ self.gcs_cmd_pub.publish(self.gcs_cmd)
+
+ elif key == 'l':
+ self.gcs_cmd = 'AUTO.LAND'
+ self.print_ui()
+ print(self.gcs_cmd)
+ self.gcs_cmd_pub.publish(self.gcs_cmd)
+
+ elif key == 'h':
+ self.gcs_cmd = 'HOVOR'
+ self.print_ui()
+ print(self.gcs_cmd)
+ self.gcs_cmd_pub.publish(self.gcs_cmd)
+
+ else:
+ if key == '0':
+ if not self.ga_flag:
+ self.ga2_result = self.ga2.run()[0]
+ # print(self.ga2_result[0])
+ # print(self.env.targets[self.ga2_result[0]])
+ # for uav_i in range(self.vehicle_num):
+ # for i in range(len(self.ga2_result[uav_i])):
+ # print(self.env.targets[self.ga2_result[uav_i]][i][0],self.env.targets[self.ga2_result[uav_i]][i][1])
+ self.ga_flag = True
+ self.gcs_cmd = 'FORM_' + key
+ self.print_ui()
+ print(self.formation_mode[self.gcs_cmd])
+ self.gcs_cmd_pub.publish(self.gcs_cmd)
+
+ for i in range(2):
+ if key == str(i+1):
+ self.gcs_cmd = 'FORM_'+key
+ self.print_ui()
+ print(self.formation_mode[self.gcs_cmd])
+ self.gcs_cmd_pub.publish(self.gcs_cmd)
+
+ if key == 'q' or key =='Q':
+ break
+ if self.ga_flag:
+ for uav_i in range(self.vehicle_num):
+ if uav_i == 1:
+ print(self.pos_i[uav_i],self.env.targets[self.ga2_result[uav_i]][self.pos_i[uav_i]])
+ if self.is_get_target(uav_i,self.env.targets[self.ga2_result[uav_i]][self.pos_i[uav_i]][0],self.env.targets[self.ga2_result[uav_i]][self.pos_i[uav_i]][1]):
+ self.pos_i[uav_i] += 1
+ if self.pos_i[uav_i] < len(self.ga2_result[uav_i]):
+ self.target[uav_i] = self.construct_target(self.env.targets[self.ga2_result[uav_i]][self.pos_i[uav_i]][0],self.env.targets[self.ga2_result[uav_i]][self.pos_i[uav_i]][1])
+ else:
+ self.pos_i[uav_i] -= 1
+ # print(self.pos_i[uav_i])
+ self.local_target_pub[uav_i].publish(self.target[uav_i])
+ print(self.target[uav_i])
+
+ rate.sleep()
+ termios.tcsetattr(sys.stdin, termios.TCSADRAIN, self.settings)
+
+ def construct_target(self,x,y):
+ target_pos = PoseStamped()
+ target_pos.pose.position.x = x
+ target_pos.pose.position.y = y
+ target_pos.pose.position.z = 6
+ print(target_pos)
+ return target_pos
+
+ def is_get_target(self,i,x,y):
+ if math.sqrt((self.global_pose[i].pose.position.x-x)*(self.global_pose[i].pose.position.x-x)+\
+ (self.global_pose[i].pose.position.y-y)*(self.global_pose[i].pose.position.y-y))< 0.5:
+ return True
+ else:
+ return False
+
+ def local_pose_callback(self, msg, i):
+ self.global_pose[i] = copy.deepcopy(msg)
+ self.global_pose[i].pose.position.x += uav_bias[i][0]
+ self.global_pose[i].pose.position.y += uav_bias[i][1]
+ self.global_pose[i].pose.position.z += uav_bias[i][2]
+
+ def getKey(self):
+ tty.setraw(sys.stdin.fileno())
+ rlist, _, _ = select.select([sys.stdin], [], [], 0.1)
+ if rlist:
+ key = sys.stdin.read(1)
+ else:
+ key = ''
+ termios.tcsetattr(sys.stdin, termios.TCSADRAIN, self.settings)
+ return key
+
+ def print_ui(self):
+ print(msg2ui)
+
+if __name__ == '__main__':
+ groundcontroler = GroundControler()
+ groundcontroler.working()
\ No newline at end of file
diff --git a/contributer_demo/demo1/src/formation/script/formation_sim.py b/contributer_demo/demo1/src/formation/script/formation_sim.py
new file mode 100644
index 0000000..fc1d8c4
--- /dev/null
+++ b/contributer_demo/demo1/src/formation/script/formation_sim.py
@@ -0,0 +1,314 @@
+# -*- coding: UTF-8 -*-
+"""
+Framework for Formation Control
+
+* To control all UAV in Gazebo(simulation environment) using MPI
+
+Before running this code, you need to launch your simulation Environment and px4 via:
+$ roslaunch px4 cic2021.launch # 3 UAVs in simulation
+
+And then, you can run this code via:
+$ mpiexec -n 3 python formation_sim.py # 3 UAVs in simulation
+"""
+
+import time
+from pyquaternion import Quaternion
+from mpi4py import MPI
+import rospy
+from mavros_msgs.msg import State, PositionTarget
+from mavros_msgs.srv import CommandBool, SetMode, SetMavFrame
+from geometry_msgs.msg import PoseStamped, TwistStamped
+from sensor_msgs.msg import Imu, NavSatFix
+from std_msgs.msg import String
+import numpy as np
+import copy
+from fuzzy_pid import FuzzyPID
+
+
+uav_type = 'typhoon_h480'
+comm = MPI.COMM_WORLD
+uav_id = comm.Get_rank()
+uav_num = comm.Get_size()
+
+uav_bias = [[0,0,0],[0,3,0],[0,-3,0]]
+
+class Px4Controller:
+ def __init__(self):
+ self.uav_id = uav_id
+ self.namespace = uav_type + '_' + "{proc}".format(proc=self.uav_id)
+
+ self.imu = Imu()
+ self.gps = NavSatFix()
+ self.local_pose = PoseStamped()
+
+ self.neighbor_id = []
+
+ self.current_heading = None
+ self.takeoff_height = 6
+
+ self.cur_target_pose = None
+ self.target_yaw = 0
+
+ self.takeoff_target_pose = PoseStamped()
+ self.hover_target_pose = PoseStamped()
+ self.target_pose = PoseStamped()
+ self.target_vel = TwistStamped()
+ self.global_pose = [PoseStamped() for i in range(uav_num)]
+
+ self.received_new_task = False
+ self.arm_state = False
+ self.mavros_state = State()
+
+ self.gcs_cmd = String()
+ self.last_gcs_cmd = String()
+ self.form_flag = 0
+
+ # control parameters
+ self.fuzzy_pid = FuzzyPID()
+ self.Kpx = 1
+ self.Kpy = 1
+ self.Kpz = 1
+ self.Kpw = 1
+ self.velxy_max = 1
+ self.velz_max = 1
+ self.w_max = 0.5
+
+ # ros subscribers
+ for i in range(uav_num):
+ rospy.Subscriber(uav_type+ '_' + str(i) + "/mavros/local_position/pose", PoseStamped, self.local_pose_callback, i, queue_size = 2)
+ # self.local_vel_sub = rospy.Subscriber(uav_type + '_' + str(i) + "/mavros/local_position/velocity_local", TwistStamped, self.local_vel_callback)
+ self.mavros_sub = rospy.Subscriber(self.namespace + "/mavros/state", State, self.mavros_state_callback)
+ self.gps_sub = rospy.Subscriber(self.namespace + "/mavros/global_position/global", NavSatFix, self.gps_callback)
+ self.imu_sub = rospy.Subscriber(self.namespace + "/mavros/imu/data", Imu, self.imu_callback)
+ self.gcs_cmd_sub = rospy.Subscriber("/formation_gcs/cmd", String, self.gcs_cmd_callback)
+
+ # ros publishers
+ self.local_target_pub = rospy.Publisher(self.namespace + '/mavros/setpoint_raw/local', PositionTarget, queue_size=10)
+ self.twist_target_pub = rospy.Publisher(self.namespace + '/mavros/setpoint_velocity/cmd_vel', TwistStamped, queue_size=10)
+
+ # ros services
+ self.armService = rospy.ServiceProxy(self.namespace + '/mavros/cmd/arming', CommandBool)
+ self.flightModeService = rospy.ServiceProxy(self.namespace + '/mavros/set_mode', SetMode)
+ self.frameService = rospy.ServiceProxy(self.namespace + '/mavros/setpoint_velocity/mav_frame', SetMavFrame)
+ print(self.namespace, ": Px4 Controller Start!")
+
+ def working(self):
+ rospy.init_node(self.namespace + "_control_node")
+ time.sleep(1) #waiting or node init 1s
+ rate = rospy.Rate(60)
+
+ for i in range(10):
+ if self.current_heading is not None:
+ print(self.namespace, ": initialization finished !")
+ break
+ else:
+ print(self.namespace, ": Waiting for initialization...")
+ time.sleep(0.5)
+
+ while rospy.is_shutdown() is False:
+
+ if self.gcs_cmd == 'TAKEOFF':
+ self.last_gcs_cmd = 'TAKEOFF'
+ self.form_flag = 0
+ if self.mavros_state != 'OFFBOARD':
+ self.flight_mode_set(mode='OFFBOARD')
+ if not self.arm_state:
+ self.arm()
+
+ self.target_pose = self.construct_target(self.takeoff_target_pose.pose.position.x,
+ self.takeoff_target_pose.pose.position.y , self.takeoff_height,
+ self.current_heading)
+ self.local_target_pub.publish(self.target_pose)
+
+ if self.takeoff_detection():
+ print(self.namespace, ": Takeoff Success !")
+ else:
+ print(self.namespace, ": Takeoff Failed !!!")
+ # self.frameService(1)
+
+ elif self.gcs_cmd == 'FORM_0':
+ self.last_gcs_cmd = 'FORM_0'
+ if self.mavros_state != 'OFFBOARD':
+ self.flight_mode_set(mode='OFFBOARD')
+
+ elif self.gcs_cmd == 'FORM_1':
+ self.last_gcs_cmd = 'FORM_1'
+ if self.form_flag != 1:
+ self.read_set_file('FORM_1_id','FORM_1_pos')
+ self.form_flag = 1
+ if self.mavros_state != 'OFFBOARD':
+ self.flight_mode_set(mode='OFFBOARD')
+ self.formation_control()
+ self.twist_target_pub.publish(self.target_vel)
+
+ elif self.gcs_cmd == 'FORM_2':
+ self.last_gcs_cmd = 'FORM_2'
+ if self.form_flag != 2:
+ self.read_set_file('FORM_2_id','FORM_2_pos')
+ self.form_flag = 2
+ if self.mavros_state != 'OFFBOARD':
+ self.flight_mode_set(mode='OFFBOARD')
+ self.formation_control()
+ self.twist_target_pub.publish(self.target_vel)
+
+ elif self.gcs_cmd == 'AUTO.LAND':
+ self.last_gcs_cmd = 'AUTO.LAND'
+ self.form_flag = 0
+ if self.mavros_state != "AUTO.LAND":
+ self.flight_mode_set(mode='AUTO.LAND')
+ if (self.mavros_state == 'AUTO.LAND') and (self.local_pose.pose.position.z < 0.05):
+ if self.arm_state:
+ self.disarm()
+ print(self.namespace, ": Land Success!")
+ elif self.gcs_cmd == 'HOVER':
+ self.last_gcs_cmd = 'HOVER'
+ self.form_flag = 0
+ if self.mavros_state != 'OFFBOARD':
+ self.flight_mode_set(mode='OFFBOARD')
+ if not self.arm_state:
+ self.arm()
+
+ self.target_pose = self.construct_target(self.hover_target_pose.pose.position.x,
+ self.hover_target_pose.pose.position.y, self.hover_target_pose.pose.position.z,
+ self.current_heading)
+ self.local_target_pub.publish(self.target_pose)
+ else:
+ self.gcs_cmd = self.last_gcs_cmd
+ self.form_flag = 0
+
+ rate.sleep()
+
+ def formation_control(self):
+ print('formation control here')
+ neighbor_num = len(self.neighbor_id)
+ self.target_vel.twist.linear.x = 0
+ self.target_vel.twist.linear.y = 0
+ self.target_vel.twist.linear.z = 0
+ self.target_vel.twist.angular.x = 0
+ self.target_vel.twist.angular.y = 0
+ self.target_vel.twist.angular.z = self.Kpw*(self.target_yaw-self.current_heading)
+ # print("neighbor_num",neighbor_num)
+ for i in range(neighbor_num):
+ self.target_vel.twist.linear.x += self.global_pose[self.neighbor_id[i]].pose.position.x - self.global_pose[self.uav_id].pose.position.x - \
+ self.all_desired_position[self.neighbor_id[i]][0] + self.all_desired_position[self.uav_id][0]
+ self.target_vel.twist.linear.y += self.global_pose[self.neighbor_id[i]].pose.position.y - self.global_pose[self.uav_id].pose.position.y - \
+ self.all_desired_position[self.neighbor_id[i]][1] + self.all_desired_position[self.uav_id][1]
+ self.target_vel.twist.linear.z += self.global_pose[self.neighbor_id[i]].pose.position.z - self.global_pose[self.uav_id].pose.position.z - \
+ self.all_desired_position[self.neighbor_id[i]][2] + self.all_desired_position[self.uav_id][2]
+
+ self.target_vel.twist.linear.x = self.limit(self.target_vel.twist.linear.x * self.Kpx, -self.velxy_max, self.velxy_max)
+ self.target_vel.twist.linear.y = self.limit(self.target_vel.twist.linear.y * self.Kpy, -self.velxy_max, self.velxy_max)
+ self.target_vel.twist.linear.z = self.limit(self.target_vel.twist.linear.z * self.Kpz, -self.velz_max, self.velz_max)
+ self.target_vel.twist.angular.z = self.limit(self.target_vel.twist.angular.z * self.Kpw, -self.w_max, self.w_max)
+
+ def limit(self, data, min, max):
+ if data <= min:
+ data = min
+ elif data >= max:
+ data = max
+ return data
+
+ def read_set_file(self,txt_id,txt_pos):
+ self.neighbor_id =[]
+ id_path='txt/'+txt_id+'.txt'
+ pos_path='txt/'+txt_pos+'.txt'
+ txt_uav_neighbor_num = np.loadtxt(id_path,dtype=int)
+ self.all_desired_position = np.loadtxt(pos_path)
+ for i in range(0, len(txt_uav_neighbor_num[:, 0])):
+ if txt_uav_neighbor_num[i, 0] == self.uav_id:
+ self.neighbor_id.append(txt_uav_neighbor_num[i, 1])
+ print(self.neighbor_id)
+
+ def construct_target(self, x, y, z, yaw):
+ target_raw_pose = PositionTarget()
+ target_raw_pose.header.stamp = rospy.Time.now()
+
+ target_raw_pose.coordinate_frame = 7
+
+ target_raw_pose.position.x = x
+ target_raw_pose.position.y = y
+ target_raw_pose.position.z = z
+ target_raw_pose.yaw = yaw
+
+ target_raw_pose.type_mask = PositionTarget.IGNORE_VX + PositionTarget.IGNORE_VY + PositionTarget.IGNORE_VZ \
+ + PositionTarget.IGNORE_AFX + PositionTarget.IGNORE_AFY + PositionTarget.IGNORE_AFZ \
+ + PositionTarget.IGNORE_YAW + PositionTarget.IGNORE_YAW_RATE \
+ + PositionTarget.FORCE
+ return target_raw_pose
+
+ '''
+ Callback Function
+ '''
+ def gcs_cmd_callback(self, msg):
+ self.gcs_cmd = msg.data
+
+ def local_pose_callback(self, msg, i):
+ if i == uav_id:
+ self.local_pose = copy.deepcopy(msg)
+ if self.gcs_cmd != 'TAKEOFF':
+ self.takeoff_target_pose = copy.deepcopy(self.local_pose)
+ if self.gcs_cmd !='HOVER':
+ self.hover_target_pose = copy.deepcopy(self.local_pose)
+ self.global_pose[i] = copy.deepcopy(msg)
+ self.global_pose[i].pose.position.x += uav_bias[i][0]
+ self.global_pose[i].pose.position.y += uav_bias[i][1]
+ self.global_pose[i].pose.position.z += uav_bias[i][2]
+ #
+ # def local_vel_callback(self):
+ #
+ def mavros_state_callback(self, msg):
+ self.mavros_state = msg.mode
+ self.arm_state = msg.armed
+
+ def imu_callback(self, msg):
+ self.imu = msg
+ self.current_heading = self.q2yaw(self.imu.orientation)
+
+ def gps_callback(self, msg):
+ self.gps = msg
+
+ '''
+ return yaw from current IMU
+ '''
+ def q2yaw(self, q):
+ if isinstance(q, Quaternion):
+ rotate_z_rad = q.yaw_pitch_roll[0]
+ else:
+ q_ = Quaternion(q.w, q.x, q.y, q.z)
+ rotate_z_rad = q_.yaw_pitch_roll[0]
+
+ return rotate_z_rad
+
+ def arm(self):
+ if self.armService(True):
+ return True
+ else:
+ print("Vehicle arming failed!")
+ return False
+
+ def disarm(self):
+ if self.armService(False):
+ return True
+ else:
+ print("Vehicle disarming failed!")
+ return False
+
+ def flight_mode_set(self, mode):
+ """ mode selectable
+ MANUAL, ACRO, ALTCTL, POSCTL, OFFBOARD, STABILIZED, RATTITUDE
+ AUTO.MISSION, AUTO.LOITER, AUTO.RTL, AUTO.LAND, AUTO.RTGS, AUTO.READY, AUTO.TAKEOFF
+ """
+ if self.flightModeService(custom_mode=mode):
+ return True
+ else:
+ print(self.namespace + mode + "Failed")
+
+ def takeoff_detection(self):
+ if self.local_pose.pose.position.z > 0.2 and self.arm_state:
+ return True
+ else:
+ return False
+
+if __name__ == '__main__':
+ px4controller = Px4Controller()
+ px4controller.working()
diff --git a/contributer_demo/demo1/src/formation/script/fuzzy_pid.py b/contributer_demo/demo1/src/formation/script/fuzzy_pid.py
new file mode 100644
index 0000000..f4e00ec
--- /dev/null
+++ b/contributer_demo/demo1/src/formation/script/fuzzy_pid.py
@@ -0,0 +1,74 @@
+# -*- coding: UTF-8 -*-
+"""
+Fuzzy PID Controller
+
+* To control all UAV in Gazebo(simulation environment) using MPI
+
+Before running this code, you need to launch your simulation Environment and px4 via:
+$ from fuzzy_pid import FuzzyPID() # 3 UAVs in simulation
+
+And then, you can run this code via:
+$ mpiexec -n 3 python formation_sim.py # 3 UAVs in simulation
+"""
+
+import math
+
+#fuzzy table
+CIC_FUZZY_TABLE = [[0,1,2,3],
+ [1,2,3,4],
+ [3,4,4,5],
+ [5,5,6,6]]
+# kp table
+CIC_KP_TABLE = [0.5,0.6,0.8,0.9,1.0,1.1,1.2]
+
+class FuzzyPID():
+ def __init__(self):
+
+ self.fuzzy_table = CIC_FUZZY_TABLE
+ self.kp_table = CIC_KP_TABLE
+ self.ex_range = 5.0
+ self.ey_range = 1.0
+
+ def get_kp(self, ex, ey):
+ vx = self.get_x_approximation(ex)
+ vy = self.get_x_approximation(ey)
+ vx1 = math.floor(vx)
+ vy1 = math.floor(vy)
+ vx2 = vx1 + 1
+ vy2 = vy1 + 1
+ if vx1 > 3:
+ vx1 = 3
+ if vy1 > 3:
+ vy1 = 3
+ if vx2 > 3:
+ vx2 = 3
+ if vy2 > 3:
+ vy2 = 3
+ X2Y = (self.fuzzy_table[vx1][vy2] - self.fuzzy_table[vx1][vy1]) * (vy - vy1) + self.fuzzy_table[vx1][vy1]
+ X1Y = (self.fuzzy_table[vx2][vy2] - self.fuzzy_table[vx2][vy1]) * (vy - vy1) + self.fuzzy_table[vx2][vy1]
+ Y2X = (self.fuzzy_table[vx2][vy1] - self.fuzzy_table[vx1][vy1]) * (vx - vx1) + self.fuzzy_table[vx1][vy1]
+ Y1X = (self.fuzzy_table[vx2][vy2] - self.fuzzy_table[vx1][vy2]) * (vx - vx1) + self.fuzzy_table[vx1][vy2]
+ kp_approximation = (X2Y + X1Y + Y2X + Y1X)/4.0
+ kp1 = math.floor(kp_approximation)
+ kp2 = kp1 + 1
+ if kp1 > 6:
+ kp1 = 6
+ if kp2 > 6:
+ kp2 = 6
+ return (self.kp_table[kp2]-self.kp_table[kp1])*(kp_approximation-kp1)+self.kp_table[kp1]
+
+ def get_x_approximation(self, ex):
+ if ex < 0:
+ ex = -ex
+ return 3*ex/self.ex_range #divide into 3 parts
+
+ def get_y_approximation(self, ey):
+ if ey < 0:
+ ey = -ey
+ return 3*ey/self.ey_range #divide into 3 parts
+
+
+if __name__ == '__main__':
+ fuzzy_pid = FuzzyPID()
+ kp = fuzzy_pid.get_kp(10,50)
+ print(kp)
\ No newline at end of file
diff --git a/contributer_demo/demo1/src/formation/script/ga1.py b/contributer_demo/demo1/src/formation/script/ga1.py
new file mode 100644
index 0000000..532d3a6
--- /dev/null
+++ b/contributer_demo/demo1/src/formation/script/ga1.py
@@ -0,0 +1,195 @@
+import numpy as np
+import random
+import time
+import os
+
+
+class GA1():
+ def __init__(self, vehicle_num, vehicles_speed, target_num, targets, time_lim):
+ # vehicles_speed,targets in the type of narray
+ self.vehicle_num = vehicle_num
+ self.vehicles_speed = vehicles_speed
+ self.target_num = target_num
+ self.targets = targets
+ self.time_lim = time_lim
+ self.map = np.zeros(shape=(target_num+1, target_num+1), dtype=float)
+ self.pop_size = 50
+ self.p_cross = 0.6
+ self.p_mutate = 0.005
+ for i in range(target_num+1):
+ self.map[i, i] = 0
+ for j in range(i):
+ self.map[j, i] = self.map[i, j] = np.linalg.norm(
+ targets[i, :2]-targets[j, :2])
+ self.pop = np.zeros(
+ shape=(self.pop_size, vehicle_num-1+target_num-1), dtype=np.int32)
+ self.ff = np.zeros(self.pop_size, dtype=float)
+ #use vihecle_num-1 numbers to cut the targets into pieces
+ #use target_num-1 numbers to code the queue of targets
+ #encoder()
+ for i in range(self.pop_size):
+ for j in range(vehicle_num-1):
+ self.pop[i, j] = random.randint(0, target_num)
+ for j in range(target_num-1):
+ self.pop[i, vehicle_num+j-1] \
+ = random.randint(0, target_num-j-1)
+ self.ff[i] = self.fitness(self.pop[i, :])
+ self.tmp_pop = np.array([])
+ self.tmp_ff = np.array([])
+ self.tmp_size = 0
+
+ def fitness(self, gene):
+ #to record the break point
+ ins = np.zeros(self.target_num+1, dtype=np.int32)
+ #to decode the queue of targets
+ seq = np.zeros(self.target_num, dtype=np.int32)
+ #ins[self.target_num] = 1
+ for i in range(self.vehicle_num-1):
+ ins[gene[i]] += 1
+ rest = np.array(range(1, self.target_num+1))
+ for i in range(self.target_num-1):
+ seq[i] = rest[gene[i+self.vehicle_num-1]]
+ rest = np.delete(rest, gene[i+self.vehicle_num-1])
+ seq[self.target_num-1] = rest[0]
+ vehicle_num_i = 0 # index of vehicle
+ pre = 0 # index of the last target
+ post = 0 # index of instant point
+ cost = 0
+ reward = 0
+ while vehicle_num_i < self.vehicle_num:
+ if ins[post] > 0:
+ vehicle_num_i += 1
+ ins[post] -= 1
+ pre = 0
+ cost = 0
+ else:
+ cost += self.targets[pre, 3]
+ time_cost = self.map[pre, seq[post]]/self.vehicles_speed[vehicle_num_i]
+ cost += time_cost
+ if cost < self.time_lim:
+ reward += self.targets[seq[post], 2]
+ pre = seq[post]
+ #print("seq[post]",pre)
+ post += 1
+ if post > self.target_num-1:
+ break
+ return reward
+
+ def selection(self):
+ roll = np.zeros(self.tmp_size, dtype=float)
+ roll[0] = self.tmp_ff[0]
+ for i in range(1, self.tmp_size):
+ roll[i] = roll[i-1]+self.tmp_ff[i]
+ for i in range(self.pop_size):
+ xx = random.uniform(0, roll[self.tmp_size-1])
+ j = 0
+ while xx > roll[j]:
+ j += 1
+ self.pop[i, :] = self.tmp_pop[j, :]
+ self.ff[i] = self.tmp_ff[j]
+
+ def crossover(self):
+ new_pop = []
+ new_ff = []
+ new_size = 0
+ for i in range(0, self.pop_size, 2):
+ if random.random() < self.p_cross:
+ x1 = random.randint(0, self.vehicle_num-2)
+ x2 = random.randint(0, self.target_num-2)+self.vehicle_num
+ g1 = self.pop[i, :]
+ g2 = self.pop[i+1, :]
+ g1[x1:x2] = self.pop[i+1, x1:x2]
+ g2[x1:x2] = self.pop[i, x1:x2]
+ new_pop.append(g1)
+ new_pop.append(g2)
+ new_ff.append(self.fitness(g1))
+ new_ff.append(self.fitness(g2))
+ new_size += 2
+ self.tmp_size = self.pop_size+new_size
+ self.tmp_pop = np.zeros(
+ shape=(self.tmp_size, self.vehicle_num-1+self.target_num-1), dtype=np.int32)
+ self.tmp_pop[0:self.pop_size, :] = self.pop
+ self.tmp_pop[self.pop_size:self.tmp_size, :] = np.array(new_pop)
+ self.tmp_ff = np.zeros(self.tmp_size, dtype=float)
+ self.tmp_ff[0:self.pop_size] = self.ff
+ self.tmp_ff[self.pop_size:self.tmp_size] = np.array(new_ff)
+
+ def mutation(self):
+ for i in range(self.tmp_size):
+ flag = False
+ for j in range(self.vehicle_num-1):
+ if random.random() < self.p_mutate:
+ self.tmp_pop[i, j] = random.randint(0, self.target_num)
+ flag = True
+ for j in range(self.target_num-1):
+ if random.random() < self.p_mutate:
+ self.tmp_pop[i, self.vehicle_num+j-1
+ ] = random.randint(0, self.target_num-j-1)
+ flag = True
+ if flag:
+ self.tmp_ff[i] = self.fitness(self.tmp_pop[i, :])
+
+
+
+ def run(self):
+ #print("GA start, pid: %s" % os.getpid())
+ start_time = time.time()
+ gene = np.zeros(
+ shape=(1, self.vehicle_num+self.target_num-1), dtype=np.int32)
+ cut = 0
+ count = 0
+
+ while count < 300:
+ self.crossover()
+ self.mutation()
+ self.selection()
+ new_cut = self.tmp_ff.max()
+ if cut < new_cut:
+ cut = new_cut
+ count = 0
+ gene = self.tmp_pop[np.argmax(self.tmp_ff)]
+ else:
+ count += 1
+
+ ins = np.zeros(self.target_num + 1, dtype=np.int32)
+ seq = np.zeros(self.target_num, dtype=np.int32)
+ #ins[self.target_num] = 1
+ for i in range(self.vehicle_num-1):
+ ins[gene[i]] += 1
+ rest = np.array(range(1, self.target_num + 1))
+ for i in range(self.target_num - 1):
+ seq[i] = rest[gene[i + self.vehicle_num-1]]
+ rest = np.delete(rest, gene[i + self.vehicle_num-1])
+ seq[self.target_num - 1] = rest[0]
+ #print('sequence : ', seq)
+ #print('ins[]: ', ins)
+ task_assignment = [[] for i in range(self.vehicle_num)]
+ i = 0 # index of vehicle
+ pre = 0 # index of last target
+ post = 0 # index of instant point
+ t = 0
+ reward = 0
+ while i < self.vehicle_num:
+ if ins[post] > 0:
+ i += 1
+ ins[post] -= 1
+ pre = 0
+ t = 0
+ else:
+ t += self.targets[pre, 3]
+ past = self.map[pre, seq[post]] / self.vehicles_speed[i]
+ t += past
+ task_assignment[i].append(seq[post])
+ if t < self.time_lim:
+ reward += self.targets[seq[post], 2]
+ pre = seq[post]
+ post += 1
+ if post > self.target_num - 1:
+ break
+ self.reward = reward
+ print("GA result1:", task_assignment)
+ end_time = time.time()
+ print("GA time:", end_time - start_time)
+ print("total reward1:", reward)
+ return task_assignment, end_time - start_time
+
diff --git a/contributer_demo/demo1/src/formation/script/ga2.py b/contributer_demo/demo1/src/formation/script/ga2.py
new file mode 100644
index 0000000..1e1f02e
--- /dev/null
+++ b/contributer_demo/demo1/src/formation/script/ga2.py
@@ -0,0 +1,219 @@
+import numpy as np
+import random
+import time
+import os
+
+
+class GA2():
+ def __init__(self, vehicle_num, vehicles_speed, target_num, targets, time_lim):
+ # vehicles_speed,targets in the type of narray
+ self.vehicle_num = vehicle_num
+ self.vehicles_speed = vehicles_speed
+ self.target_num = target_num
+ self.targets = targets
+ self.time_lim = time_lim
+ self.map = np.zeros(shape=(target_num+1, target_num+1), dtype=float)
+ self.pop_size = 50
+ self.p_cross = 0
+ self.p_cross1 = 0.9
+ self.p_cross2 = 0.6
+ self.p_mutate = 0
+ self.p_mutate1 = 0.1
+ self.p_mutate2 = 0.005
+ self.average_ff = 0
+ self.max_ff = 1
+ for i in range(target_num+1):
+ self.map[i, i] = 0
+ for j in range(i):
+ self.map[j, i] = self.map[i, j] = np.linalg.norm(
+ targets[i, :2]-targets[j, :2])
+ self.pop = np.zeros(
+ shape=(self.pop_size, vehicle_num-1+target_num-1), dtype=np.int32)
+ self.ff = np.zeros(self.pop_size, dtype=float)
+ #use vihecle_num-1 numbers to cut the targets into pieces
+ #use target_num-1 numbers to code the queue of targets
+ #encoder()
+ for i in range(self.pop_size):
+ for j in range(vehicle_num-1):
+ self.pop[i, j] = random.randint(0, target_num)
+ for j in range(target_num-1):
+ self.pop[i, vehicle_num+j-1] \
+ = random.randint(0, target_num-j-1)
+ self.ff[i] = self.fitness(self.pop[i, :])
+ self.tmp_pop = np.array([])
+ self.tmp_ff = np.array([])
+ self.tmp_size = 0
+
+ def fitness(self, gene):
+ #to record the break point
+ ins = np.zeros(self.target_num+1, dtype=np.int32)
+ #to decode the queue of targets
+ seq = np.zeros(self.target_num, dtype=np.int32)
+ #ins[self.target_num] = 1
+ for i in range(self.vehicle_num-1):
+ ins[gene[i]] += 1
+ rest = np.array(range(1, self.target_num+1))
+ for i in range(self.target_num-1):
+ seq[i] = rest[gene[i+self.vehicle_num-1]]
+ rest = np.delete(rest, gene[i+self.vehicle_num-1])
+ seq[self.target_num-1] = rest[0]
+ vehicle_num_i = 0 # index of vehicle
+ pre = 0 # index of the last target
+ post = 0 # index of instant point
+ cost = 0
+ reward = 0
+ while vehicle_num_i < self.vehicle_num:
+ if ins[post] > 0:
+ vehicle_num_i += 1
+ ins[post] -= 1
+ pre = 0
+ cost = 0
+ else:
+ cost += self.targets[pre, 3]
+ time_cost = self.map[pre, seq[post]]/self.vehicles_speed[vehicle_num_i]
+ cost += time_cost
+ if cost < self.time_lim:
+ reward += self.targets[seq[post], 2]
+ pre = seq[post]
+ #print("seq[post]",pre)
+ post += 1
+ if post > self.target_num-1:
+ break
+ return reward
+
+ def selection(self):
+ roll = np.zeros(self.tmp_size, dtype=float)
+ roll[0] = self.tmp_ff[0]
+ for i in range(1, self.tmp_size):
+ roll[i] = roll[i-1]+self.tmp_ff[i]
+ for i in range(self.pop_size):
+ xx = random.uniform(0, roll[self.tmp_size-1])
+ j = 0
+ while xx > roll[j]:
+ j += 1
+ self.pop[i, :] = self.tmp_pop[j, :]
+ self.ff[i] = self.tmp_ff[j]
+ # adaptive ag
+ self.average_ff = np.mean(self.ff)
+ self.max_ff = max(self.ff)
+ if self.ff[i] >= self.average_ff:
+ self.p_mutate = self.p_mutate1 - \
+ (self.p_mutate1 - self.p_mutate2) * (self.max_ff - self.ff[i]) / (
+ self.max_ff - self.average_ff)
+ else:
+ self.p_mutate = self.p_mutate1
+
+ def crossover(self):
+ new_pop = []
+ new_ff = []
+ new_size = 0
+ ff_bigger = 0
+ for i in range(0, self.pop_size, 2):
+ #adaptive ag
+ ff_bigger = max(self.ff[i], self.ff[i+1])
+ if ff_bigger >= self.average_ff:
+ self.p_cross = self.p_cross1 -\
+ (self.p_cross1-self.p_cross2)/(self.max_ff-self.average_ff)
+ else:
+ self.p_cross = self.p_cross1
+ if random.random() < self.p_cross:
+ x1 = random.randint(0, self.vehicle_num-2)
+ x2 = random.randint(0, self.target_num-2)+self.vehicle_num
+ g1 = self.pop[i, :]
+ g2 = self.pop[i+1, :]
+ g1[x1:x2] = self.pop[i+1, x1:x2]
+ g2[x1:x2] = self.pop[i, x1:x2]
+ new_pop.append(g1)
+ new_pop.append(g2)
+ new_ff.append(self.fitness(g1))
+ new_ff.append(self.fitness(g2))
+ new_size += 2
+ self.tmp_size = self.pop_size+new_size
+ self.tmp_pop = np.zeros(
+ shape=(self.tmp_size, self.vehicle_num-1+self.target_num-1), dtype=np.int32)
+ self.tmp_pop[0:self.pop_size, :] = self.pop
+ self.tmp_pop[self.pop_size:self.tmp_size, :] = np.array(new_pop)
+ self.tmp_ff = np.zeros(self.tmp_size, dtype=float)
+ self.tmp_ff[0:self.pop_size] = self.ff
+ self.tmp_ff[self.pop_size:self.tmp_size] = np.array(new_ff)
+
+
+ def mutation(self):
+ for i in range(self.tmp_size):
+ flag = False
+ for j in range(self.vehicle_num-1):
+ if random.random() < self.p_mutate:
+ self.tmp_pop[i, j] = random.randint(0, self.target_num)
+ flag = True
+ for j in range(self.target_num-1):
+ if random.random() < self.p_mutate:
+ self.tmp_pop[i, self.vehicle_num+j-1
+ ] = random.randint(0, self.target_num-j-1)
+ flag = True
+ if flag:
+ self.tmp_ff[i] = self.fitness(self.tmp_pop[i, :])
+
+
+
+ def run(self):
+ #print("GA start, pid: %s" % os.getpid())
+ start_time = time.time()
+ gene = np.zeros(
+ shape=(1, self.vehicle_num+self.target_num-1), dtype=np.int32)
+ cut = 0
+ count = 0
+
+ while count < 300:
+ self.crossover()
+ self.mutation()
+ self.selection()
+ new_cut = self.tmp_ff.max()
+ if cut < new_cut:
+ cut = new_cut
+ count = 0
+ gene = self.tmp_pop[np.argmax(self.tmp_ff)]
+ else:
+ count += 1
+
+ ins = np.zeros(self.target_num + 1, dtype=np.int32)
+ seq = np.zeros(self.target_num, dtype=np.int32)
+ #ins[self.target_num] = 1
+ for i in range(self.vehicle_num-1):
+ ins[gene[i]] += 1
+ rest = np.array(range(1, self.target_num + 1))
+ for i in range(self.target_num - 1):
+ seq[i] = rest[gene[i + self.vehicle_num-1]]
+ rest = np.delete(rest, gene[i + self.vehicle_num-1])
+ seq[self.target_num - 1] = rest[0]
+ #print('sequence : ', seq)
+ #print('ins[]: ', ins)
+ task_assignment = [[] for i in range(self.vehicle_num)]
+ i = 0 # index of vehicle
+ pre = 0 # index of last target
+ post = 0 # index of ins/seq
+ t = 0
+ reward = 0
+ while i < self.vehicle_num:
+ if ins[post] > 0:
+ i += 1
+ ins[post] -= 1
+ pre = 0
+ t = 0
+ else:
+ t += self.targets[pre, 3]
+ past = self.map[pre, seq[post]] / self.vehicles_speed[i]
+ t += past
+ task_assignment[i].append(seq[post])
+ if t < self.time_lim:
+ reward += self.targets[seq[post], 2]
+ pre = seq[post]
+ post += 1
+ if post > self.target_num - 1:
+ break
+ self.reward = reward
+ # print("GA result2:", task_assignment)
+ end_time = time.time()
+ # print("GA time:", end_time - start_time)
+ # print("total reward2:", reward)
+ return task_assignment, end_time - start_time
+
diff --git a/contributer_demo/demo1/src/formation/script/main.py b/contributer_demo/demo1/src/formation/script/main.py
new file mode 100644
index 0000000..47eb121
--- /dev/null
+++ b/contributer_demo/demo1/src/formation/script/main.py
@@ -0,0 +1,33 @@
+from enviroment import Env
+from ga1 import GA1
+import numpy as np
+import matplotlib.pyplot as plt
+from ga2 import GA2
+if __name__ == '__main__':
+ map_size_x = 80
+ map_size_y = 80
+ map_size = [map_size_x, map_size_y]
+ vehicle_num = 3
+ target_num = 10
+ for i in range(5):
+ env = Env(vehicle_num, target_num, map_size, True)
+ for j in range(10):
+ ga1 = GA1(vehicle_num, env.vehicles_speed, target_num, env.targets, env.time_limit)
+ ga2 = GA2(vehicle_num, env.vehicles_speed, target_num, env.targets, env.time_limit)
+ ga1_result = ga1.run()
+ #print("result:", ga1_result[0])
+ ga2_result = ga2.run()
+
+ env.run(ga1_result[0], 'GA', i, j)
+ env.run(ga2_result[0], 'adaptGA', i, j)
+
+
+
+
+ #f_cost = np.zeros(21, dtype=np.int32)
+ #for i in range(10, 210, 10):
+ # ga1.run(i)
+ # f_cost[i//10]=ga1.reward
+ #plt.plot(np.linspace(10, 200, 21),f_cost,'s-',color = 'r',label = 'iteration_influence')
+ #plt.savefig("iteration_influence")
+ #plt.show()
diff --git a/contributer_demo/demo1/src/formation/script/txt/FORM_1_id.txt b/contributer_demo/demo1/src/formation/script/txt/FORM_1_id.txt
new file mode 100644
index 0000000..27ccd34
--- /dev/null
+++ b/contributer_demo/demo1/src/formation/script/txt/FORM_1_id.txt
@@ -0,0 +1,2 @@
+1 0
+2 0
diff --git a/contributer_demo/demo1/src/formation/script/txt/FORM_1_pos.txt b/contributer_demo/demo1/src/formation/script/txt/FORM_1_pos.txt
new file mode 100644
index 0000000..d5bf4cd
--- /dev/null
+++ b/contributer_demo/demo1/src/formation/script/txt/FORM_1_pos.txt
@@ -0,0 +1,3 @@
+0 0 0
+-1 0 0
+1 0 0
diff --git a/contributer_demo/demo1/src/formation/script/txt/FORM_2_id.txt b/contributer_demo/demo1/src/formation/script/txt/FORM_2_id.txt
new file mode 100644
index 0000000..133fec5
--- /dev/null
+++ b/contributer_demo/demo1/src/formation/script/txt/FORM_2_id.txt
@@ -0,0 +1,5 @@
+0 0
+1 0
+1 1
+2 0
+2 2
\ No newline at end of file
diff --git a/contributer_demo/demo1/src/formation/script/txt/FORM_2_pos.txt b/contributer_demo/demo1/src/formation/script/txt/FORM_2_pos.txt
new file mode 100644
index 0000000..650bcc3
--- /dev/null
+++ b/contributer_demo/demo1/src/formation/script/txt/FORM_2_pos.txt
@@ -0,0 +1,3 @@
+0 0 0
+-1 1 0
+1 1 0
diff --git a/contributer_demo/demo1/worlds/cic2021.world b/contributer_demo/demo1/worlds/cic2021.world
new file mode 100644
index 0000000..980cd43
--- /dev/null
+++ b/contributer_demo/demo1/worlds/cic2021.world
@@ -0,0 +1,24399 @@
+
+
+
+
+ 36.6648 -47.2414 134.625 0 1.27765 1.84097
+ orbit
+ perspective
+
+
+
+ 0
+ 0
+ 0.592 0.624 0.635 1
+
+
+ 12
+
+
+ 0.35 0.35 0.35 1
+ 1
+
+
+
+
+ quick
+ 10
+ 1.3
+ 0
+
+
+ 0
+ 0.2
+ 100
+ 0.001
+
+
+ 0.004
+ 1
+ 250
+
+
+ 0 0 1000 0 -0 0
+ 1
+ 0.8 0.8 0.8 1
+ 0.5 0.5 0.5 1
+
+ 1000
+ 0.9
+ 0.01
+ 0.001
+
+ -0.5 0.1 -0.4
+
+
+ 1
+
+
+
+
+ 0 0 1
+ 100 100
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+ walk.dae
+ 1
+
+ 0 0 0 0 -0 0
+
+ walk.dae
+ 1
+ 1
+
+
+
+ 0
+ 0
+
+
+
+ walk.dae
+ 1 1 1
+
+
+ 0 0 0 0 -0 0
+
+ 0
+
+
+
+ walk.dae
+ 1 1 1
+
+
+ 0 0 0 0 -0 0
+
+
+
+
+ walk.dae
+ 1 1 1
+
+
+ 0 0 0 0 -0 0
+
+
+
+
+ walk.dae
+ 1 1 1
+
+
+ 0 0 0 0 -0 0
+
+
+
+
+ walk.dae
+ 1 1 1
+
+
+ 0 0 0 0 -0 0
+
+
+
+
+ walk.dae
+ 1 1 1
+
+
+ 0 0 0 0 -0 0
+
+
+
+ 0
+ 0
+ 0 0 0 0 -0 0
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 0 0 1 1
+
+
+ 0
+
+
+ 0
+ 0
+ 0 0 0 -1.96446 0.68846 -2.58604
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.153556
+
+
+ -0 0.076778 0 -1.5708 -0.436252 0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.153556
+
+
+ -0 0.076778 0 -1.5708 -0.436252 0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.045484 0.097562 -0.10951 -1.5708 -0.017454 -1.5708
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.43615
+
+
+ -0 0.218075 -0 1.5708 -3e-06 -3.14159
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.43615
+
+
+ -0 0.218075 -0 1.5708 -3e-06 -3.14159
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.045484 0.08995 -0.545594 -1.5708 -0.018883 -1.5708
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.445971
+
+
+ 0 0.222985 -0 1.5708 -2e-06 3.14159
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.445971
+
+
+ 0 0.222985 -0 1.5708 -2e-06 3.14159
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.045484 0.081529 -0.991485 -2.86201 -0.004819 1.5644
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.137078
+
+
+ 0 0.068539 -0 1.57112 -1.56578 3.14127
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.137078
+
+
+ 0 0.068539 -0 1.57112 -1.56578 3.14127
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.177238 0.080868 -1.02931 3.14159 -0 1.5708
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 1 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ 0 0 0 -1.96446 -0.662808 -0.520328
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.150431
+
+
+ 0 0.075216 0 1.5708 -0.456725 3.14159
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.150431
+
+
+ 0 0.075216 0 1.5708 -0.456725 3.14159
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.045484 -0.092565 -0.10951 -1.5708 0.017454 -1.5708
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.441703
+
+
+ -0 0.220852 0 -1.5708 -2e-05 0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.441703
+
+
+ -0 0.220852 0 -1.5708 -2e-05 0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.045484 -0.084856 -0.551146 -1.5708 0.018902 -1.5708
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.440154
+
+
+ -0 0.220077 -0 -1.5708 -2.9e-05 -0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.440154
+
+
+ -0 0.220077 -0 -1.5708 -2.9e-05 -0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.045484 -0.076537 -0.991221 -2.81408 0.005615 1.57863
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.145278
+
+
+ -0 0.072639 -0 -1.57103 -1.56487 0.000233
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.145278
+
+
+ -0 0.072639 -0 -1.57103 -1.56487 0.000233
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.183038 -0.075721 -1.03795 3.14159 -0 1.5708
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 1 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ 0 0 0 1.76781 -0.000162 1.57081
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.134285
+
+
+ 0 0.067142 0 1.5705 -1.56997 -3.14129
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.134285
+
+
+ 0 0.067142 0 1.5705 -1.56997 -3.14129
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.026286 -2.1e-05 0.131687 1.55532 0.026085 1.57059
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.132976
+
+
+ -0 0.066488 -0 -1.5708 0.535365 0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.132976
+
+
+ -0 0.066488 -0 -1.5708 0.535365 0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.024228 0.003447 0.264602 1.55532 0.001964 1.57097
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ 0.024228 0.003447 0.264602 1.70269 0.004587 1.57496
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.114158
+
+
+ 0 0.057079 -0 -1.57081 -1.53593 9e-06
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.114158
+
+
+ 0 0.057079 -0 -1.57081 -1.53593 9e-06
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.039239 0.004029 0.377767 1.41714 -0.001065 1.57666
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.091751
+
+
+ -0 0.045875 0 1.57073 1.56383 3.14153
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.091751
+
+
+ -0 0.045875 0 1.57073 1.56383 3.14153
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.025197 0.00385 0.468437 1.50823 -4.5e-05 1.57161
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 1 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ 0.024228 0.003447 0.264602 0.861273 1.26292 1.04166
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.214115
+
+
+ -0 0.107058 0 -1.5708 0.204274 0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.214115
+
+
+ -0 0.107058 0 -1.5708 0.204274 0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.018043 0.207494 0.313829 3e-06 1.57079 3e-06
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.319492
+
+
+ -0 0.159746 0 -1.5708 -0 0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.319492
+
+
+ -0 0.159746 0 -1.5708 -0 0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.018042 0.526986 0.313829 3e-06 1.57079 3e-06
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.232586
+
+
+ 0 0.116293 -0 -1.5708 -0 -0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.232586
+
+
+ 0 0.116293 -0 -1.5708 -0 -0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.018042 0.759572 0.313829 3e-06 1.57079 3e-06
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ -0.018042 0.759572 0.313829 3e-06 1.57079 3e-06
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.032808
+
+
+ 0 0.016404 -0 -1.5708 -0 -0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.032808
+
+
+ 0 0.016404 -0 -1.5708 -0 -0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.018042 0.792381 0.313829 3e-06 1.57079 3e-06
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 1 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ -0.018043 0.759572 0.313829 -3.14159 0.785398 2.35619
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 1 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ 0.024228 0.003447 0.264602 1.17558 -1.21236 1.84664
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.203532
+
+
+ 0 0.101766 0 1.5708 0.143241 -3.14159
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.203532
+
+
+ 0 0.101766 0 1.5708 0.143241 -3.14159
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.003261 -0.18715 0.330499 0.040063 -1.57079 3.10153
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.32836
+
+
+ -0 0.16418 -0 1.5708 -0 3.14159
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.32836
+
+
+ -0 0.16418 -0 1.5708 -0 3.14159
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.003261 -0.51551 0.330499 0.042483 -1.57079 3.09911
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.233209
+
+
+ 0 0.116605 -0 1.5708 -0 3.14159
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.233209
+
+
+ 0 0.116605 -0 1.5708 -0 3.14159
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.003261 -0.748719 0.330499 0.042483 -1.57079 3.09911
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ -0.003261 -0.748719 0.330499 0.042483 -1.57079 3.09911
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.046334
+
+
+ -0 0.023167 0 1.5708 -0 3.14159
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.046334
+
+
+ -0 0.023167 0 1.5708 -0 3.14159
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.003261 -0.795053 0.330499 0.042483 -1.57079 3.09911
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 1 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ -0.003261 -0.748719 0.330499 3.14159 -0.785398 0.785398
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 1 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ 0 0 0 0 -0 0
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 0 0 1 1
+
+
+ 0
+
+
+ 0
+ 0
+ 0 0 0 -1.96446 0.68846 -2.58604
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.153556
+
+
+ -0 0.076778 0 -1.5708 -0.436252 0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.153556
+
+
+ -0 0.076778 0 -1.5708 -0.436252 0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.045484 0.097562 -0.10951 -1.5708 -0.017454 -1.5708
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.43615
+
+
+ -0 0.218075 -0 1.5708 -3e-06 -3.14159
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.43615
+
+
+ -0 0.218075 -0 1.5708 -3e-06 -3.14159
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.045484 0.08995 -0.545594 -1.5708 -0.018883 -1.5708
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.445971
+
+
+ 0 0.222985 -0 1.5708 -2e-06 3.14159
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.445971
+
+
+ 0 0.222985 -0 1.5708 -2e-06 3.14159
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.045484 0.081529 -0.991485 -2.86201 -0.004819 1.5644
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.137078
+
+
+ 0 0.068539 -0 1.57112 -1.56578 3.14127
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.137078
+
+
+ 0 0.068539 -0 1.57112 -1.56578 3.14127
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.177238 0.080868 -1.02931 3.14159 -0 1.5708
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 1 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ 0 0 0 -1.96446 -0.662808 -0.520328
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.150431
+
+
+ 0 0.075216 0 1.5708 -0.456725 3.14159
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.150431
+
+
+ 0 0.075216 0 1.5708 -0.456725 3.14159
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.045484 -0.092565 -0.10951 -1.5708 0.017454 -1.5708
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.441703
+
+
+ -0 0.220852 0 -1.5708 -2e-05 0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.441703
+
+
+ -0 0.220852 0 -1.5708 -2e-05 0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.045484 -0.084856 -0.551146 -1.5708 0.018902 -1.5708
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.440154
+
+
+ -0 0.220077 -0 -1.5708 -2.9e-05 -0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.440154
+
+
+ -0 0.220077 -0 -1.5708 -2.9e-05 -0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.045484 -0.076537 -0.991221 -2.81408 0.005615 1.57863
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.145278
+
+
+ -0 0.072639 -0 -1.57103 -1.56487 0.000233
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.145278
+
+
+ -0 0.072639 -0 -1.57103 -1.56487 0.000233
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.183038 -0.075721 -1.03795 3.14159 -0 1.5708
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 1 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ 0 0 0 1.76781 -0.000162 1.57081
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.134285
+
+
+ 0 0.067142 0 1.5705 -1.56997 -3.14129
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.134285
+
+
+ 0 0.067142 0 1.5705 -1.56997 -3.14129
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.026286 -2.1e-05 0.131687 1.55532 0.026085 1.57059
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.132976
+
+
+ -0 0.066488 -0 -1.5708 0.535365 0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.132976
+
+
+ -0 0.066488 -0 -1.5708 0.535365 0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.024228 0.003447 0.264602 1.55532 0.001964 1.57097
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ 0.024228 0.003447 0.264602 1.70269 0.004587 1.57496
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.114158
+
+
+ 0 0.057079 -0 -1.57081 -1.53593 9e-06
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.114158
+
+
+ 0 0.057079 -0 -1.57081 -1.53593 9e-06
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.039239 0.004029 0.377767 1.41714 -0.001065 1.57666
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.091751
+
+
+ -0 0.045875 0 1.57073 1.56383 3.14153
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.091751
+
+
+ -0 0.045875 0 1.57073 1.56383 3.14153
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.025197 0.00385 0.468437 1.50823 -4.5e-05 1.57161
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 1 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ 0.024228 0.003447 0.264602 0.861273 1.26292 1.04166
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.214115
+
+
+ -0 0.107058 0 -1.5708 0.204274 0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.214115
+
+
+ -0 0.107058 0 -1.5708 0.204274 0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.018043 0.207494 0.313829 3e-06 1.57079 3e-06
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.319492
+
+
+ -0 0.159746 0 -1.5708 -0 0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.319492
+
+
+ -0 0.159746 0 -1.5708 -0 0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.018042 0.526986 0.313829 3e-06 1.57079 3e-06
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.232586
+
+
+ 0 0.116293 -0 -1.5708 -0 -0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.232586
+
+
+ 0 0.116293 -0 -1.5708 -0 -0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.018042 0.759572 0.313829 3e-06 1.57079 3e-06
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ -0.018042 0.759572 0.313829 3e-06 1.57079 3e-06
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.032808
+
+
+ 0 0.016404 -0 -1.5708 -0 -0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.032808
+
+
+ 0 0.016404 -0 -1.5708 -0 -0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.018042 0.792381 0.313829 3e-06 1.57079 3e-06
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 1 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ -0.018043 0.759572 0.313829 -3.14159 0.785398 2.35619
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 1 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ 0.024228 0.003447 0.264602 1.17558 -1.21236 1.84664
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.203532
+
+
+ 0 0.101766 0 1.5708 0.143241 -3.14159
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.203532
+
+
+ 0 0.101766 0 1.5708 0.143241 -3.14159
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.003261 -0.18715 0.330499 0.040063 -1.57079 3.10153
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.32836
+
+
+ -0 0.16418 -0 1.5708 -0 3.14159
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.32836
+
+
+ -0 0.16418 -0 1.5708 -0 3.14159
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.003261 -0.51551 0.330499 0.042483 -1.57079 3.09911
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.233209
+
+
+ 0 0.116605 -0 1.5708 -0 3.14159
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.233209
+
+
+ 0 0.116605 -0 1.5708 -0 3.14159
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.003261 -0.748719 0.330499 0.042483 -1.57079 3.09911
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ -0.003261 -0.748719 0.330499 0.042483 -1.57079 3.09911
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.046334
+
+
+ -0 0.023167 0 1.5708 -0 3.14159
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.046334
+
+
+ -0 0.023167 0 1.5708 -0 3.14159
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.003261 -0.795053 0.330499 0.042483 -1.57079 3.09911
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 1 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ -0.003261 -0.748719 0.330499 3.14159 -0.785398 0.785398
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 1 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ 0 0 0 0 -0 0
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 0 0 1 1
+
+
+ 0
+
+
+ 0
+ 0
+ 0 0 0 -1.96446 0.68846 -2.58604
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.153556
+
+
+ -0 0.076778 0 -1.5708 -0.436252 0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.153556
+
+
+ -0 0.076778 0 -1.5708 -0.436252 0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.045484 0.097562 -0.10951 -1.5708 -0.017454 -1.5708
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.43615
+
+
+ -0 0.218075 -0 1.5708 -3e-06 -3.14159
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.43615
+
+
+ -0 0.218075 -0 1.5708 -3e-06 -3.14159
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.045484 0.08995 -0.545594 -1.5708 -0.018883 -1.5708
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.445971
+
+
+ 0 0.222985 -0 1.5708 -2e-06 3.14159
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.445971
+
+
+ 0 0.222985 -0 1.5708 -2e-06 3.14159
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.045484 0.081529 -0.991485 -2.86201 -0.004819 1.5644
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.137078
+
+
+ 0 0.068539 -0 1.57112 -1.56578 3.14127
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.137078
+
+
+ 0 0.068539 -0 1.57112 -1.56578 3.14127
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.177238 0.080868 -1.02931 3.14159 -0 1.5708
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 1 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ 0 0 0 -1.96446 -0.662808 -0.520328
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.150431
+
+
+ 0 0.075216 0 1.5708 -0.456725 3.14159
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.150431
+
+
+ 0 0.075216 0 1.5708 -0.456725 3.14159
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.045484 -0.092565 -0.10951 -1.5708 0.017454 -1.5708
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.441703
+
+
+ -0 0.220852 0 -1.5708 -2e-05 0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.441703
+
+
+ -0 0.220852 0 -1.5708 -2e-05 0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.045484 -0.084856 -0.551146 -1.5708 0.018902 -1.5708
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.440154
+
+
+ -0 0.220077 -0 -1.5708 -2.9e-05 -0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.440154
+
+
+ -0 0.220077 -0 -1.5708 -2.9e-05 -0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.045484 -0.076537 -0.991221 -2.81408 0.005615 1.57863
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.145278
+
+
+ -0 0.072639 -0 -1.57103 -1.56487 0.000233
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.145278
+
+
+ -0 0.072639 -0 -1.57103 -1.56487 0.000233
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.183038 -0.075721 -1.03795 3.14159 -0 1.5708
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 1 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ 0 0 0 1.76781 -0.000162 1.57081
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.134285
+
+
+ 0 0.067142 0 1.5705 -1.56997 -3.14129
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.134285
+
+
+ 0 0.067142 0 1.5705 -1.56997 -3.14129
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.026286 -2.1e-05 0.131687 1.55532 0.026085 1.57059
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.132976
+
+
+ -0 0.066488 -0 -1.5708 0.535365 0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.132976
+
+
+ -0 0.066488 -0 -1.5708 0.535365 0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.024228 0.003447 0.264602 1.55532 0.001964 1.57097
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ 0.024228 0.003447 0.264602 1.70269 0.004587 1.57496
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.114158
+
+
+ 0 0.057079 -0 -1.57081 -1.53593 9e-06
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.114158
+
+
+ 0 0.057079 -0 -1.57081 -1.53593 9e-06
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.039239 0.004029 0.377767 1.41714 -0.001065 1.57666
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.091751
+
+
+ -0 0.045875 0 1.57073 1.56383 3.14153
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.091751
+
+
+ -0 0.045875 0 1.57073 1.56383 3.14153
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.025197 0.00385 0.468437 1.50823 -4.5e-05 1.57161
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 1 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ 0.024228 0.003447 0.264602 0.861273 1.26292 1.04166
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.214115
+
+
+ -0 0.107058 0 -1.5708 0.204274 0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.214115
+
+
+ -0 0.107058 0 -1.5708 0.204274 0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.018043 0.207494 0.313829 3e-06 1.57079 3e-06
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.319492
+
+
+ -0 0.159746 0 -1.5708 -0 0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.319492
+
+
+ -0 0.159746 0 -1.5708 -0 0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.018042 0.526986 0.313829 3e-06 1.57079 3e-06
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.232586
+
+
+ 0 0.116293 -0 -1.5708 -0 -0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.232586
+
+
+ 0 0.116293 -0 -1.5708 -0 -0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.018042 0.759572 0.313829 3e-06 1.57079 3e-06
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ -0.018042 0.759572 0.313829 3e-06 1.57079 3e-06
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.032808
+
+
+ 0 0.016404 -0 -1.5708 -0 -0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.032808
+
+
+ 0 0.016404 -0 -1.5708 -0 -0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.018042 0.792381 0.313829 3e-06 1.57079 3e-06
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 1 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ -0.018043 0.759572 0.313829 -3.14159 0.785398 2.35619
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 1 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ 0.024228 0.003447 0.264602 1.17558 -1.21236 1.84664
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.203532
+
+
+ 0 0.101766 0 1.5708 0.143241 -3.14159
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.203532
+
+
+ 0 0.101766 0 1.5708 0.143241 -3.14159
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.003261 -0.18715 0.330499 0.040063 -1.57079 3.10153
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.32836
+
+
+ -0 0.16418 -0 1.5708 -0 3.14159
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.32836
+
+
+ -0 0.16418 -0 1.5708 -0 3.14159
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.003261 -0.51551 0.330499 0.042483 -1.57079 3.09911
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.233209
+
+
+ 0 0.116605 -0 1.5708 -0 3.14159
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.233209
+
+
+ 0 0.116605 -0 1.5708 -0 3.14159
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.003261 -0.748719 0.330499 0.042483 -1.57079 3.09911
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ -0.003261 -0.748719 0.330499 0.042483 -1.57079 3.09911
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.046334
+
+
+ -0 0.023167 0 1.5708 -0 3.14159
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.046334
+
+
+ -0 0.023167 0 1.5708 -0 3.14159
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.003261 -0.795053 0.330499 0.042483 -1.57079 3.09911
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 1 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ -0.003261 -0.748719 0.330499 3.14159 -0.785398 0.785398
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 1 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ 0 0 0 0 -0 0
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 0 0 1 1
+
+
+ 0
+
+
+ 0
+ 0
+ 0 0 0 -1.96446 0.68846 -2.58604
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.153556
+
+
+ -0 0.076778 0 -1.5708 -0.436252 0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.153556
+
+
+ -0 0.076778 0 -1.5708 -0.436252 0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.045484 0.097562 -0.10951 -1.5708 -0.017454 -1.5708
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.43615
+
+
+ -0 0.218075 -0 1.5708 -3e-06 -3.14159
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.43615
+
+
+ -0 0.218075 -0 1.5708 -3e-06 -3.14159
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.045484 0.08995 -0.545594 -1.5708 -0.018883 -1.5708
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.445971
+
+
+ 0 0.222985 -0 1.5708 -2e-06 3.14159
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.445971
+
+
+ 0 0.222985 -0 1.5708 -2e-06 3.14159
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.045484 0.081529 -0.991485 -2.86201 -0.004819 1.5644
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.137078
+
+
+ 0 0.068539 -0 1.57112 -1.56578 3.14127
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.137078
+
+
+ 0 0.068539 -0 1.57112 -1.56578 3.14127
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.177238 0.080868 -1.02931 3.14159 -0 1.5708
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 1 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ 0 0 0 -1.96446 -0.662808 -0.520328
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.150431
+
+
+ 0 0.075216 0 1.5708 -0.456725 3.14159
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.150431
+
+
+ 0 0.075216 0 1.5708 -0.456725 3.14159
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.045484 -0.092565 -0.10951 -1.5708 0.017454 -1.5708
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.441703
+
+
+ -0 0.220852 0 -1.5708 -2e-05 0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.441703
+
+
+ -0 0.220852 0 -1.5708 -2e-05 0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.045484 -0.084856 -0.551146 -1.5708 0.018902 -1.5708
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.440154
+
+
+ -0 0.220077 -0 -1.5708 -2.9e-05 -0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.440154
+
+
+ -0 0.220077 -0 -1.5708 -2.9e-05 -0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.045484 -0.076537 -0.991221 -2.81408 0.005615 1.57863
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.145278
+
+
+ -0 0.072639 -0 -1.57103 -1.56487 0.000233
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.145278
+
+
+ -0 0.072639 -0 -1.57103 -1.56487 0.000233
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.183038 -0.075721 -1.03795 3.14159 -0 1.5708
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 1 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ 0 0 0 1.76781 -0.000162 1.57081
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.134285
+
+
+ 0 0.067142 0 1.5705 -1.56997 -3.14129
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.134285
+
+
+ 0 0.067142 0 1.5705 -1.56997 -3.14129
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.026286 -2.1e-05 0.131687 1.55532 0.026085 1.57059
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.132976
+
+
+ -0 0.066488 -0 -1.5708 0.535365 0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.132976
+
+
+ -0 0.066488 -0 -1.5708 0.535365 0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.024228 0.003447 0.264602 1.55532 0.001964 1.57097
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ 0.024228 0.003447 0.264602 1.70269 0.004587 1.57496
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.114158
+
+
+ 0 0.057079 -0 -1.57081 -1.53593 9e-06
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.114158
+
+
+ 0 0.057079 -0 -1.57081 -1.53593 9e-06
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.039239 0.004029 0.377767 1.41714 -0.001065 1.57666
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.091751
+
+
+ -0 0.045875 0 1.57073 1.56383 3.14153
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.091751
+
+
+ -0 0.045875 0 1.57073 1.56383 3.14153
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.025197 0.00385 0.468437 1.50823 -4.5e-05 1.57161
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 1 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ 0.024228 0.003447 0.264602 0.861273 1.26292 1.04166
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.214115
+
+
+ -0 0.107058 0 -1.5708 0.204274 0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.214115
+
+
+ -0 0.107058 0 -1.5708 0.204274 0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.018043 0.207494 0.313829 3e-06 1.57079 3e-06
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.319492
+
+
+ -0 0.159746 0 -1.5708 -0 0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.319492
+
+
+ -0 0.159746 0 -1.5708 -0 0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.018042 0.526986 0.313829 3e-06 1.57079 3e-06
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.232586
+
+
+ 0 0.116293 -0 -1.5708 -0 -0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.232586
+
+
+ 0 0.116293 -0 -1.5708 -0 -0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.018042 0.759572 0.313829 3e-06 1.57079 3e-06
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ -0.018042 0.759572 0.313829 3e-06 1.57079 3e-06
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.032808
+
+
+ 0 0.016404 -0 -1.5708 -0 -0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.032808
+
+
+ 0 0.016404 -0 -1.5708 -0 -0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.018042 0.792381 0.313829 3e-06 1.57079 3e-06
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 1 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ -0.018043 0.759572 0.313829 -3.14159 0.785398 2.35619
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 1 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ 0.024228 0.003447 0.264602 1.17558 -1.21236 1.84664
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.203532
+
+
+ 0 0.101766 0 1.5708 0.143241 -3.14159
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.203532
+
+
+ 0 0.101766 0 1.5708 0.143241 -3.14159
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.003261 -0.18715 0.330499 0.040063 -1.57079 3.10153
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.32836
+
+
+ -0 0.16418 -0 1.5708 -0 3.14159
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.32836
+
+
+ -0 0.16418 -0 1.5708 -0 3.14159
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.003261 -0.51551 0.330499 0.042483 -1.57079 3.09911
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.233209
+
+
+ 0 0.116605 -0 1.5708 -0 3.14159
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.233209
+
+
+ 0 0.116605 -0 1.5708 -0 3.14159
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.003261 -0.748719 0.330499 0.042483 -1.57079 3.09911
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ -0.003261 -0.748719 0.330499 0.042483 -1.57079 3.09911
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.046334
+
+
+ -0 0.023167 0 1.5708 -0 3.14159
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.046334
+
+
+ -0 0.023167 0 1.5708 -0 3.14159
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.003261 -0.795053 0.330499 0.042483 -1.57079 3.09911
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 1 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ -0.003261 -0.748719 0.330499 3.14159 -0.785398 0.785398
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 1 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ 0 0 0 0 -0 0
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 0 0 1 1
+
+
+ 0
+
+
+ 0
+ 0
+ 0 0 0 -1.96446 0.68846 -2.58604
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.153556
+
+
+ -0 0.076778 0 -1.5708 -0.436252 0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.153556
+
+
+ -0 0.076778 0 -1.5708 -0.436252 0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.045484 0.097562 -0.10951 -1.5708 -0.017454 -1.5708
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.43615
+
+
+ -0 0.218075 -0 1.5708 -3e-06 -3.14159
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.43615
+
+
+ -0 0.218075 -0 1.5708 -3e-06 -3.14159
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.045484 0.08995 -0.545594 -1.5708 -0.018883 -1.5708
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.445971
+
+
+ 0 0.222985 -0 1.5708 -2e-06 3.14159
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.445971
+
+
+ 0 0.222985 -0 1.5708 -2e-06 3.14159
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.045484 0.081529 -0.991485 -2.86201 -0.004819 1.5644
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.137078
+
+
+ 0 0.068539 -0 1.57112 -1.56578 3.14127
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.137078
+
+
+ 0 0.068539 -0 1.57112 -1.56578 3.14127
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.177238 0.080868 -1.02931 3.14159 -0 1.5708
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 1 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ 0 0 0 -1.96446 -0.662808 -0.520328
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.150431
+
+
+ 0 0.075216 0 1.5708 -0.456725 3.14159
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.150431
+
+
+ 0 0.075216 0 1.5708 -0.456725 3.14159
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.045484 -0.092565 -0.10951 -1.5708 0.017454 -1.5708
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.441703
+
+
+ -0 0.220852 0 -1.5708 -2e-05 0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.441703
+
+
+ -0 0.220852 0 -1.5708 -2e-05 0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.045484 -0.084856 -0.551146 -1.5708 0.018902 -1.5708
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.440154
+
+
+ -0 0.220077 -0 -1.5708 -2.9e-05 -0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.440154
+
+
+ -0 0.220077 -0 -1.5708 -2.9e-05 -0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.045484 -0.076537 -0.991221 -2.81408 0.005615 1.57863
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.145278
+
+
+ -0 0.072639 -0 -1.57103 -1.56487 0.000233
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.145278
+
+
+ -0 0.072639 -0 -1.57103 -1.56487 0.000233
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.183038 -0.075721 -1.03795 3.14159 -0 1.5708
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 1 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ 0 0 0 1.76781 -0.000162 1.57081
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.134285
+
+
+ 0 0.067142 0 1.5705 -1.56997 -3.14129
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.134285
+
+
+ 0 0.067142 0 1.5705 -1.56997 -3.14129
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.026286 -2.1e-05 0.131687 1.55532 0.026085 1.57059
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.132976
+
+
+ -0 0.066488 -0 -1.5708 0.535365 0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.132976
+
+
+ -0 0.066488 -0 -1.5708 0.535365 0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.024228 0.003447 0.264602 1.55532 0.001964 1.57097
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ 0.024228 0.003447 0.264602 1.70269 0.004587 1.57496
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.114158
+
+
+ 0 0.057079 -0 -1.57081 -1.53593 9e-06
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.114158
+
+
+ 0 0.057079 -0 -1.57081 -1.53593 9e-06
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.039239 0.004029 0.377767 1.41714 -0.001065 1.57666
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.091751
+
+
+ -0 0.045875 0 1.57073 1.56383 3.14153
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.091751
+
+
+ -0 0.045875 0 1.57073 1.56383 3.14153
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.025197 0.00385 0.468437 1.50823 -4.5e-05 1.57161
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 1 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ 0.024228 0.003447 0.264602 0.861273 1.26292 1.04166
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.214115
+
+
+ -0 0.107058 0 -1.5708 0.204274 0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.214115
+
+
+ -0 0.107058 0 -1.5708 0.204274 0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.018043 0.207494 0.313829 3e-06 1.57079 3e-06
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.319492
+
+
+ -0 0.159746 0 -1.5708 -0 0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.319492
+
+
+ -0 0.159746 0 -1.5708 -0 0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.018042 0.526986 0.313829 3e-06 1.57079 3e-06
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.232586
+
+
+ 0 0.116293 -0 -1.5708 -0 -0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.232586
+
+
+ 0 0.116293 -0 -1.5708 -0 -0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.018042 0.759572 0.313829 3e-06 1.57079 3e-06
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ -0.018042 0.759572 0.313829 3e-06 1.57079 3e-06
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.032808
+
+
+ 0 0.016404 -0 -1.5708 -0 -0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.032808
+
+
+ 0 0.016404 -0 -1.5708 -0 -0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.018042 0.792381 0.313829 3e-06 1.57079 3e-06
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 1 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ -0.018043 0.759572 0.313829 -3.14159 0.785398 2.35619
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 1 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ 0.024228 0.003447 0.264602 1.17558 -1.21236 1.84664
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.203532
+
+
+ 0 0.101766 0 1.5708 0.143241 -3.14159
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.203532
+
+
+ 0 0.101766 0 1.5708 0.143241 -3.14159
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.003261 -0.18715 0.330499 0.040063 -1.57079 3.10153
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.32836
+
+
+ -0 0.16418 -0 1.5708 -0 3.14159
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.32836
+
+
+ -0 0.16418 -0 1.5708 -0 3.14159
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.003261 -0.51551 0.330499 0.042483 -1.57079 3.09911
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.233209
+
+
+ 0 0.116605 -0 1.5708 -0 3.14159
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.233209
+
+
+ 0 0.116605 -0 1.5708 -0 3.14159
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.003261 -0.748719 0.330499 0.042483 -1.57079 3.09911
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ -0.003261 -0.748719 0.330499 0.042483 -1.57079 3.09911
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.046334
+
+
+ -0 0.023167 0 1.5708 -0 3.14159
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.046334
+
+
+ -0 0.023167 0 1.5708 -0 3.14159
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.003261 -0.795053 0.330499 0.042483 -1.57079 3.09911
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 1 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ -0.003261 -0.748719 0.330499 3.14159 -0.785398 0.785398
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 1 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ 0 0 0 0 -0 0
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 0 0 1 1
+
+
+ 0
+
+
+ 0
+ 0
+ 0 0 0 -1.96446 0.68846 -2.58604
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.153556
+
+
+ -0 0.076778 0 -1.5708 -0.436252 0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.153556
+
+
+ -0 0.076778 0 -1.5708 -0.436252 0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.045484 0.097562 -0.10951 -1.5708 -0.017454 -1.5708
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.43615
+
+
+ -0 0.218075 -0 1.5708 -3e-06 -3.14159
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.43615
+
+
+ -0 0.218075 -0 1.5708 -3e-06 -3.14159
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.045484 0.08995 -0.545594 -1.5708 -0.018883 -1.5708
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.445971
+
+
+ 0 0.222985 -0 1.5708 -2e-06 3.14159
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.445971
+
+
+ 0 0.222985 -0 1.5708 -2e-06 3.14159
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.045484 0.081529 -0.991485 -2.86201 -0.004819 1.5644
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.137078
+
+
+ 0 0.068539 -0 1.57112 -1.56578 3.14127
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.137078
+
+
+ 0 0.068539 -0 1.57112 -1.56578 3.14127
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.177238 0.080868 -1.02931 3.14159 -0 1.5708
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 1 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ 0 0 0 -1.96446 -0.662808 -0.520328
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.150431
+
+
+ 0 0.075216 0 1.5708 -0.456725 3.14159
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.150431
+
+
+ 0 0.075216 0 1.5708 -0.456725 3.14159
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.045484 -0.092565 -0.10951 -1.5708 0.017454 -1.5708
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.441703
+
+
+ -0 0.220852 0 -1.5708 -2e-05 0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.441703
+
+
+ -0 0.220852 0 -1.5708 -2e-05 0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.045484 -0.084856 -0.551146 -1.5708 0.018902 -1.5708
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.440154
+
+
+ -0 0.220077 -0 -1.5708 -2.9e-05 -0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.440154
+
+
+ -0 0.220077 -0 -1.5708 -2.9e-05 -0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.045484 -0.076537 -0.991221 -2.81408 0.005615 1.57863
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.145278
+
+
+ -0 0.072639 -0 -1.57103 -1.56487 0.000233
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.145278
+
+
+ -0 0.072639 -0 -1.57103 -1.56487 0.000233
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.183038 -0.075721 -1.03795 3.14159 -0 1.5708
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 1 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ 0 0 0 1.76781 -0.000162 1.57081
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.134285
+
+
+ 0 0.067142 0 1.5705 -1.56997 -3.14129
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.134285
+
+
+ 0 0.067142 0 1.5705 -1.56997 -3.14129
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.026286 -2.1e-05 0.131687 1.55532 0.026085 1.57059
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.132976
+
+
+ -0 0.066488 -0 -1.5708 0.535365 0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.132976
+
+
+ -0 0.066488 -0 -1.5708 0.535365 0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.024228 0.003447 0.264602 1.55532 0.001964 1.57097
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ 0.024228 0.003447 0.264602 1.70269 0.004587 1.57496
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.114158
+
+
+ 0 0.057079 -0 -1.57081 -1.53593 9e-06
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.114158
+
+
+ 0 0.057079 -0 -1.57081 -1.53593 9e-06
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.039239 0.004029 0.377767 1.41714 -0.001065 1.57666
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.091751
+
+
+ -0 0.045875 0 1.57073 1.56383 3.14153
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.091751
+
+
+ -0 0.045875 0 1.57073 1.56383 3.14153
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ 0.025197 0.00385 0.468437 1.50823 -4.5e-05 1.57161
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 1 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ 0.024228 0.003447 0.264602 0.861273 1.26292 1.04166
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.214115
+
+
+ -0 0.107058 0 -1.5708 0.204274 0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.214115
+
+
+ -0 0.107058 0 -1.5708 0.204274 0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.018043 0.207494 0.313829 3e-06 1.57079 3e-06
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.319492
+
+
+ -0 0.159746 0 -1.5708 -0 0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.319492
+
+
+ -0 0.159746 0 -1.5708 -0 0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.018042 0.526986 0.313829 3e-06 1.57079 3e-06
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.232586
+
+
+ 0 0.116293 -0 -1.5708 -0 -0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.232586
+
+
+ 0 0.116293 -0 -1.5708 -0 -0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.018042 0.759572 0.313829 3e-06 1.57079 3e-06
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ -0.018042 0.759572 0.313829 3e-06 1.57079 3e-06
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.032808
+
+
+ 0 0.016404 -0 -1.5708 -0 -0
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.032808
+
+
+ 0 0.016404 -0 -1.5708 -0 -0
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.018042 0.792381 0.313829 3e-06 1.57079 3e-06
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 1 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ -0.018043 0.759572 0.313829 -3.14159 0.785398 2.35619
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 1 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ 0.024228 0.003447 0.264602 1.17558 -1.21236 1.84664
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.203532
+
+
+ 0 0.101766 0 1.5708 0.143241 -3.14159
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.203532
+
+
+ 0 0.101766 0 1.5708 0.143241 -3.14159
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.003261 -0.18715 0.330499 0.040063 -1.57079 3.10153
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.32836
+
+
+ -0 0.16418 -0 1.5708 -0 3.14159
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.32836
+
+
+ -0 0.16418 -0 1.5708 -0 3.14159
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.003261 -0.51551 0.330499 0.042483 -1.57079 3.09911
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.233209
+
+
+ 0 0.116605 -0 1.5708 -0 3.14159
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.233209
+
+
+ 0 0.116605 -0 1.5708 -0 3.14159
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.003261 -0.748719 0.330499 0.042483 -1.57079 3.09911
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ -0.003261 -0.748719 0.330499 0.042483 -1.57079 3.09911
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 0 0 1
+
+
+
+
+
+ 0.02 0.02 0.046334
+
+
+ -0 0.023167 0 1.5708 -0 3.14159
+
+
+ 0 1 0 1
+
+
+
+
+
+ 0.02 0.02 0.046334
+
+
+ -0 0.023167 0 1.5708 -0 3.14159
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ 0
+ -0.003261 -0.795053 0.330499 0.042483 -1.57079 3.09911
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 1 0 1
+
+
+ 0
+
+
+ 0
+ 0
+ -0.003261 -0.748719 0.330499 3.14159 -0.785398 0.785398
+
+ 0 0 0 0 -0 0
+ 1
+
+ 4e-05
+ 0
+ 0
+ 4e-05
+ 0
+ 4e-05
+
+
+
+
+
+ 0.02
+
+
+ 0 0 0 0 -0 0
+
+
+ 1 1 0 1
+
+
+ 0
+
+
+
+ 1
+
+ 0 0 -5 0 -0 0
+
+
+
+ 0 0 1
+ 500 500
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+ model://ocean/materials/textures/soil_sand_0045_01.jpg
+ file://media/materials/textures/flat_normal.png
+ 10
+
+
+ 0
+ 1.5
+
+
+ model://ocean/materials/textures/soil_sand_0045_01.jpg
+ file://media/materials/textures/flat_normal.png
+ 10
+
+
+ 2.5
+ 5
+
+
+ model://city_terrain/materials/textures/forest.jpg
+ file://media/materials/textures/flat_normal.png
+ 10
+
+ model://city_terrain/materials/textures/city_terrain.jpg
+ 500 500 75
+ 40 -20 -5
+
+
+
+ 0
+ 0
+ 0
+
+ 0 0 0 0 -0 0
+
+
+ 1
+
+
+ 0 0 0 0 -0 0
+
+
+ model://ocean/mesh.dae
+ 0.5 0.5 0.5
+
+
+
+
+
+
+
+ 0 0 0 0 -0 0
+
+
+ model://ocean/mesh_below.dae
+ 0.5 0.5 0.5
+
+
+
+
+
+
+
+ 250 0 -3.5 3.14159 -1.57079 3.14159
+
+
+ 0 0 1
+ 7 500
+
+
+
+
+
+
+
+ -250 0 -3.5 3.14159 1.57079 3.14159
+
+
+ 0 0 1
+ 7 500
+
+
+
+
+
+
+
+ 0 250 -3.5 1.5708 -0 0
+
+
+ 0 0 1
+ 500 7
+
+
+
+
+
+
+
+ 0 -250 -3.5 -1.5708 0 0
+
+
+ 0 0 1
+ 500 7
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+ 40 -20 -2 0 -0 0
+
+
+ 7.4
+ -45 -48.7 0.01
+ -45 49.2 0.01
+
+
+ 7.4
+ -15 -48.7 0.01
+ -15 49.2 0.01
+
+
+
+
+
+ 7.4
+ 45 -48.7 0.01
+ 45 49.2 0.01
+
+
+
+
+
+ 7.4
+ 110 -48.7 0.01
+ 110 49.2 0.01
+
+
+
+
+
+ 7.4
+ 120 -48.7 0.01
+ 120 49.2 0.01
+
+
+ 8.4
+ -41.3 -45 0.015
+ 116.3 -45 0.015
+
+
+ 8.4
+ -41.3 0 0.015
+ 116.3 0 0.015
+
+
+
+
+
+ 8.4
+ -41.3 45 0.015
+ 116.3 45 0.015
+
+
+ 1
+ 0 0 0 0 -0 0
+
+
+
+
+ 0.15
+ -41.3 -40.8
+ -41.2755 -40.9545
+ -41.2045 -41.0939
+ -41.0939 -41.2045
+ -40.9545 -41.2755
+ -40.8 -41.3
+ -19.2 -41.3
+ -19.0455 -41.2755
+ -18.9061 -41.2045
+ -18.7955 -41.0939
+ -18.7245 -40.9545
+ -18.7 -40.8
+ -18.7 -38.8
+ -18.7245 -38.6455
+ -18.7955 -38.5061
+ -18.9061 -38.3955
+ -19.0455 -38.3245
+ -19.2 -38.3
+ -40.8 -38.3
+ -40.9545 -38.3245
+ -41.0939 -38.3955
+ -41.2045 -38.5061
+ -41.2755 -38.6455
+ -41.3 -38.8
+
+
+
+ 0.2 0.2 0.2 1
+
+
+ 0
+ 0
+ 0
+
+
+
+ 1
+ 0 0 0 0 -0 0
+
+
+
+
+ 0.15
+ -41.3 -6.2
+ -41.2755 -6.35451
+ -41.2045 -6.49389
+ -41.0939 -6.60451
+ -40.9545 -6.67553
+ -40.8 -6.7
+ -19.2 -6.7
+ -19.0455 -6.67553
+ -18.9061 -6.60451
+ -18.7955 -6.49389
+ -18.7245 -6.35451
+ -18.7 -6.2
+ -18.7 -4.2
+ -18.7245 -4.04549
+ -18.7955 -3.90611
+ -18.9061 -3.79549
+ -19.0455 -3.72447
+ -19.2 -3.7
+ -40.8 -3.7
+ -40.9545 -3.72447
+ -41.0939 -3.79549
+ -41.2045 -3.90611
+ -41.2755 -4.04549
+ -41.3 -4.2
+
+
+
+ 0.2 0.2 0.2 1
+
+
+ 0
+ 0
+ 0
+
+
+
+ 1
+ 0 0 0 0 -0 0
+
+
+
+
+ 0.15
+ -41.3 -40.8
+ -41.2755 -40.9545
+ -41.2045 -41.0939
+ -41.0939 -41.2045
+ -40.9545 -41.2755
+ -40.8 -41.3
+ -38.8 -41.3
+ -38.6455 -41.2755
+ -38.5061 -41.2045
+ -38.3955 -41.0939
+ -38.3245 -40.9545
+ -38.3 -40.8
+ -38.3 -4.2
+ -38.3245 -4.04549
+ -38.3955 -3.90611
+ -38.5061 -3.79549
+ -38.6455 -3.72447
+ -38.8 -3.7
+ -40.8 -3.7
+ -40.9545 -3.72447
+ -41.0939 -3.79549
+ -41.2045 -3.90611
+ -41.2755 -4.04549
+ -41.3 -4.2
+
+
+
+ 0.2 0.2 0.2 1
+
+
+ 0
+ 0
+ 0
+
+
+
+ 1
+ 0 0 0 0 -0 0
+
+
+
+
+ 0.15
+ -21.7 -40.8
+ -21.6755 -40.9545
+ -21.6045 -41.0939
+ -21.4939 -41.2045
+ -21.3545 -41.2755
+ -21.2 -41.3
+ -19.2 -41.3
+ -19.0455 -41.2755
+ -18.9061 -41.2045
+ -18.7955 -41.0939
+ -18.7245 -40.9545
+ -18.7 -40.8
+ -18.7 -4.2
+ -18.7245 -4.04549
+ -18.7955 -3.90611
+ -18.9061 -3.79549
+ -19.0455 -3.72447
+ -19.2 -3.7
+ -21.2 -3.7
+ -21.3545 -3.72447
+ -21.4939 -3.79549
+ -21.6045 -3.90611
+ -21.6755 -4.04549
+ -21.7 -4.2
+
+
+
+ 0.2 0.2 0.2 1
+
+
+ 0
+ 0
+ 0
+
+
+
+ 1
+ 0 0 0 0 -0 0
+
+
+
+
+ 0.15
+ -41.3 4.2
+ -41.2755 4.04549
+ -41.2045 3.90611
+ -41.0939 3.79549
+ -40.9545 3.72447
+ -40.8 3.7
+ -19.2 3.7
+ -19.0455 3.72447
+ -18.9061 3.79549
+ -18.7955 3.90611
+ -18.7245 4.04549
+ -18.7 4.2
+ -18.7 6.2
+ -18.7245 6.35451
+ -18.7955 6.49389
+ -18.9061 6.60451
+ -19.0455 6.67553
+ -19.2 6.7
+ -40.8 6.7
+ -40.9545 6.67553
+ -41.0939 6.60451
+ -41.2045 6.49389
+ -41.2755 6.35451
+ -41.3 6.2
+
+
+
+ 0.2 0.2 0.2 1
+
+
+
+
+
+ 0.15
+ -41.3 4.2
+ -41.2755 4.04549
+ -41.2045 3.90611
+ -41.0939 3.79549
+ -40.9545 3.72447
+ -40.8 3.7
+ -19.2 3.7
+ -19.0455 3.72447
+ -18.9061 3.79549
+ -18.7955 3.90611
+ -18.7245 4.04549
+ -18.7 4.2
+ -18.7 6.2
+ -18.7245 6.35451
+ -18.7955 6.49389
+ -18.9061 6.60451
+ -19.0455 6.67553
+ -19.2 6.7
+ -40.8 6.7
+ -40.9545 6.67553
+ -41.0939 6.60451
+ -41.2045 6.49389
+ -41.2755 6.35451
+ -41.3 6.2
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+ 1
+ 0 0 0 0 -0 0
+
+
+
+
+ 0.15
+ -41.3 38.8
+ -41.2755 38.6455
+ -41.2045 38.5061
+ -41.0939 38.3955
+ -40.9545 38.3245
+ -40.8 38.3
+ -19.2 38.3
+ -19.0455 38.3245
+ -18.9061 38.3955
+ -18.7955 38.5061
+ -18.7245 38.6455
+ -18.7 38.8
+ -18.7 40.8
+ -18.7245 40.9545
+ -18.7955 41.0939
+ -18.9061 41.2045
+ -19.0455 41.2755
+ -19.2 41.3
+ -40.8 41.3
+ -40.9545 41.2755
+ -41.0939 41.2045
+ -41.2045 41.0939
+ -41.2755 40.9545
+ -41.3 40.8
+
+
+
+ 0.2 0.2 0.2 1
+
+
+ 0
+ 0
+ 0
+
+
+
+ 1
+ 0 0 0 0 -0 0
+
+
+
+
+ 0.15
+ -41.3 4.2
+ -41.2755 4.04549
+ -41.2045 3.90611
+ -41.0939 3.79549
+ -40.9545 3.72447
+ -40.8 3.7
+ -38.8 3.7
+ -38.6455 3.72447
+ -38.5061 3.79549
+ -38.3955 3.90611
+ -38.3245 4.04549
+ -38.3 4.2
+ -38.3 40.8
+ -38.3245 40.9545
+ -38.3955 41.0939
+ -38.5061 41.2045
+ -38.6455 41.2755
+ -38.8 41.3
+ -40.8 41.3
+ -40.9545 41.2755
+ -41.0939 41.2045
+ -41.2045 41.0939
+ -41.2755 40.9545
+ -41.3 40.8
+
+
+
+ 0.2 0.2 0.2 1
+
+
+ 0
+ 0
+ 0
+
+
+
+ 1
+ 0 0 0 0 -0 0
+
+
+
+
+ 0.15
+ -21.7 4.2
+ -21.6755 4.04549
+ -21.6045 3.90611
+ -21.4939 3.79549
+ -21.3545 3.72447
+ -21.2 3.7
+ -19.2 3.7
+ -19.0455 3.72447
+ -18.9061 3.79549
+ -18.7955 3.90611
+ -18.7245 4.04549
+ -18.7 4.2
+ -18.7 40.8
+ -18.7245 40.9545
+ -18.7955 41.0939
+ -18.9061 41.2045
+ -19.0455 41.2755
+ -19.2 41.3
+ -21.2 41.3
+ -21.3545 41.2755
+ -21.4939 41.2045
+ -21.6045 41.0939
+ -21.6755 40.9545
+ -21.7 40.8
+
+
+
+ 0.2 0.2 0.2 1
+
+
+ 0
+ 0
+ 0
+
+
+
+ 1
+ 0 0 0 0 -0 0
+
+
+
+
+ 0.15
+ -11.3 -40.8
+ -11.2755 -40.9545
+ -11.2045 -41.0939
+ -11.0939 -41.2045
+ -10.9545 -41.2755
+ -10.8 -41.3
+ 40.8 -41.3
+ 40.9545 -41.2755
+ 41.0939 -41.2045
+ 41.2045 -41.0939
+ 41.2755 -40.9545
+ 41.3 -40.8
+ 41.3 -38.8
+ 41.2755 -38.6455
+ 41.2045 -38.5061
+ 41.0939 -38.3955
+ 40.9545 -38.3245
+ 40.8 -38.3
+ -10.8 -38.3
+ -10.9545 -38.3245
+ -11.0939 -38.3955
+ -11.2045 -38.5061
+ -11.2755 -38.6455
+ -11.3 -38.8
+
+
+
+ 0.2 0.2 0.2 1
+
+
+ 0
+ 0
+ 0
+
+
+
+ 1
+ 0 0 0 0 -0 0
+
+
+
+
+ 0.15
+ -11.3 -6.2
+ -11.2755 -6.35451
+ -11.2045 -6.49389
+ -11.0939 -6.60451
+ -10.9545 -6.67553
+ -10.8 -6.7
+ 40.8 -6.7
+ 40.9545 -6.67553
+ 41.0939 -6.60451
+ 41.2045 -6.49389
+ 41.2755 -6.35451
+ 41.3 -6.2
+ 41.3 -4.2
+ 41.2755 -4.04549
+ 41.2045 -3.90611
+ 41.0939 -3.79549
+ 40.9545 -3.72447
+ 40.8 -3.7
+ -10.8 -3.7
+ -10.9545 -3.72447
+ -11.0939 -3.79549
+ -11.2045 -3.90611
+ -11.2755 -4.04549
+ -11.3 -4.2
+
+
+
+ 0.2 0.2 0.2 1
+
+
+ 0
+ 0
+ 0
+
+
+
+ 1
+ 0 0 0 0 -0 0
+
+
+
+
+ 0.15
+ -11.3 -40.8
+ -11.2755 -40.9545
+ -11.2045 -41.0939
+ -11.0939 -41.2045
+ -10.9545 -41.2755
+ -10.8 -41.3
+ -8.8 -41.3
+ -8.64549 -41.2755
+ -8.50611 -41.2045
+ -8.39549 -41.0939
+ -8.32447 -40.9545
+ -8.3 -40.8
+ -8.3 -16.5
+ -8.32447 -16.3455
+ -8.39549 -16.2061
+ -8.50611 -16.0955
+ -8.64549 -16.0245
+ -8.8 -16
+ -10.8 -16
+ -10.9545 -16.0245
+ -11.0939 -16.0955
+ -11.2045 -16.2061
+ -11.2755 -16.3455
+ -11.3 -16.5
+
+
+
+ 0.2 0.2 0.2 1
+
+
+ 0
+ 0
+ 0
+
+
+
+ 1
+ 0 0 0 0 -0 0
+
+
+
+
+ 0.15
+ -11.3 -9.5
+ -11.2755 -9.65451
+ -11.2045 -9.79389
+ -11.0939 -9.90451
+ -10.9545 -9.97553
+ -10.8 -10
+ -8.8 -10
+ -8.64549 -9.97553
+ -8.50611 -9.90451
+ -8.39549 -9.79389
+ -8.32447 -9.65451
+ -8.3 -9.5
+ -8.3 -4.2
+ -8.32447 -4.04549
+ -8.39549 -3.90611
+ -8.50611 -3.79549
+ -8.64549 -3.72447
+ -8.8 -3.7
+ -10.8 -3.7
+ -10.9545 -3.72447
+ -11.0939 -3.79549
+ -11.2045 -3.90611
+ -11.2755 -4.04549
+ -11.3 -4.2
+
+
+
+ 0.2 0.2 0.2 1
+
+
+ 0
+ 0
+ 0
+
+
+
+ 1
+ 0 0 0 0 -0 0
+
+
+
+
+ 0.15
+ 38.3 -40.8
+ 38.3245 -40.9545
+ 38.3955 -41.0939
+ 38.5061 -41.2045
+ 38.6455 -41.2755
+ 38.8 -41.3
+ 40.8 -41.3
+ 40.9545 -41.2755
+ 41.0939 -41.2045
+ 41.2045 -41.0939
+ 41.2755 -40.9545
+ 41.3 -40.8
+ 41.3 -4.2
+ 41.2755 -4.04549
+ 41.2045 -3.90611
+ 41.0939 -3.79549
+ 40.9545 -3.72447
+ 40.8 -3.7
+ 38.8 -3.7
+ 38.6455 -3.72447
+ 38.5061 -3.79549
+ 38.3955 -3.90611
+ 38.3245 -4.04549
+ 38.3 -4.2
+
+
+
+ 0.2 0.2 0.2 1
+
+
+ 0
+ 0
+ 0
+
+
+
+ 1
+ 0 0 0 0 -0 0
+
+
+
+
+ 0.15
+ -11.3 4.2
+ -11.2755 4.04549
+ -11.2045 3.90611
+ -11.0939 3.79549
+ -10.9545 3.72447
+ -10.8 3.7
+ 40.8 3.7
+ 40.9545 3.72447
+ 41.0939 3.79549
+ 41.2045 3.90611
+ 41.2755 4.04549
+ 41.3 4.2
+ 41.3 6.2
+ 41.2755 6.35451
+ 41.2045 6.49389
+ 41.0939 6.60451
+ 40.9545 6.67553
+ 40.8 6.7
+ -10.8 6.7
+ -10.9545 6.67553
+ -11.0939 6.60451
+ -11.2045 6.49389
+ -11.2755 6.35451
+ -11.3 6.2
+
+
+
+ 0.2 0.2 0.2 1
+
+
+ 0
+ 0
+ 0
+
+
+
+ 1
+ 0 0 0 0 -0 0
+
+
+
+
+ 0.15
+ -11.3 38.8
+ -11.2755 38.6455
+ -11.2045 38.5061
+ -11.0939 38.3955
+ -10.9545 38.3245
+ -10.8 38.3
+ 40.8 38.3
+ 40.9545 38.3245
+ 41.0939 38.3955
+ 41.2045 38.5061
+ 41.2755 38.6455
+ 41.3 38.8
+ 41.3 40.8
+ 41.2755 40.9545
+ 41.2045 41.0939
+ 41.0939 41.2045
+ 40.9545 41.2755
+ 40.8 41.3
+ -10.8 41.3
+ -10.9545 41.2755
+ -11.0939 41.2045
+ -11.2045 41.0939
+ -11.2755 40.9545
+ -11.3 40.8
+
+
+
+ 0.2 0.2 0.2 1
+
+
+ 0
+ 0
+ 0
+
+
+
+ 1
+ 0 0 0 0 -0 0
+
+
+
+
+ 0.15
+ -11.3 4.2
+ -11.2755 4.04549
+ -11.2045 3.90611
+ -11.0939 3.79549
+ -10.9545 3.72447
+ -10.8 3.7
+ -8.8 3.7
+ -8.64549 3.72447
+ -8.50611 3.79549
+ -8.39549 3.90611
+ -8.32447 4.04549
+ -8.3 4.2
+ -8.3 40.8
+ -8.32447 40.9545
+ -8.39549 41.0939
+ -8.50611 41.2045
+ -8.64549 41.2755
+ -8.8 41.3
+ -10.8 41.3
+ -10.9545 41.2755
+ -11.0939 41.2045
+ -11.2045 41.0939
+ -11.2755 40.9545
+ -11.3 40.8
+
+
+
+ 0.2 0.2 0.2 1
+
+
+ 0
+ 0
+ 0
+
+
+
+ 1
+ 0 0 0 0 -0 0
+
+
+
+
+ 0.15
+ 38.3 4.2
+ 38.3245 4.04549
+ 38.3955 3.90611
+ 38.5061 3.79549
+ 38.6455 3.72447
+ 38.8 3.7
+ 40.8 3.7
+ 40.9545 3.72447
+ 41.0939 3.79549
+ 41.2045 3.90611
+ 41.2755 4.04549
+ 41.3 4.2
+ 41.3 40.8
+ 41.2755 40.9545
+ 41.2045 41.0939
+ 41.0939 41.2045
+ 40.9545 41.2755
+ 40.8 41.3
+ 38.8 41.3
+ 38.6455 41.2755
+ 38.5061 41.2045
+ 38.3955 41.0939
+ 38.3245 40.9545
+ 38.3 40.8
+
+
+
+ 0.2 0.2 0.2 1
+
+
+ 0
+ 0
+ 0
+
+
+
+ 1
+ 0 0 0 0 -0 0
+
+
+
+
+ 0.15
+ 48.7 -40.8
+ 48.7245 -40.9545
+ 48.7955 -41.0939
+ 48.9061 -41.2045
+ 49.0455 -41.2755
+ 49.2 -41.3
+ 105.8 -41.3
+ 105.955 -41.2755
+ 106.094 -41.2045
+ 106.205 -41.0939
+ 106.276 -40.9545
+ 106.3 -40.8
+ 106.3 -38.8
+ 106.276 -38.6455
+ 106.205 -38.5061
+ 106.094 -38.3955
+ 105.955 -38.3245
+ 105.8 -38.3
+ 49.2 -38.3
+ 49.0455 -38.3245
+ 48.9061 -38.3955
+ 48.7955 -38.5061
+ 48.7245 -38.6455
+ 48.7 -38.8
+
+
+
+ 0.2 0.2 0.2 1
+
+
+ 0
+ 0
+ 0
+
+
+
+ 1
+ 0 0 0 0 -0 0
+
+
+
+
+ 0.15
+ 48.7 -6.2
+ 48.7245 -6.35451
+ 48.7955 -6.49389
+ 48.9061 -6.60451
+ 49.0455 -6.67553
+ 49.2 -6.7
+ 84.5 -6.7
+ 84.6545 -6.67553
+ 84.7939 -6.60451
+ 84.9045 -6.49389
+ 84.9755 -6.35451
+ 85 -6.2
+ 85 -4.2
+ 84.9755 -4.04549
+ 84.9045 -3.90611
+ 84.7939 -3.79549
+ 84.6545 -3.72447
+ 84.5 -3.7
+ 49.2 -3.7
+ 49.0455 -3.72447
+ 48.9061 -3.79549
+ 48.7955 -3.90611
+ 48.7245 -4.04549
+ 48.7 -4.2
+
+
+
+ 0.2 0.2 0.2 1
+
+
+ 0
+ 0
+ 0
+
+
+
+ 1
+ 0 0 0 0 -0 0
+
+
+
+
+ 0.15
+ 95 -6.2
+ 95.0245 -6.35451
+ 95.0955 -6.49389
+ 95.2061 -6.60451
+ 95.3455 -6.67553
+ 95.5 -6.7
+ 105.8 -6.7
+ 105.955 -6.67553
+ 106.094 -6.60451
+ 106.205 -6.49389
+ 106.276 -6.35451
+ 106.3 -6.2
+ 106.3 -4.2
+ 106.276 -4.04549
+ 106.205 -3.90611
+ 106.094 -3.79549
+ 105.955 -3.72447
+ 105.8 -3.7
+ 95.5 -3.7
+ 95.3455 -3.72447
+ 95.2061 -3.79549
+ 95.0955 -3.90611
+ 95.0245 -4.04549
+ 95 -4.2
+
+
+
+ 0.2 0.2 0.2 1
+
+
+ 0
+ 0
+ 0
+
+
+
+ 1
+ 0 0 0 0 -0 0
+
+
+
+
+ 0.15
+ 48.7 -40.8
+ 48.7245 -40.9545
+ 48.7955 -41.0939
+ 48.9061 -41.2045
+ 49.0455 -41.2755
+ 49.2 -41.3
+ 51.2 -41.3
+ 51.3545 -41.2755
+ 51.4939 -41.2045
+ 51.6045 -41.0939
+ 51.6755 -40.9545
+ 51.7 -40.8
+ 51.7 -4.2
+ 51.6755 -4.04549
+ 51.6045 -3.90611
+ 51.4939 -3.79549
+ 51.3545 -3.72447
+ 51.2 -3.7
+ 49.2 -3.7
+ 49.0455 -3.72447
+ 48.9061 -3.79549
+ 48.7955 -3.90611
+ 48.7245 -4.04549
+ 48.7 -4.2
+
+
+
+ 0.2 0.2 0.2 1
+
+
+ 0
+ 0
+ 0
+
+
+
+ 1
+ 0 0 0 0 -0 0
+
+
+
+
+ 0.15
+ 103.3 -40.8
+ 103.324 -40.9545
+ 103.395 -41.0939
+ 103.506 -41.2045
+ 103.645 -41.2755
+ 103.8 -41.3
+ 105.8 -41.3
+ 105.955 -41.2755
+ 106.094 -41.2045
+ 106.205 -41.0939
+ 106.276 -40.9545
+ 106.3 -40.8
+ 106.3 -4.2
+ 106.276 -4.04549
+ 106.205 -3.90611
+ 106.094 -3.79549
+ 105.955 -3.72447
+ 105.8 -3.7
+ 103.8 -3.7
+ 103.645 -3.72447
+ 103.506 -3.79549
+ 103.395 -3.90611
+ 103.324 -4.04549
+ 103.3 -4.2
+
+
+
+ 0.2 0.2 0.2 1
+
+
+ 0
+ 0
+ 0
+
+
+
+ 1
+ 0 0 0 0 -0 0
+
+
+
+
+ 0.15
+ 48.7 4.2
+ 48.7245 4.04549
+ 48.7955 3.90611
+ 48.9061 3.79549
+ 49.0455 3.72447
+ 49.2 3.7
+ 105.8 3.7
+ 105.955 3.72447
+ 106.094 3.79549
+ 106.205 3.90611
+ 106.276 4.04549
+ 106.3 4.2
+ 106.3 6.2
+ 106.276 6.35451
+ 106.205 6.49389
+ 106.094 6.60451
+ 105.955 6.67553
+ 105.8 6.7
+ 49.2 6.7
+ 49.0455 6.67553
+ 48.9061 6.60451
+ 48.7955 6.49389
+ 48.7245 6.35451
+ 48.7 6.2
+
+
+
+ 0.2 0.2 0.2 1
+
+
+ 0
+ 0
+ 0
+
+
+
+ 1
+ 0 0 0 0 -0 0
+
+
+
+
+ 0.15
+ 48.7 38.8
+ 48.7245 38.6455
+ 48.7955 38.5061
+ 48.9061 38.3955
+ 49.0455 38.3245
+ 49.2 38.3
+ 105.8 38.3
+ 105.955 38.3245
+ 106.094 38.3955
+ 106.205 38.5061
+ 106.276 38.6455
+ 106.3 38.8
+ 106.3 40.8
+ 106.276 40.9545
+ 106.205 41.0939
+ 106.094 41.2045
+ 105.955 41.2755
+ 105.8 41.3
+ 49.2 41.3
+ 49.0455 41.2755
+ 48.9061 41.2045
+ 48.7955 41.0939
+ 48.7245 40.9545
+ 48.7 40.8
+
+
+
+ 0.2 0.2 0.2 1
+
+
+ 0
+ 0
+ 0
+
+
+
+ 1
+ 0 0 0 0 -0 0
+
+
+
+
+ 0.15
+ 48.7 4.2
+ 48.7245 4.04549
+ 48.7955 3.90611
+ 48.9061 3.79549
+ 49.0455 3.72447
+ 49.2 3.7
+ 51.2 3.7
+ 51.3545 3.72447
+ 51.4939 3.79549
+ 51.6045 3.90611
+ 51.6755 4.04549
+ 51.7 4.2
+ 51.7 40.8
+ 51.6755 40.9545
+ 51.6045 41.0939
+ 51.4939 41.2045
+ 51.3545 41.2755
+ 51.2 41.3
+ 49.2 41.3
+ 49.0455 41.2755
+ 48.9061 41.2045
+ 48.7955 41.0939
+ 48.7245 40.9545
+ 48.7 40.8
+
+
+
+ 0.2 0.2 0.2 1
+
+
+ 0
+ 0
+ 0
+
+
+
+ 1
+ 0 0 0 0 -0 0
+
+
+
+
+ 0.15
+ 103.3 4.2
+ 103.324 4.04549
+ 103.395 3.90611
+ 103.506 3.79549
+ 103.645 3.72447
+ 103.8 3.7
+ 105.8 3.7
+ 105.955 3.72447
+ 106.094 3.79549
+ 106.205 3.90611
+ 106.276 4.04549
+ 106.3 4.2
+ 106.3 40.8
+ 106.276 40.9545
+ 106.205 41.0939
+ 106.094 41.2045
+ 105.955 41.2755
+ 105.8 41.3
+ 103.8 41.3
+ 103.645 41.2755
+ 103.506 41.2045
+ 103.395 41.0939
+ 103.324 40.9545
+ 103.3 40.8
+
+
+
+ 0.2 0.2 0.2 1
+
+
+ 0
+ 0
+ 0
+
+
+
+ 1
+ 0 0 0 0 -0 0
+
+
+
+
+ 0.15
+ 113.7 -41.2
+ 113.705 -41.2309
+ 113.719 -41.2588
+ 113.741 -41.2809
+ 113.769 -41.2951
+ 113.8 -41.3
+ 116.2 -41.3
+ 116.231 -41.2951
+ 116.259 -41.2809
+ 116.281 -41.2588
+ 116.295 -41.2309
+ 116.3 -41.2
+ 116.3 -40.9
+ 116.295 -40.8691
+ 116.281 -40.8412
+ 116.259 -40.8191
+ 116.231 -40.8049
+ 116.2 -40.8
+ 113.8 -40.8
+ 113.769 -40.8049
+ 113.741 -40.8191
+ 113.719 -40.8412
+ 113.705 -40.8691
+ 113.7 -40.9
+
+
+
+ 0.2 0.2 0.2 1
+
+
+ 0
+ 0
+ 0
+
+
+
+ 1
+ 0 0 0 0 -0 0
+
+
+
+
+ 0.15
+ 113.7 -4.1
+ 113.705 -4.1309
+ 113.719 -4.15878
+ 113.741 -4.1809
+ 113.769 -4.19511
+ 113.8 -4.2
+ 116.2 -4.2
+ 116.231 -4.19511
+ 116.259 -4.1809
+ 116.281 -4.15878
+ 116.295 -4.1309
+ 116.3 -4.1
+ 116.3 -3.8
+ 116.295 -3.7691
+ 116.281 -3.74122
+ 116.259 -3.7191
+ 116.231 -3.70489
+ 116.2 -3.7
+ 113.8 -3.7
+ 113.769 -3.70489
+ 113.741 -3.7191
+ 113.719 -3.74122
+ 113.705 -3.7691
+ 113.7 -3.8
+
+
+
+ 0.2 0.2 0.2 1
+
+
+ 0
+ 0
+ 0
+
+
+
+ 1
+ 0 0 0 0 -0 0
+
+
+
+
+ 0.15
+ 113.7 -41.2
+ 113.705 -41.2309
+ 113.719 -41.2588
+ 113.741 -41.2809
+ 113.769 -41.2951
+ 113.8 -41.3
+ 114.1 -41.3
+ 114.131 -41.2951
+ 114.159 -41.2809
+ 114.181 -41.2588
+ 114.195 -41.2309
+ 114.2 -41.2
+ 114.2 -3.8
+ 114.195 -3.7691
+ 114.181 -3.74122
+ 114.159 -3.7191
+ 114.131 -3.70489
+ 114.1 -3.7
+ 113.8 -3.7
+ 113.769 -3.70489
+ 113.741 -3.7191
+ 113.719 -3.74122
+ 113.705 -3.7691
+ 113.7 -3.8
+
+
+
+ 0.2 0.2 0.2 1
+
+
+ 0
+ 0
+ 0
+
+
+
+ 1
+ 0 0 0 0 -0 0
+
+
+
+
+ 0.15
+ 115.8 -41.2
+ 115.805 -41.2309
+ 115.819 -41.2588
+ 115.841 -41.2809
+ 115.869 -41.2951
+ 115.9 -41.3
+ 116.2 -41.3
+ 116.231 -41.2951
+ 116.259 -41.2809
+ 116.281 -41.2588
+ 116.295 -41.2309
+ 116.3 -41.2
+ 116.3 -3.8
+ 116.295 -3.7691
+ 116.281 -3.74122
+ 116.259 -3.7191
+ 116.231 -3.70489
+ 116.2 -3.7
+ 115.9 -3.7
+ 115.869 -3.70489
+ 115.841 -3.7191
+ 115.819 -3.74122
+ 115.805 -3.7691
+ 115.8 -3.8
+
+
+
+ 0.2 0.2 0.2 1
+
+
+ 0
+ 0
+ 0
+
+
+
+ 1
+ 0 0 0 0 -0 0
+
+
+
+
+ 0.15
+ 113.7 3.8
+ 113.705 3.7691
+ 113.719 3.74122
+ 113.741 3.7191
+ 113.769 3.70489
+ 113.8 3.7
+ 116.2 3.7
+ 116.231 3.70489
+ 116.259 3.7191
+ 116.281 3.74122
+ 116.295 3.7691
+ 116.3 3.8
+ 116.3 4.1
+ 116.295 4.1309
+ 116.281 4.15878
+ 116.259 4.1809
+ 116.231 4.19511
+ 116.2 4.2
+ 113.8 4.2
+ 113.769 4.19511
+ 113.741 4.1809
+ 113.719 4.15878
+ 113.705 4.1309
+ 113.7 4.1
+
+
+
+ 0.2 0.2 0.2 1
+
+
+ 0
+ 0
+ 0
+
+
+
+ 1
+ 0 0 0 0 -0 0
+
+
+
+
+ 0.15
+ 113.7 40.9
+ 113.705 40.8691
+ 113.719 40.8412
+ 113.741 40.8191
+ 113.769 40.8049
+ 113.8 40.8
+ 116.2 40.8
+ 116.231 40.8049
+ 116.259 40.8191
+ 116.281 40.8412
+ 116.295 40.8691
+ 116.3 40.9
+ 116.3 41.2
+ 116.295 41.2309
+ 116.281 41.2588
+ 116.259 41.2809
+ 116.231 41.2951
+ 116.2 41.3
+ 113.8 41.3
+ 113.769 41.2951
+ 113.741 41.2809
+ 113.719 41.2588
+ 113.705 41.2309
+ 113.7 41.2
+
+
+
+ 0.2 0.2 0.2 1
+
+
+ 0
+ 0
+ 0
+
+
+
+ 1
+ 0 0 0 0 -0 0
+
+
+
+
+ 0.15
+ 113.7 3.8
+ 113.705 3.7691
+ 113.719 3.74122
+ 113.741 3.7191
+ 113.769 3.70489
+ 113.8 3.7
+ 114.1 3.7
+ 114.131 3.70489
+ 114.159 3.7191
+ 114.181 3.74122
+ 114.195 3.7691
+ 114.2 3.8
+ 114.2 41.2
+ 114.195 41.2309
+ 114.181 41.2588
+ 114.159 41.2809
+ 114.131 41.2951
+ 114.1 41.3
+ 113.8 41.3
+ 113.769 41.2951
+ 113.741 41.2809
+ 113.719 41.2588
+ 113.705 41.2309
+ 113.7 41.2
+
+
+
+ 0.2 0.2 0.2 1
+
+
+ 0
+ 0
+ 0
+
+
+
+ 1
+ 0 0 0 0 -0 0
+
+
+
+
+ 0.15
+ 115.8 3.8
+ 115.805 3.7691
+ 115.819 3.74122
+ 115.841 3.7191
+ 115.869 3.70489
+ 115.9 3.7
+ 116.2 3.7
+ 116.231 3.70489
+ 116.259 3.7191
+ 116.281 3.74122
+ 116.295 3.7691
+ 116.3 3.8
+ 116.3 41.2
+ 116.295 41.2309
+ 116.281 41.2588
+ 116.259 41.2809
+ 116.231 41.2951
+ 116.2 41.3
+ 115.9 41.3
+ 115.869 41.2951
+ 115.841 41.2809
+ 115.819 41.2588
+ 115.805 41.2309
+ 115.8 41.2
+
+
+
+ 0.2 0.2 0.2 1
+
+
+ 0
+ 0
+ 0
+
+
+
+ 1
+ 0 0 0 0 -0 0
+
+
+
+
+ 0.15
+ 123.7 -51.2
+ 123.724 -51.3545
+ 123.795 -51.4939
+ 123.906 -51.6045
+ 124.045 -51.6755
+ 124.2 -51.7
+ 126.2 -51.7
+ 126.355 -51.6755
+ 126.494 -51.6045
+ 126.605 -51.4939
+ 126.676 -51.3545
+ 126.7 -51.2
+ 126.7 48.2
+ 126.676 48.3545
+ 126.605 48.4939
+ 126.494 48.6045
+ 126.355 48.6755
+ 126.2 48.7
+ 124.2 48.7
+ 124.045 48.6755
+ 123.906 48.6045
+ 123.795 48.4939
+ 123.724 48.3545
+ 123.7 48.2
+
+
+
+ 0.2 0.2 0.2 1
+
+
+ 0
+ 0
+ 0
+
+
+
+ 1
+ 0 0 0 0 -0 0
+
+
+
+
+ 0.15
+ -48.7 -51.2
+ -48.6755 -51.3545
+ -48.6045 -51.4939
+ -48.4939 -51.6045
+ -48.3545 -51.6755
+ -48.2 -51.7
+ 126.2 -51.7
+ 126.355 -51.6755
+ 126.494 -51.6045
+ 126.605 -51.4939
+ 126.676 -51.3545
+ 126.7 -51.2
+ 126.7 -49.2
+ 126.676 -49.0455
+ 126.605 -48.9061
+ 126.494 -48.7955
+ 126.355 -48.7245
+ 126.2 -48.7
+ -48.2 -48.7
+ -48.3545 -48.7245
+ -48.4939 -48.7955
+ -48.6045 -48.9061
+ -48.6755 -49.0455
+ -48.7 -49.2
+
+
+
+ 0.2 0.2 0.2 1
+
+
+ 0
+ 0
+ 0
+
+
+
+ 1
+
+
+
+
+ model://house_1/meshes/house_1.dae
+ 1.5 1.5 1.5
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://house_1/meshes/house_1.dae
+ 1.5 1.5 1.5
+
+
+
+
+
+ House_1_Normal.png
+
+
+
+ 0
+ 0
+ 0
+
+ 61.74 22.76 0 0 0 -1.57
+
+
+ 1
+
+
+
+
+ model://house_1/meshes/house_1.dae
+ 1.5 1.5 1.5
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://house_1/meshes/house_1.dae
+ 1.5 1.5 1.5
+
+
+
+
+
+ House_1_Normal.png
+
+
+
+ 0
+ 0
+ 0
+
+ 86.62 27.93 0 0 -0 3.14
+
+
+ 1
+
+
+
+
+ model://house_3/meshes/house_3.dae
+ 1.5 1.5 1.5
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://house_3/meshes/house_3.dae
+ 1.5 1.5 1.5
+
+
+
+
+
+ model://house_1/materials/textures/House_1_Normal.png
+
+
+
+ 0
+ 0
+ 0
+
+ 96.43 14.14 0 0 -0 0
+
+
+ 1
+
+
+
+
+ model://house_2/meshes/house_2.dae
+ 1.5 1.5 1.5
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://house_2/meshes/house_2.dae
+ 1.5 1.5 1.5
+
+
+
+
+
+ model://house_1/materials/textures/House_1_Normal.png
+
+
+
+ 0
+ 0
+ 0
+
+ 76.71 13.4 0 0 -0 0
+
+
+ 1
+ 61.88 -30.82 0 0 -0 3.14
+
+
+
+
+ model://gas_station/meshes/gas_station.dae
+
+
+
+
+ 1 1 1 1
+
+
+ 0
+ 0
+ 0
+
+
+
+ 1
+ 61.581 -16.664 0 0 -0 0
+
+
+
+
+ 20 20 0.05
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+ 1
+
+
+
+
+ model://fire_hydrant/meshes/fire_hydrant.dae
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://fire_hydrant/meshes/fire_hydrant.dae
+
+
+
+ 0
+ 0
+ 0
+
+ 103 -4.386 0.15 0 -0 0
+
+
+ 1
+
+ 0 0 3.15931 0 -0 0
+
+
+
+ 3 3 2
+ model://fast_food/meshes/fast_food.dae
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 3 3 2
+ model://fast_food/meshes/fast_food.dae
+
+
+
+
+
+ FastFood_Normal.png
+
+
+
+ 0
+ 0
+ 0
+
+ 28.25 -13.93 0 0 -0 0
+
+
+
+
+
+
+ 1.5 1.5 1.5
+ model://dumpster/meshes/dumpster.dae
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.5 1.5 1.5
+ model://dumpster/meshes/dumpster.dae
+
+
+
+
+
+
+ 0
+
+ 0 0 0 0 -0 0
+
+ 1
+ 0
+ 0
+ 1
+ 0
+ 1
+
+ 1
+
+ 0
+ 0
+
+ 15.94 -13.63 0 0 -0 3.14
+
+
+ 1
+
+
+
+
+ model://fire_hydrant/meshes/fire_hydrant.dae
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://fire_hydrant/meshes/fire_hydrant.dae
+
+
+
+ 0
+ 0
+ 0
+
+ 38.5 -4.38 0.15 0 -0 0
+
+
+ 1
+
+
+
+
+ model://house_2/meshes/house_2.dae
+ 1.5 1.5 1.5
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://house_2/meshes/house_2.dae
+ 1.5 1.5 1.5
+
+
+
+
+
+ model://house_1/materials/textures/House_1_Normal.png
+
+
+
+ 0
+ 0
+ 0
+
+ 1.61 -14.15 0 0 -0 3.14
+
+
+ 1
+
+
+
+
+ model://house_2/meshes/house_2.dae
+ 1.5 1.5 1.5
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://house_2/meshes/house_2.dae
+ 1.5 1.5 1.5
+
+
+
+
+
+ model://house_1/materials/textures/House_1_Normal.png
+
+
+
+ 0
+ 0
+ 0
+
+ -0.59 -26.6 0 0 0 -1.57
+
+
+ 1
+
+
+
+
+ model://house_1/meshes/house_1.dae
+ 1.5 1.5 1.5
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://house_1/meshes/house_1.dae
+ 1.5 1.5 1.5
+
+
+
+
+
+ House_1_Normal.png
+
+
+
+ 0
+ 0
+ 0
+
+ -27.49 25.344 0 0 0 -1.57
+
+
+ -32 8 0 0 -0 0
+
+
+ 2
+
+ 0.0416667
+ 0
+ 0
+ 0.0566667
+ 0
+ 0.0683333
+
+ 0 0 0 0 -0 0
+
+
+
+
+ 0.5 0.4 0.3
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0 0 -0.15 0 -0 0
+
+
+ model://cardboard_box/meshes/cardboard_box.dae
+ 1.25932 1.00745 0.755591
+
+
+
+ 0
+ 0
+ 0
+
+
+
+ 1
+
+
+
+
+ model://house_3/meshes/house_3.dae
+ 1.5 1.5 1.5
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://house_3/meshes/house_3.dae
+ 1.5 1.5 1.5
+
+
+
+
+
+ model://house_1/materials/textures/House_1_Normal.png
+
+
+
+ 0
+ 0
+ 0
+
+ -33.39 -21.3 0 0 0 -1.57
+
+
+ 1
+
+
+
+
+ model://house_3/meshes/house_3.dae
+ 1.5 1.5 1.5
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://house_3/meshes/house_3.dae
+ 1.5 1.5 1.5
+
+
+
+
+
+ model://house_1/materials/textures/House_1_Normal.png
+
+
+
+ 0
+ 0
+ 0
+
+ -28.126 -32.93 0 0 -0 0
+
+
+ 1
+
+
+
+
+ model://house_3/meshes/house_3.dae
+ 1.5 1.5 1.5
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://house_3/meshes/house_3.dae
+ 1.5 1.5 1.5
+
+
+
+
+
+ model://house_1/materials/textures/House_1_Normal.png
+
+
+
+ 0
+ 0
+ 0
+
+ -25.739 -19.38 0 0 -0 1.57
+
+
+ 1
+
+
+
+
+ model://fire_hydrant/meshes/fire_hydrant.dae
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://fire_hydrant/meshes/fire_hydrant.dae
+
+
+
+ 0
+ 0
+ 0
+
+ -20.34 -4.38 0.15 0 -0 0
+
+
+ 17.9
+ -73 -47.96 0.01
+ -73 2.96 0.01
+
+
+
+
+
+ 1
+
+
+
+
+ model://stop_sign/meshes/stop_sign.dae
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://stop_sign/meshes/stop_sign.dae
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+ -11.3 -3.7 0 0 -0 0
+
+
+ 1
+
+
+
+
+ model://stop_sign/meshes/stop_sign.dae
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://stop_sign/meshes/stop_sign.dae
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+ 41.3 -41.3 0 0 -0 3.14
+
+
+ 1
+
+
+
+
+ model://stop_sign/meshes/stop_sign.dae
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://stop_sign/meshes/stop_sign.dae
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+ 41.3 3.7 0 0 -0 3.14
+
+
+ 1
+
+
+
+
+ model://stop_sign/meshes/stop_sign.dae
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://stop_sign/meshes/stop_sign.dae
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+ -18.7 -3.7 0 0 0 -1.57
+
+
+ 1
+
+
+
+
+ model://stop_sign/meshes/stop_sign.dae
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://stop_sign/meshes/stop_sign.dae
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+ 41.3 -3.7 0 0 0 -1.57
+
+
+ 1
+
+
+
+
+ model://stop_sign/meshes/stop_sign.dae
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://stop_sign/meshes/stop_sign.dae
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+ 106.3 -3.7 0 0 0 -1.57
+
+
+ 1
+
+
+
+
+ model://lamp_post/meshes/lamp_post.dae
+ 3 3 3
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://lamp_post/meshes/lamp_post.dae
+ 3 3 3
+
+
+
+ 0
+ 0
+ 0
+
+ -35.1 -3.7 0 0 -0 3.14
+
+
+ 1
+
+
+
+
+ model://lamp_post/meshes/lamp_post.dae
+ 3 3 3
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://lamp_post/meshes/lamp_post.dae
+ 3 3 3
+
+
+
+ 0
+ 0
+ 0
+
+ -25.2 3.7 0 0 -0 0
+
+
+ 1
+
+
+
+
+ model://lamp_post/meshes/lamp_post.dae
+ 3 3 3
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://lamp_post/meshes/lamp_post.dae
+ 3 3 3
+
+
+
+ 0
+ 0
+ 0
+
+ -3 -3.7 0 0 -0 3.14
+
+
+ 1
+
+
+
+
+ model://lamp_post/meshes/lamp_post.dae
+ 3 3 3
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://lamp_post/meshes/lamp_post.dae
+ 3 3 3
+
+
+
+ 0
+ 0
+ 0
+
+ 21 -3.7 0 0 -0 3.14
+
+
+ 1
+
+
+
+
+ model://lamp_post/meshes/lamp_post.dae
+ 3 3 3
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://lamp_post/meshes/lamp_post.dae
+ 3 3 3
+
+
+
+ 0
+ 0
+ 0
+
+ 58 -3.7 0 0 -0 3.14
+
+
+ 1
+
+
+
+
+ model://lamp_post/meshes/lamp_post.dae
+ 3 3 3
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://lamp_post/meshes/lamp_post.dae
+ 3 3 3
+
+
+
+ 0
+ 0
+ 0
+
+ 71 3.7 0 0 -0 0
+
+
+ 1
+
+
+
+
+ model://lamp_post/meshes/lamp_post.dae
+ 3 3 3
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://lamp_post/meshes/lamp_post.dae
+ 3 3 3
+
+
+
+ 0
+ 0
+ 0
+
+ 84 -3.7 0 0 -0 3.14
+
+
+ 1
+
+
+
+
+ model://lamp_post/meshes/lamp_post.dae
+ 3 3 3
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://lamp_post/meshes/lamp_post.dae
+ 3 3 3
+
+
+
+ 0
+ 0
+ 0
+
+ 90.5 3.7 0 0 -0 0
+
+ 0 0 -9.8
+ 6e-06 2.3e-05 -4.2e-05
+
+
+
+ EARTH_WGS84
+ 0
+ 0
+ 0
+ 0
+
+
+ 2097 624000000
+ 349 55330025
+ 1618996346 402288157
+ 86362
+
+ 8.4878 32.9372 0.750007 1e-05 -6.3e-05 1.7e-05
+ 1 1 1
+
+ 8.4878 32.9372 0.750007 1e-05 -6.3e-05 1.7e-05
+ 0 0 0 0 -0 0
+ -2.35945 -1.06016 6.72194 -2.70396 -0.061338 2.20255
+ -94.3779 -42.4063 268.877 0 -0 0
+
+
+
+ 1.63485 29.1069 0.625007 -1e-05 6.1e-05 9e-05
+ 1 1 1
+
+ 1.63485 29.1069 0.625007 -1e-05 6.1e-05 9e-05
+ 0 0 0 0 -0 0
+ 2.55256 1.0555 6.97215 2.3522 -0.90108 2.47191
+ 102.102 42.2201 278.886 0 -0 0
+
+
+
+ 14.2767 34.2183 0.0635 -5e-06 0 0.003392
+ 1 1 1
+
+ 14.2767 34.2183 0.0635 -5e-06 0 0.003392
+ 0 0 0 0 -0 0
+ 0.061659 -1.14057 3.15599 2.00716 0.972408 0.059004
+ 1.54148 -28.5143 78.8998 0 -0 0
+
+
+
+ 5.58824 35.6933 0 0 -0 0
+ 1 1 1
+
+ 5.58824 35.6933 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 89.3184 -28.9368 0 0 -0 0
+ 1 1 1
+
+ 89.3184 -28.9368 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 91.0804 -33.1643 0 0 -0 0
+ 1 1 1
+
+ 91.0804 -33.1643 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 82.0143 -33.0749 0 0 -0 0
+ 1 1 1
+
+ 82.0143 -33.0749 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 82.6647 -28.562 0 0 -0 0
+ 1 1 1
+
+ 82.6647 -28.562 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ -11.6153 -31.1905 1.01559 1.5881 0.091488 2.84636
+ 1 1 1
+
+ -11.6152 -31.1221 1.47584 1.78814 -0.067998 2.82507
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ -11.6195 -31.1667 1.01146 1.59174 0.088817 2.84641
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ -11.6195 -31.1667 1.01146 -1.88517 0.622288 -1.26299
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ -11.8385 -31.089 0.798672 -1.5841 0.034783 -1.54837
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ -11.8048 -31.1029 1.33781 -1.73624 -0.02139 -0.582659
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ -11.8385 -31.089 0.798672 -1.84819 0.481694 -0.835132
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ -11.6415 -30.8435 0.075563 -3.1123 -0.072367 2.9371
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ -11.8281 -31.1505 1.02275 -1.37255 0.186491 -0.579243
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ -11.8385 -31.089 0.798672 -1.40895 0.218743 -0.759636
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ -11.8549 -31.0842 0.770708 -1.83329 0.361829 -0.798805
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ -11.628 -30.8832 0.519561 -1.49971 0.0617 -0.386049
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ -11.6016 -31.1122 1.27107 1.19346 1.2289 2.69762
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ -11.6139 -30.7093 0.071558 2.70705 -0.065037 2.94514
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ -11.6905 -31.1 0.892803 -1.03032 0.062925 -0.385313
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ -11.6195 -31.1667 1.01146 1.88838 0.010217 2.85063
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ -11.6016 -31.1122 1.27107 1.48422 0.106186 2.8795
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ -11.6158 -31.1186 1.38416 1.53578 -0.016762 2.86421
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ -11.6195 -31.1667 1.01146 -2.07754 -0.68577 0.825004
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ -11.3368 -31.0596 0.805508 -1.02119 -0.767045 0.977595
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ -11.417 -31.1783 1.32569 -1.57345 -0.060284 0.126241
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ -11.3368 -31.0596 0.805508 -0.823039 -0.538109 -0.043973
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ -11.6613 -31.365 0.072895 -2.69364 -0.062556 2.84556
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ -11.3973 -31.1766 0.997924 -1.06185 -0.333734 0.054361
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ -11.3368 -31.0596 0.805508 -1.08424 -0.367029 0.119571
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ -11.318 -31.0288 0.776337 -0.867282 -0.445006 0.049607
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ -11.5764 -31.2123 0.476848 -1.96095 0.123966 -0.215297
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ -11.6016 -31.1122 1.27107 1.41282 -1.29561 2.96173
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ -11.6269 -31.2386 0.010095 -3.09695 -0.067077 2.83575
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ -11.5093 -31.1551 0.909668 -1.73039 0.122537 -0.215064
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ -11.6087 -31.1262 1.13902 1.68622 -0.026121 2.89256
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ -11.6016 -31.1122 1.27107 1.64165 -0.067584 2.90895
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ -11.6153 -31.1905 1.01559 1.5881 0.091488 2.84636
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 4.01686 -1.03557 7 -1.6 0 2e-06
+ 1 1 1
+
+ 4.01686 -1.03557 7 -1.54434 1.54158 -1.54353
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 61.581 -16.664 0 0 -0 0
+ 1 1 1
+
+ 61.581 -16.664 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ -31.9994 8 0.15 -1.8e-05 1e-06 -2e-06
+ 1 1 1
+
+ -31.9994 8 0.15 -1.8e-05 1e-06 -2e-06
+ 0 0 0 0 -0 0
+ -0.012492 -4.22249 5.95094 3.03613 -0.040975 0.020538
+ -0.024984 -8.44497 11.9019 0 -0 0
+
+
+
+ -26.902 13.6572 0 0 -0 0
+ 1 1 1
+
+ -26.902 13.6572 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 47.1776 67.9543 0.427077 -0.000107 -0.061071 -1.1985
+ 1 1 1
+
+ 47.1776 67.9543 0.427077 -0.000107 -0.061071 -1.1985
+ 0.000434 -0.007331 -0.01796 0.007019 0.006557 -0.002499
+ 2.86979 0.298651 -1.9938 -2.29998 -0.642166 2.18693
+ 1952.57 203.199 -1356.56 0 -0 0
+
+
+ 46.942 68.5586 3.2774 -0.000133 -0.591185 -1.19843
+ 0.025197 -0.03932 -0.052397 0.013649 0.009211 -0.002765
+ 4.33815 2.29184 6.02775 -0.500489 0.36881 2.33023
+ 8.67631 4.58368 12.0555 0 -0 0
+
+
+ 47.658 66.7361 -0.340401 3.12834 -0.314953 1.94726
+ -0.254556 -0.139783 -1.23879 -0.318047 0.732734 -0.007506
+ 56.9735 14.9585 -401.34 -1.63281 1.07897 2.84227
+ 113.947 29.9171 -802.68 0 -0 0
+
+
+ 47.2 67.6076 1.58121 -0.061433 -0.58704 -1.20924
+ 0.014656 -0.008722 -0.188135 0.076083 0.024726 0.001309
+ 6.03876 -1.33836 -8.13271 2.19021 -0.92865 -2.33324
+ 12.0775 -2.67672 -16.2654 0 -0 0
+
+
+ 47.3139 67.5505 1.45595 0.00391 -0.591136 -1.21061
+ 0.004658 -0.010722 -0.050568 0.018699 0.011219 -0.002529
+ 5.75033 -1.25324 -3.82191 0.064682 0.926692 -1.55838
+ 11.5007 -2.50647 -7.64383 0 -0 0
+
+
+ 47.8086 66.3387 1.38827 1.59026 -0.059789 -1.19849
+ 0.001367 -0.015202 0.001558 -0.026681 0.006019 -0.003653
+ 1.4553 -1.13242 0.669719 -2.69408 -0.580607 0.333924
+ 26.7338 -20.8026 12.3027 0 -0 0
+
+
+ 46.9748 68.4233 -0.639533 -0.082572 1.33753 -1.2789
+ 0.023142 0.041788 -0.076628 0.06604 -0.035924 0.000434
+ -6.0429 -2.04267 171.933 -0.73697 -1.17116 -3.01509
+ -12.0858 -4.08534 343.866 0 -0 0
+
+
+ 47.1288 68.1745 -0.407666 0.068049 1.00024 -1.14059
+ -0.009565 0.011457 -0.066916 0.03506 0.014208 -0.002231
+ 0.362262 0.113409 -0.256015 2.37879 0.756625 2.25137
+ 0.724524 0.226818 -0.512031 0 -0 0
+
+
+ 47.3965 67.6842 1.58404 0.061338 -0.588362 -1.18763
+ 0.054706 -0.005747 0.787351 -0.299574 -0.156513 0.01717
+ 8.31026 -5.76892 0.237208 -1.15772 0.747676 1.61179
+ 16.6205 -11.5378 0.474417 0 -0 0
+
+
+ 47.3513 67.5649 1.45737 -0.004188 -0.591838 -1.18623
+ 0.030094 -0.055875 0.361206 -0.161492 -0.058938 0.000854
+ 6.54277 -3.64981 -1.96651 0.440169 0.75554 -2.19766
+ 13.0855 -7.29962 -3.93302 0 -0 0
+
+
+ 47.189 67.9587 0.427236 -0.001079 -0.061089 -1.19623
+ 0.180054 0.065707 -0.02896 0.003005 0.021158 0.032173
+ 3.41658 -0.05916 8.66886 3.1311 -1.43841 0.828374
+ 6.83316 -0.11832 17.3377 0 -0 0
+
+
+
+ 0 0 0 0 -0 0
+ 1 1 1
+
+ 0 0 -5 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 15.94 -13.63 0.001319 1e-06 -5.9e-05 3.14
+ 1 1 1
+
+ 15.94 -13.63 0.001319 1e-06 -5.9e-05 3.14
+ 0 0 0 0 -0 0
+ 0.014095 -2.1e-05 0 -3.12588 -0.439047 -3.14144
+ 0.014095 -2.1e-05 0 0 -0 0
+
+
+
+ 28.25 -13.93 0 0 -0 0
+ 1 1 1
+
+ 28.25 -13.93 3.15931 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ -20.34 -4.38 0.15 0 -0 0
+ 1 1 1
+
+ -20.34 -4.38 0.15 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 103 -4.386 0.15 0 -0 0
+ 1 1 1
+
+ 103 -4.386 0.15 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 38.5 -4.38 0.15 0 -0 0
+ 1 1 1
+
+ 38.5 -4.38 0.15 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 50.1047 -5.16824 0.15 0 -0 0
+ 1 1 1
+
+ 50.1047 -5.16824 0.15 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 35.1055 4.87588 0.15 0 -0 0
+ 1 1 1
+
+ 35.1055 4.87588 0.15 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 39.8693 -39.227 0.15 0 -0 0
+ 1 1 1
+
+ 39.8693 -39.227 0.15 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 22.8289 -40.8522 0.15 0 -0 0
+ 1 1 1
+
+ 22.8289 -40.8522 0.15 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 9.15338 -40.7389 0.15 0 -0 0
+ 1 1 1
+
+ 9.15338 -40.7389 0.15 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ -3.54695 -40.9334 0.15 0 -0 0
+ 1 1 1
+
+ -3.54695 -40.9334 0.15 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 61.88 -30.82 0 0 -0 3.14
+ 1 1 1
+
+ 61.88 -30.82 0 0 -0 3.14
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 0 0 0 0 -0 0
+ 1 1 1
+
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ -27.49 25.344 0 0 0 -1.57
+ 1 1 1
+
+ -27.49 25.344 0 0 0 -1.57
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 12.9955 19.0454 0 0 -0 0.0116
+ 1 1 1
+
+ 12.9955 19.0454 0 0 -0 0.0116
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 61.74 22.76 0 0 0 -1.57
+ 1 1 1
+
+ 61.74 22.76 0 0 0 -1.57
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 86.62 27.93 0 0 -0 3.14
+ 1 1 1
+
+ 86.62 27.93 0 0 -0 3.14
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 1.61 -14.15 0 0 -0 3.14
+ 1 1 1
+
+ 1.61 -14.15 0 0 -0 3.14
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ -0.59 -26.6 0 0 0 -1.57
+ 1 1 1
+
+ -0.59 -26.6 0 0 0 -1.57
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 76.71 13.4 0 0 -0 0
+ 1 1 1
+
+ 76.71 13.4 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ -33.39 -21.3 0 0 0 -1.57
+ 1 1 1
+
+ -33.39 -21.3 0 0 0 -1.57
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ -28.126 -32.93 0 0 -0 0
+ 1 1 1
+
+ -28.126 -32.93 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ -25.739 -19.38 0 0 -0 1.57
+ 1 1 1
+
+ -25.739 -19.38 0 0 -0 1.57
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 96.43 14.14 0 0 -0 0
+ 1 1 1
+
+ 96.43 14.14 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ -35.1 -3.7 0 0 -0 3.14
+ 1 1 1
+
+ -35.1 -3.7 0 0 -0 3.14
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ -25.2 3.7 0 0 -0 0
+ 1 1 1
+
+ -25.2 3.7 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ -3 -3.7 0 0 -0 3.14
+ 1 1 1
+
+ -3 -3.7 0 0 -0 3.14
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 21 -3.7 0 0 -0 3.14
+ 1 1 1
+
+ 21 -3.7 0 0 -0 3.14
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 58 -3.7 0 0 -0 3.14
+ 1 1 1
+
+ 58 -3.7 0 0 -0 3.14
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 71 3.7 0 0 -0 0
+ 1 1 1
+
+ 71 3.7 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 84 -3.7 0 0 -0 3.14
+ 1 1 1
+
+ 84 -3.7 0 0 -0 3.14
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 90.5 3.7 0 0 -0 0
+ 1 1 1
+
+ 90.5 3.7 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 40 -20 -2 0 -0 0
+ 1 1 1
+
+ 40 -20 -2 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 30.2532 23.7282 -0.161234 0 0 -3.13968
+ 1 1 1
+
+ 30.2532 23.7282 -0.161234 0 0 -3.13968
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ 29.0523 23.0103 0.185736 -1.52 0 -3.13968
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ 29.0519 23.2259 0.193916 1.5708 -0 -3.13968
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ 29.0496 24.4415 0.185736 1.52 -0 -3.13968
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ 29.05 24.2259 0.193916 1.5708 -0 -3.13968
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ 31.2483 23.0145 0.185736 -1.52 0 -3.13968
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ 31.2456 24.4457 0.185736 1.52 -0 -3.13968
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ 30.2532 23.7282 -0.161234 0 0 -3.13968
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 29.9581 16.2491 -0.161234 0 0 -3.13968
+ 1 1 1
+
+ 29.9581 16.2491 -0.161234 0 0 -3.13968
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ 28.7573 15.5312 0.185736 -1.52 0 -3.13968
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ 28.7569 15.7468 0.193916 1.5708 -0 -3.13968
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ 28.7545 16.9624 0.185736 1.52 -0 -3.13968
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ 28.755 16.7468 0.193916 1.5708 -0 -3.13968
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ 30.9533 15.5354 0.185736 -1.52 0 -3.13968
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ 30.9505 16.9666 0.185736 1.52 -0 -3.13968
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ 29.9581 16.2491 -0.161234 0 0 -3.13968
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 19.9272 -26.6256 -0.161234 0 -0 1.56166
+ 1 1 1
+
+ 19.9272 -26.6256 -0.161234 0 -0 1.56166
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ 19.2226 -25.4169 0.185736 -1.52 -0 1.56166
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ 19.4382 -25.4189 0.193916 1.5708 0 1.56166
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ 20.6538 -25.43 0.185736 1.52 -0 1.56166
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ 20.4382 -25.428 0.193916 1.5708 0 1.56166
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ 19.2025 -27.6128 0.185736 -1.52 -0 1.56166
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ 20.6337 -27.6259 0.185736 1.52 -0 1.56166
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ 19.9272 -26.6256 -0.161234 0 -0 1.56166
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 26.6941 -30.6479 -0.161234 0 -0 1.56166
+ 1 1 1
+
+ 26.6941 -30.6479 -0.161234 0 -0 1.56166
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ 25.9895 -29.4392 0.185736 -1.52 -0 1.56166
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ 26.2051 -29.4411 0.193916 1.5708 0 1.56166
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ 27.4206 -29.4522 0.185736 1.52 -0 1.56166
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ 27.205 -29.4503 0.193916 1.5708 0 1.56166
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ 25.9694 -31.6351 0.185736 -1.52 -0 1.56166
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ 27.4006 -31.6482 0.185736 1.52 -0 1.56166
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+ 26.6941 -30.6479 -0.161234 0 -0 1.56166
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 0 0 0 0 -0 0
+ 1 1 1
+
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 0.065383 -0.432779 0 0 -0 0
+ 1 1 1
+
+ 0.065383 -0.432779 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 0 0 0 0 -0 0
+ 1 1 1
+
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 0 0 0 0 -0 0
+ 1 1 1
+
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 0 0 0 0 -0 0
+ 1 1 1
+
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 0 0 0 0 -0 0
+ 1 1 1
+
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 0 0 0 0 -0 0
+ 1 1 1
+
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 0 0 0 0 -0 0
+ 1 1 1
+
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 0 0 0 0 -0 0
+ 1 1 1
+
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 0 0 0 0 -0 0
+ 1 1 1
+
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 0 0 0 0 -0 0
+ 1 1 1
+
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 0 0 0 0 -0 0
+ 1 1 1
+
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 0 0 0 0 -0 0
+ 1 1 1
+
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 0 0 0 0 -0 0
+ 1 1 1
+
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 0 0 0 0 -0 0
+ 1 1 1
+
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 0 0 0 0 -0 0
+ 1 1 1
+
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 0 0 0 0 -0 0
+ 1 1 1
+
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 0 0 0 0 -0 0
+ 1 1 1
+
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 0 0 0 0 -0 0
+ 1 1 1
+
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 0 0 0 0 -0 0
+ 1 1 1
+
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 0 0 0 0 -0 0
+ 1 1 1
+
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 0 0 0 0 -0 0
+ 1 1 1
+
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 0 0 0 0 -0 0
+ 1 1 1
+
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 0 0 0 0 -0 0
+ 1 1 1
+
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 0 0 0 0 -0 0
+ 1 1 1
+
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 0 0 0 0 -0 0
+ 1 1 1
+
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 0 0 0 0 -0 0
+ 1 1 1
+
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 0 0 0 0 -0 0
+ 1 1 1
+
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 0 0 0 0 -0 0
+ 1 1 1
+
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 0 0 0 0 -0 0
+ 1 1 1
+
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 0 0 0 0 -0 0
+ 1 1 1
+
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 0 0 0 0 -0 0
+ 1 1 1
+
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 0 0 0 0 -0 0
+ 1 1 1
+
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 0 0 0 0 -0 0
+ 1 1 1
+
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 0 0 0 0 -0 0
+ 1 1 1
+
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 0 0 0 0 -0 0
+ 1 1 1
+
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ -11.3 -3.7 0 0 -0 0
+ 1 1 1
+
+ -11.3 -3.7 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 41.3 -41.3 0 0 -0 3.14
+ 1 1 1
+
+ 41.3 -41.3 0 0 -0 3.14
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ -11.0955 3.92021 0 0 -0 3.14
+ 1 1 1
+
+ -11.0955 3.92021 0 0 -0 3.14
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 10.9133 -4.26207 0 0 -0 3.14
+ 1 1 1
+
+ 10.9133 -4.26207 0 0 -0 3.14
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 41.3 3.7 0 0 -0 3.14
+ 1 1 1
+
+ 41.3 3.7 0 0 -0 3.14
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ -18.7 -3.7 0 0 0 -1.57
+ 1 1 1
+
+ -18.7 -3.7 0 0 0 -1.57
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 41.3 -3.7 0 0 0 -1.57
+ 1 1 1
+
+ 41.3 -3.7 0 0 0 -1.57
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 106.3 -3.7 0 0 0 -1.57
+ 1 1 1
+
+ 106.3 -3.7 0 0 0 -1.57
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 0.024384 -0.012467 0.21894 -0.001083 0.000266 -0.012506
+ 1 1 1
+
+ 0.024384 -0.012467 0.21894 -0.001083 0.000266 -0.012506
+ -0.002216 -0.005159 0.005587 -0.077179 -0.055618 -0.140298
+ -1.62067 -1.49724 1.37979 -0.933688 0.611219 2.53713
+ -3.27376 -3.02442 2.78719 0 -0 0
+
+
+ 0.021833 -0.012541 0.219019 -0.00089 -0.014783 -0.015079
+ -0.002837 -0.004122 0.006186 -0.052901 -0.012256 -0.000267
+ 0.614327 1.90173 2.2307 -0.424972 0.453086 -0.945544
+ 0.061433 0.190173 0.22307 0 -0 0
+
+
+ 0.024278 -0.012585 0.218876 -0.000862 0.000352 -0.0151
+ -0.011233 -0.004207 0.00654 -0.053051 -0.061105 -0.001002
+ -1.9527 1.55573 1.77163 -0.872375 0.600457 -1.3015
+ -0.19527 0.155573 0.177163 0 -0 0
+
+
+ 0.024311 -0.012482 0.218896 -0.001059 0.000362 -0.012524
+ -0.008935 -0.004795 0.006557 -0.073532 -0.059605 -0.135066
+ 0.853075 2.19054 1.3814 2.20994 1.42255 -2.3104
+ 0.085307 0.219054 0.13814 0 -0 0
+
+
+ 0.02428 -0.012553 0.218884 -0.001047 0.000338 -0.015102
+ -0.01162 -0.000684 0.006915 -0.074587 -0.065952 -0.00113
+ 0.801148 1.80979 1.55775 1.18004 -0.596122 2.19322
+ 0.080115 0.180979 0.155775 0 -0 0
+
+
+ 0.026391 -0.012223 0.218886 0.000935 0.003848 -0.023308
+ -0.046074 -0.107688 0.04662 0.650912 -0.368276 -0.23898
+ -0.968929 7.71053 -14.7553 -0.987868 1.44823 3.0177
+ -0.096893 0.771053 -1.47553 0 -0 0
+
+
+ 0.026418 -0.013152 0.218767 0.000603 0.004727 -0.001968
+ 0.020089 0.015604 0.018567 -0.067016 0.092216 -0.000905
+ 0.261117 -0.069718 0.436081 -2.16318 0.431688 2.99658
+ 0.026112 -0.006972 0.043608 0 -0 0
+
+
+ -0.183461 0.112994 0.301057 0.001167 0.000767 1.9861
+ 0.010814 0.029868 -0.015955 -0.075651 -0.045114 0.002683
+ 1.12445 5.62079 -2.36978 1.59899 -0.318348 -1.79034
+ 0.005622 0.028104 -0.011849 0 -0 0
+
+
+ 0.234267 -0.134773 0.301257 -4.3e-05 -0.001154 -2.01801
+ -0.023298 -0.027677 0.026536 -0.045378 0.137435 0.002578
+ -8.20426 -10.117 5.04029 0.37258 -0.035041 2.50169
+ -0.041021 -0.050585 0.025201 0 -0 0
+
+
+ -0.186529 -0.132511 0.301326 0.001147 0.000768 1.98613
+ -0.023055 0.030368 0.002337 -0.075786 -0.044768 0.002667
+ -8.13879 5.75004 -4.61311 2.19905 -1.2273 1.33509
+ -0.040694 0.02875 -0.023066 0 -0 0
+
+
+ 0.23726 0.104734 0.301 -0.000972 0.000137 -0.013297
+ 0.009709 -0.028074 0.00869 -0.074344 -0.057086 0.002739
+ 0.824085 -10.2203 7.22849 0.148757 0.909081 -2.56763
+ 0.00412 -0.051101 0.036142 0 -0 0
+
+
+ 0.02554 0.230333 0.300895 -0.000956 0.000141 -0.015207
+ 0.027007 0.001078 -0.012859 -0.074161 -0.057044 0.002726
+ 5.55449 -2.2473 3.47036 -0.174828 0.55314 -2.57315
+ 0.027772 -0.011236 0.017352 0 -0 0
+
+
+ 0.019472 -0.255039 0.301421 -5.2e-05 -0.001155 -2.01706
+ -0.03992 0.001938 0.023316 -0.045353 0.13746 0.002575
+ -12.751 -2.02404 -0.96229 3.02036 0.424094 2.48885
+ -0.063755 -0.01012 -0.004811 0 -0 0
+
+
+ 0.08 0 -584041 0 -0 3.14159
+ 0 0 -3383.35 0 -0 0
+ 0 0 -9.8 0 -0 0
+ 0 0 -0 0 -0 0
+
+
+ 0.02437 -0.012465 0.218941 -0.001081 0.000141 -0.0125
+ -0.001749 -0.004931 0.005352 -0.081733 -0.057105 -0.13765
+ -1.71749 -1.49464 1.4557 2.21945 1.5213 3.08313
+ -0.025762 -0.02242 0.021836 0 -0 0
+
+
+
+ 20.6722 33.4177 0.499884 3e-06 -3e-06 -0.000347
+ 1 1 1
+
+ 20.6722 33.4177 0.499884 3e-06 -3e-06 -0.000347
+ 0 0 0 0 -0 0
+ 0 0 -9.8 0 -0 0
+ 0 0 -9.8 0 -0 0
+
+
+
+ 0 0 1000 0 -0 0
+
+
+ 24.0343 3.49866 18 0 -0 0
+
+
+ -70.5235 -10.3411 1 0 -0 0
+
+
+
+ 1
+
+
+
+
+ model://house_1/meshes/house_1.dae
+ 1.5 1.5 1.5
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://house_1/meshes/house_1.dae
+ 1.5 1.5 1.5
+
+
+
+
+
+ House_1_Normal.png
+
+
+
+ 0
+ 0
+ 0
+
+ 12.9955 19.0454 0 0 0 -1.57
+
+
+ 1
+
+
+ 0 0 0.9 0 -0 0
+
+
+ 0.76 0.33 1.77
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0 0 0.02 0.04 -0 0
+
+
+ model://casual_female/meshes/casual_female.dae
+
+
+
+ 0
+ 0
+ 0
+
+ -26.902 13.6572 0 0 -0 0
+
+
+ 1.63426 29.107 0.625 0 -0 0
+ 0
+
+
+ 40
+
+ 1
+ 0
+ 0
+ 1
+ 0
+ 1
+
+ 0 0 0 0 -0 0
+
+
+
+
+ 1.2 0.8 1.25
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://big_box4/meshes/big_box.dae
+
+
+
+ 0
+ 0
+ 0
+
+
+
+ 8.48888 32.9364 0.75 0 -0 0
+ 0
+
+
+ 40
+
+ 1
+ 0
+ 0
+ 1
+ 0
+ 1
+
+ 0 0 0 0 -0 0
+
+
+
+
+ 1.2 0.8 1.5
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://big_box2/meshes/big_box.dae
+
+
+
+ 0
+ 0
+ 0
+
+
+
+ 14.2768 34.2121 0.0635 0 -0 0
+ 0
+
+
+ 25
+
+ 1
+ 0
+ 0
+ 1
+ 0
+ 1
+
+ 0 0 0 0 -0 0
+
+
+ 0 0 0.0625 0 -0 0
+
+
+ 1.2 0.8 0.042
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.5275 -0.35 0 0 -0 0
+
+
+ 0.145 0.1 0.085
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.5275 0 0 0 -0 0
+
+
+ 0.145 0.145 0.085
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.5275 0.35 0 0 -0 0
+
+
+ 0.145 0.1 0.085
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0 -0.35 0 0 -0 0
+
+
+ 0.145 0.1 0.085
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0 0 0 0 -0 0
+
+
+ 0.145 0.145 0.085
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0 0.35 0 0 -0 0
+
+
+ 0.145 0.1 0.085
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -0.5275 -0.35 0 0 -0 0
+
+
+ 0.145 0.1 0.085
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -0.5275 0 0 0 -0 0
+
+
+ 0.145 0.145 0.085
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -0.5275 0.35 0 0 -0 0
+
+
+ 0.145 0.1 0.085
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0 -0.35 -0.053 0 -0 0
+
+
+ 1.2 0.1 0.021
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0 0 -0.053 0 -0 0
+
+
+ 1.2 0.145 0.021
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0 0.35 -0.053 0 -0 0
+
+
+ 1.2 0.1 0.021
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://europallet/meshes/europallet.dae
+
+
+
+ 0
+ 0
+ 0
+
+
+
+ 20.6722 33.4177 0.5 0 -0 0
+
+
+ 1
+
+ 0.145833
+ 0
+ 0
+ 0.145833
+ 0
+ 0.125
+
+ 0 0 0 0 -0 0
+
+
+
+
+ 0.5
+ 1
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.5
+ 1
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+ 1
+
+
+
+
+ model://shelves_high/meshes/shelves_high_collision.dae
+ 1 1.2 1.2
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://shelves_high/meshes/shelves_high.dae
+ 1 1.2 1.2
+
+
+
+ 0
+ 0
+ 0
+
+ 5.58824 35.6933 0 0 -0 0
+
+
+ 1
+
+
+
+
+ model://shelves_high2/meshes/shelves_high2_collision.dae
+ 1 1.2 1.2
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://shelves_high2/meshes/shelves_high2.dae
+ 1 1.2 1.2
+
+
+
+ 0
+ 0
+ 0
+
+ 89.3184 -28.9368 0 0 -0 0
+
+
+ 1
+
+
+
+
+ model://shelves_high2/meshes/shelves_high2_collision.dae
+ 1 1.2 1.2
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://shelves_high2/meshes/shelves_high2.dae
+ 1 1.2 1.2
+
+
+
+ 0
+ 0
+ 0
+
+ 91.0804 -33.1643 0 0 -0 0
+
+
+ 1
+
+
+
+
+ model://shelves_high2/meshes/shelves_high2_collision.dae
+ 1 1.2 1.2
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://shelves_high2/meshes/shelves_high2.dae
+ 1 1.2 1.2
+
+
+
+ 0
+ 0
+ 0
+
+ 82.0143 -33.0749 0 0 -0 0
+
+
+ 1
+
+
+
+
+ model://shelves_high/meshes/shelves_high_collision.dae
+ 1 1.2 1.2
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://shelves_high/meshes/shelves_high.dae
+ 1 1.2 1.2
+
+
+
+ 0
+ 0
+ 0
+
+ 82.6647 -28.562 0 0 -0 0
+
+
+ 34.945 76.978 0.495 0 -0 0
+
+
+ 680.389
+
+ 1285.32
+ 0
+ 1824.93
+ 0
+ 0
+ 2666.89
+
+ -0.0414 0 0.9271 0 -0 0
+
+
+
+
+ model://cessna/meshes/body.dae
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://cessna/meshes/body.dae
+
+
+
+ 0
+ 0
+ 0
+
+
+
+ 2
+
+ 0.8434
+ 0
+ 0.0119
+ 0
+ 0
+ 0.855
+
+ -1.65 3.7 1.5 0.05 -0 -0.12
+
+
+
+
+ model://cessna/meshes/left_aileron.dae
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://cessna/meshes/left_aileron.dae
+
+
+
+ 0
+ 0
+ 0
+
+
+
+ 2
+
+ 0.6747
+ 0
+ 0.0242
+ 0
+ 0
+ 0.6962
+
+ -1.8 1.55 1.43 0.02 -0 0
+
+
+
+
+ model://cessna/meshes/left_flap.dae
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://cessna/meshes/left_flap.dae
+
+
+
+ 0
+ 0
+ 0
+
+
+
+ 2
+
+ 0.8434
+ 0
+ 0.0119
+ 0
+ 0
+ 0.855
+
+ -1.65 -3.7 1.5 -0.05 -0 0.12
+
+
+
+
+ model://cessna/meshes/right_aileron.dae
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://cessna/meshes/right_aileron.dae
+
+
+
+ 0
+ 0
+ 0
+
+
+
+ 2
+
+ 0.6747
+ 0
+ 0.0242
+ 0
+ 0
+ 0.6962
+
+ -1.8 -1.55 1.43 -0.02 0 0
+
+
+
+
+ model://cessna/meshes/right_flap.dae
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://cessna/meshes/right_flap.dae
+
+
+
+ 0
+ 0
+ 0
+
+
+
+ 2
+
+ 1.5008
+ 0
+ 0.0274
+ 0
+ 0
+ 1.5266
+
+ -5.75 0 0.57 0 -0 0
+
+
+
+
+ model://cessna/meshes/elevators.dae
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://cessna/meshes/elevators.dae
+
+
+
+ 0
+ 0
+ 0
+
+
+
+ 2
+
+ 0.4708
+ 0
+ 0.5208
+ 0
+ 0
+ 0.0508
+
+ -6.1 0 1.3 0 -0.35 0
+
+
+
+
+ model://cessna/meshes/rudder.dae
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://cessna/meshes/rudder.dae
+
+
+
+ 0
+ 0
+ 0
+
+
+ 1.79 0 0.855 0 -0 0
+
+ 18.37
+
+ 7.5067
+ 0
+ 7.515
+ 0
+ 0
+ 0.068275
+
+ -0.35 0 0 0 -0 0
+
+
+
+
+ model://cessna/meshes/cessna_prop.dae
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://cessna/meshes/cessna_prop.dae
+
+
+
+ 0
+ 0
+ 0
+
+
+
+ 2
+
+ 0.01786
+ 0
+ 0.01786
+ 0
+ 0
+ 0.0324
+
+ 0.712 0 -0.313 1.57079 -0 0
+
+
+ 0.712 0 -0.313 1.57079 -0 0
+
+
+ 0.18
+ 0.1
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://cessna/meshes/cessna_front_wheel.dae
+
+
+
+ 0
+ 0
+ 0
+
+
+
+ 2
+
+ 0.035516
+ 0
+ 0.035516
+ 0
+ 0
+ 0.0625
+
+ -1 1.27 -0.25 1.57079 -0 0
+
+
+ -1 1.27 -0.25 1.57079 -0 0
+
+
+ 0.25
+ 0.16
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://cessna/meshes/cessna_rear_left_wheel.dae
+
+
+
+ 0
+ 0
+ 0
+
+
+
+ 2
+
+ 0.035516
+ 0
+ 0.035516
+ 0
+ 0
+ 0.0625
+
+ -1 -1.27 -0.25 1.57079 -0 0
+
+
+ -1 -1.27 -0.25 1.57079 -0 0
+
+
+ 0.25
+ 0.16
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://cessna/meshes/cessna_rear_right_wheel.dae
+
+
+
+ 0
+ 0
+ 0
+
+
+ body
+ left_flap
+ -1.6 1.55 1.43 0.02 -0 0
+
+ 0 1 0
+
+ -0.53
+ 0.53
+ -1
+ -1
+
+
+ 1
+ 0
+ 0
+
+ 0
+
+
+
+ 1
+
+ 0
+ 0.2
+
+
+
+
+
+ body
+ left_aileron
+ -1.45 3.7 1.5 0.05 -0 -0.12
+
+ 0 1 0
+
+ -0.53
+ 0.53
+ -1
+ -1
+
+
+ 1
+ 0
+ 0
+
+ 0
+
+
+
+ 1
+
+ 0
+ 0.2
+
+
+
+
+
+ body
+ right_flap
+ -1.6 -1.55 1.43 -0.02 0 0
+
+ 0 1 0
+
+ -0.53
+ 0.53
+ -1
+ -1
+
+
+ 1
+ 0
+ 0
+
+ 0
+
+
+
+ 1
+
+ 0
+ 0.2
+
+
+
+
+
+ body
+ right_aileron
+ -1.45 -3.7 1.5 -0.05 -0 0.12
+
+ 0 1 0
+
+ -0.53
+ 0.53
+ -1
+ -1
+
+
+ 1
+ 0
+ 0
+
+ 0
+
+
+
+ 1
+
+ 0
+ 0.2
+
+
+
+
+
+ body
+ elevators
+ -5.55 0 0.57 0 -0 0
+
+ 0 1 0
+
+ -0.53
+ 0.53
+ -1
+ -1
+
+
+ 1
+ 0
+ 0
+
+ 0
+
+
+
+ 1
+
+ 0
+ 0.2
+
+
+
+
+
+ body
+ rudder
+ -5.9 0 1.3 0 -0.35 0
+
+ 0 0 1
+
+ -0.53
+ 0.53
+ -1
+ -1
+
+
+ 1
+ 0
+ 0
+
+ 0
+
+
+
+ 1
+
+ 0
+ 0.2
+
+
+
+
+
+ body
+ propeller
+
+ 1 0 0
+
+ -1e+12
+ 1e+12
+ -1
+ -1
+
+
+ 0.001
+ 0
+ 0
+
+ 0
+
+
+
+ 1
+
+ 0
+ 0.2
+
+
+
+
+
+ body
+ front_wheel
+ 0.712 0 -0.313 0 -0 0
+
+ 0 1 0
+
+ -1e+12
+ 1e+12
+ -1
+ -1
+
+
+ 0.01
+ 0
+ 0
+
+ 0
+
+
+
+ 1
+
+ 0
+ 0.2
+
+
+
+
+
+ body
+ rear_left_wheel
+ -1 -1.27 -0.25 0 -0 0
+
+ 0 1 0
+
+ -1e+12
+ 1e+12
+ -1
+ -1
+
+
+ 0.01
+ 0
+ 0
+
+ 0
+
+
+
+ 1
+
+ 0
+ 0.2
+
+
+
+
+
+ body
+ rear_right_wheel
+ -1 1.27 -0.25 0 -0 0
+
+ 0 1 0
+
+ -1e+12
+ 1e+12
+ -1
+ -1
+
+
+ 0.01
+ 0
+ 0
+
+ 0
+
+
+
+ 1
+
+ 0
+ 0.2
+
+
+
+
+
+
+ 4.01686 -1.03557 3 0 -0 0
+ 1
+
+ 0 0 0 1.57 -0 1.57
+
+
+
+ 3 0
+ 0.6 -3
+ 0.6 -1.6
+ -3 -1.6
+ -3 1.6
+ 0.6 1.6
+ 0.6 3
+ 3 0
+ 0.6
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+
+ 24.0343 3.49866 1 0 -0 0
+ 0.5 0.5 0.5 1
+ 0.1 0.1 0.1 1
+ 0.1 0.1 -0.9
+
+ 20
+ 0.5
+ 0.01
+ 0.001
+
+ 1
+
+
+ -70.5235 -10.3411 1 0 -0 0
+ 0.5 0.5 0.5 1
+ 0.1 0.1 0.1 1
+
+ 20
+ 0.5
+ 0.01
+ 0.001
+
+ 0
+ 0 0 -1
+
+
+
+
+ 720
+
+ 140
+ 0
+ 550
+ 0
+ 0
+ 550
+
+ 0.1 0 0.4 0 -0 0
+
+
+ 1
+ 1000
+
+ mud_seat
+ __default_topic__
+
+
+ 0
+ 0
+ 0
+ 0 0 0 0 -0 0
+
+ 0 0 0 0 0 -1.5708
+
+
+ model://rover/meshes/polaris.dae
+
+ Body
+ 0
+
+
+
+
+
+
+
+ 0
+ 1
+
+
+ -1 0 1.0323 0 0 -1.5707
+
+
+ model://rover/meshes/polaris.dae
+
+ Bed
+ 1
+
+
+
+
+
+
+
+ 0
+ 1
+
+
+ -1.492 0 1.03 0 0 -1.5707
+
+
+ model://rover/meshes/polaris.dae
+
+ Tail_Gate
+ 1
+
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 1.12 -0.57488 0.35516 3.1415 -0 1.5707
+
+
+ model://rover/meshes/polaris.dae
+
+ Brake_Front_Left
+ 1
+
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 1.12 0.57488 0.35516 3.1415 -0 1.5707
+
+
+ model://rover/meshes/polaris.dae
+
+ Brake_Front_Right
+ 1
+
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0.55 -0.1 0.4 0 -0 0
+
+
+ 0.6 0.15 0.1
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0.7 -0.05 0.45 0 -0.5 0
+
+
+ 0.2 0.05 0.1
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0.798 -0.125 0.478 0 -0.8 0
+
+
+ 0.129 0.1 0.05
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0.8135 -0.05 0.45 0 -0 0
+
+
+ 0.1 0.05 0.1835
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0.84 -0.125 0.45 0 -0 0
+
+
+ 0.03 0.1 0.1835
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0.82 -0.125 0.475 0 -0 0
+
+
+ 0.03 0.1 0.05
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0
+ 10
+ 0 0 0.62 0 -0 0
+
+
+ 0.52167 1.37206 0.53369
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0.2 0 0.335 0 -0 0
+
+
+ 1.34 1.65746 0.06
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -1 0 0.921 0 -0 0
+
+
+ 1.04609 1.6998 0.01
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -1.465 0 1.06 0 -0 0
+
+
+ 0.05 1.69982 0.27
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.495 0 1.06 0 -0 0
+
+
+ 0.05 1.69982 0.27
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.97 0.82491 1.06 0 -0 0
+
+
+ 1.04609 0.05 0.27
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.97 -0.82491 1.06 0 -0 0
+
+
+ 1.04609 0.05 0.27
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0 0 0.86 0 -0 0
+
+
+ 0.52167 1.3 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.26 0 1.125 0 -0.2 0
+
+
+ 0.06 1.37206 0.6
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 1.12 0 0.7 0 -0 0
+
+
+ 0.58 1.3 0.8
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.02 0.76 1.936 3.14159 1.54159 3.14159
+
+
+ 0.03
+ 0.68
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.02 -0.76 1.936 3.14159 1.54159 3.14159
+
+
+ 0.03
+ 0.68
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0.315 0 1.93 0 -1 0
+
+
+ 0.01299 1.54 0.10226
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.41 0 1.88 0 -0 0
+
+
+ 0.01299 1.54 0.10226
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0.602 0.755 1.45 0 -0.54 0
+
+
+ 0.03
+ 1.15
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0.602 -0.755 1.45 0 -0.54 0
+
+
+ 0.03
+ 1.15
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.4 0.755 1.45 0 -0 0
+
+
+ 0.03
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.4 -0.755 1.45 0 -0 0
+
+
+ 0.03
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.411 0.04 1.445 0.397 -0 0
+
+
+ 0.01392 1.55724 0.078
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.4 -0.04 1.445 -0.397 0 0
+
+
+ 0.01392 1.55724 0.078
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0.55 -0.1 0.4 0 -0 0
+
+
+ 0.6 0.15 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0.7 -0.05 0.45 0 -0.5 0
+
+
+ 0.2 0.05 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0.798 -0.125 0.478 0 -0.8 0
+
+
+ 0.129 0.1 0.05
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0.8135 -0.05 0.45 0 -0 0
+
+
+ 0.1 0.05 0.1835
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0.84 -0.125 0.45 0 -0 0
+
+
+ 0.03 0.1 0.1835
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0.82 -0.125 0.475 0 -0 0
+
+
+ 0.03 0.1 0.05
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.20223 0.71562 0.34697 -1.52 -0 -0
+
+ 12
+
+ 0.5
+ 0
+ 0.5
+ 0
+ 0
+ 1
+
+ 0 0 0 0 -0 0
+
+ 0
+ 0
+ 0
+
+ 0 0 0 -3e-06 1.57079 3.14159
+
+
+ model://rover/meshes/polaris.dae
+ 1.0037 0.8862 0.8862
+
+ Wheel_Front_Left
+ 1
+
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0
+ 1
+ 0 0 0 0 -0 0
+
+
+ 0.3175
+ 0.2794
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.20223 0.5 0.35515 1.5708 -0 0
+
+ 1
+
+ 0.01
+ 0
+ 0.01
+ 0
+ 0
+ 0.01
+
+ 0 0 0 0 -0 0
+
+ 0
+ 0
+ 0
+
+ 0
+ 10
+ 0 0 0 0 -0 0
+
+
+ 0.05
+ 0.01
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.20223 -0.71562 0.34697 1.52 -0 0
+
+ 12
+
+ 0.5
+ 0
+ 0.5
+ 0
+ 0
+ 1
+
+ 0 0 0 0 -0 0
+
+ 0
+ 0
+ 0
+
+ 0 0 0 3.14159 -1.57079 3.14159
+
+
+ model://rover/meshes/polaris.dae
+ 1.0037 0.8862 0.8862
+
+ Wheel_Front_Right
+ 1
+
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0
+ 1
+ 0 0 0 0 -0 0
+
+
+ 0.3175
+ 0.2794
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.20223 -0.5 0.35515 1.5708 -0 0
+
+ 1
+
+ 0.01
+ 0
+ 0.01
+ 0
+ 0
+ 0.01
+
+ 0 0 0 0 -0 0
+
+ 0
+ 0
+ 0
+
+ 0
+ 10
+ 0 0 0 0 -0 0
+
+
+ 0.05
+ 0.01
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -0.99377 0.71562 0.34697 -1.52 -0 -0
+
+ 12
+
+ 0.5
+ 0
+ 0.5
+ 0
+ 0
+ 1
+
+ 0 0 0 0 -0 0
+
+ 0
+ 0
+ 0
+
+ 0 0 0 3.14159 -1.57079 3.14159
+
+
+ model://rover/meshes/polaris.dae
+ 1.0037 0.8862 0.8862
+
+ Wheels_Rear_Left
+ 1
+
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0
+ 1
+ 0 0 0 0 -0 0
+
+
+ 0.3175
+ 0.2794
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -0.99377 -0.71562 0.34697 1.52 -0 0
+
+ 12
+
+ 0.5
+ 0
+ 0.5
+ 0
+ 0
+ 1
+
+ 0 0 0 0 -0 0
+
+ 0
+ 0
+ 0
+
+ 0 0 0 3.14159 -1.57079 3.14159
+
+
+ model://rover/meshes/polaris.dae
+ 1.0037 0.8862 0.8862
+
+ Wheels_Rear_Right
+ 1
+
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0
+ 1
+ 0 0 0 0 -0 0
+
+
+ 0.3175
+ 0.2794
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0 0 0 0 -0 0
+
+ 0 0 0 0 -0 0
+ 0.015
+
+ 1e-05
+ 0
+ 0
+ 1e-05
+ 0
+ 1e-05
+
+
+ 0
+ 0
+ 0
+
+
+ base_link
+ front_left_wheel_steering_block
+ 0 0 0 0 -0 0
+
+ 0 0 1
+ 1
+
+ -0.7727
+ 0.7727
+ -1
+ -1
+
+
+ 0
+ 0
+ 50
+ 0
+
+
+
+
+
+ 0
+ 0.9
+
+
+ 0
+ 0.2
+
+
+
+
+
+ front_left_wheel_steering_block
+ front_left_wheel
+ 0 0 0 0 -0 0
+
+ 0 1 0.05
+ 1
+
+ -1e+16
+ 1e+16
+ -1
+ -1
+
+
+ 0
+ 0
+ 0
+ 0
+
+
+
+
+
+ 0
+ 0.2
+
+
+ 0
+ 0.2
+
+
+
+
+
+ base_link
+ front_right_wheel_steering_block
+ 0 0 0 0 -0 0
+
+ 0 0 1
+ 1
+
+ -0.7727
+ 0.7727
+ -1
+ -1
+
+
+ 0
+ 0
+ 50
+ 0
+
+
+
+
+
+ 0
+ 0.9
+
+
+ 0
+ 0.2
+
+
+
+
+
+ front_right_wheel_steering_block
+ front_right_wheel
+ 0 0 0 0 -0 0
+
+ 0 1 -0.05
+ 1
+
+ -1e+16
+ 1e+16
+ -1
+ -1
+
+
+ 0
+ 0
+ 0
+ 0
+
+
+
+
+
+ 0
+ 0.2
+
+
+ 0
+ 0.2
+
+
+
+
+
+ base_link
+ rear_left_wheel
+ 0 0 0 0 -0 0
+
+ 0 1 0.05
+ 1
+
+ -1e+16
+ 1e+16
+ -1
+ -1
+
+
+ 0
+ 0
+ 0
+ 0
+
+
+
+
+
+ 0
+ 0.2
+
+
+ 0
+ 0.2
+
+
+
+
+
+ base_link
+ rear_right_wheel
+ 0 0 -0.1 0 -0 0
+
+ 0 1 -0.05
+ 1
+
+ -1e+16
+ 1e+16
+ -1
+ -1
+
+
+ 0
+ 0
+ 0
+ 0
+
+
+
+
+
+ 0
+ 0.2
+
+
+ 0
+ 0.2
+
+
+
+
+
+ base_link
+ rover/imu_link
+ 0 0 0 0 -0 0
+
+ 1 0 0
+ 1
+
+ 0
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+ 0
+ 0
+
+
+
+
+
+ 0
+ 0.2
+
+
+ 0
+ 0.2
+
+
+
+
+ 1
+ 0
+ 1.74482 15.0544 -0.161234 0 0 -3.13968
+
+
+
+
+ 720
+
+ 140
+ 0
+ 550
+ 0
+ 0
+ 550
+
+ 0.1 0 0.4 0 -0 0
+
+
+ 1
+ 1000
+
+ mud_seat
+ __default_topic__
+
+
+ 0
+ 0
+ 0
+ 0 0 0 0 -0 0
+
+ 0 0 0 0 0 -1.5708
+
+
+ model://rover/meshes/polaris.dae
+
+ Body
+ 0
+
+
+
+
+
+
+
+ 0
+ 1
+
+
+ -1 0 1.0323 0 0 -1.5707
+
+
+ model://rover/meshes/polaris.dae
+
+ Bed
+ 1
+
+
+
+
+
+
+
+ 0
+ 1
+
+
+ -1.492 0 1.03 0 0 -1.5707
+
+
+ model://rover/meshes/polaris.dae
+
+ Tail_Gate
+ 1
+
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 1.12 -0.57488 0.35516 3.1415 -0 1.5707
+
+
+ model://rover/meshes/polaris.dae
+
+ Brake_Front_Left
+ 1
+
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 1.12 0.57488 0.35516 3.1415 -0 1.5707
+
+
+ model://rover/meshes/polaris.dae
+
+ Brake_Front_Right
+ 1
+
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0.55 -0.1 0.4 0 -0 0
+
+
+ 0.6 0.15 0.1
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0.7 -0.05 0.45 0 -0.5 0
+
+
+ 0.2 0.05 0.1
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0.798 -0.125 0.478 0 -0.8 0
+
+
+ 0.129 0.1 0.05
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0.8135 -0.05 0.45 0 -0 0
+
+
+ 0.1 0.05 0.1835
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0.84 -0.125 0.45 0 -0 0
+
+
+ 0.03 0.1 0.1835
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0.82 -0.125 0.475 0 -0 0
+
+
+ 0.03 0.1 0.05
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0
+ 10
+ 0 0 0.62 0 -0 0
+
+
+ 0.52167 1.37206 0.53369
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0.2 0 0.335 0 -0 0
+
+
+ 1.34 1.65746 0.06
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -1 0 0.921 0 -0 0
+
+
+ 1.04609 1.6998 0.01
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -1.465 0 1.06 0 -0 0
+
+
+ 0.05 1.69982 0.27
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.495 0 1.06 0 -0 0
+
+
+ 0.05 1.69982 0.27
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.97 0.82491 1.06 0 -0 0
+
+
+ 1.04609 0.05 0.27
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.97 -0.82491 1.06 0 -0 0
+
+
+ 1.04609 0.05 0.27
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0 0 0.86 0 -0 0
+
+
+ 0.52167 1.3 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.26 0 1.125 0 -0.2 0
+
+
+ 0.06 1.37206 0.6
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 1.12 0 0.7 0 -0 0
+
+
+ 0.58 1.3 0.8
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.02 0.76 1.936 3.14159 1.54159 3.14159
+
+
+ 0.03
+ 0.68
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.02 -0.76 1.936 3.14159 1.54159 3.14159
+
+
+ 0.03
+ 0.68
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0.315 0 1.93 0 -1 0
+
+
+ 0.01299 1.54 0.10226
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.41 0 1.88 0 -0 0
+
+
+ 0.01299 1.54 0.10226
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0.602 0.755 1.45 0 -0.54 0
+
+
+ 0.03
+ 1.15
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0.602 -0.755 1.45 0 -0.54 0
+
+
+ 0.03
+ 1.15
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.4 0.755 1.45 0 -0 0
+
+
+ 0.03
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.4 -0.755 1.45 0 -0 0
+
+
+ 0.03
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.411 0.04 1.445 0.397 -0 0
+
+
+ 0.01392 1.55724 0.078
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.4 -0.04 1.445 -0.397 0 0
+
+
+ 0.01392 1.55724 0.078
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0.55 -0.1 0.4 0 -0 0
+
+
+ 0.6 0.15 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0.7 -0.05 0.45 0 -0.5 0
+
+
+ 0.2 0.05 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0.798 -0.125 0.478 0 -0.8 0
+
+
+ 0.129 0.1 0.05
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0.8135 -0.05 0.45 0 -0 0
+
+
+ 0.1 0.05 0.1835
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0.84 -0.125 0.45 0 -0 0
+
+
+ 0.03 0.1 0.1835
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0.82 -0.125 0.475 0 -0 0
+
+
+ 0.03 0.1 0.05
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.20223 0.71562 0.34697 -1.52 -0 -0
+
+ 12
+
+ 0.5
+ 0
+ 0.5
+ 0
+ 0
+ 1
+
+ 0 0 0 0 -0 0
+
+ 0
+ 0
+ 0
+
+ 0 0 0 -3e-06 1.57079 3.14159
+
+
+ model://rover/meshes/polaris.dae
+ 1.0037 0.8862 0.8862
+
+ Wheel_Front_Left
+ 1
+
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0
+ 1
+ 0 0 0 0 -0 0
+
+
+ 0.3175
+ 0.2794
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.20223 0.5 0.35515 1.5708 -0 0
+
+ 1
+
+ 0.01
+ 0
+ 0.01
+ 0
+ 0
+ 0.01
+
+ 0 0 0 0 -0 0
+
+ 0
+ 0
+ 0
+
+ 0
+ 10
+ 0 0 0 0 -0 0
+
+
+ 0.05
+ 0.01
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.20223 -0.71562 0.34697 1.52 -0 0
+
+ 12
+
+ 0.5
+ 0
+ 0.5
+ 0
+ 0
+ 1
+
+ 0 0 0 0 -0 0
+
+ 0
+ 0
+ 0
+
+ 0 0 0 3.14159 -1.57079 3.14159
+
+
+ model://rover/meshes/polaris.dae
+ 1.0037 0.8862 0.8862
+
+ Wheel_Front_Right
+ 1
+
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0
+ 1
+ 0 0 0 0 -0 0
+
+
+ 0.3175
+ 0.2794
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.20223 -0.5 0.35515 1.5708 -0 0
+
+ 1
+
+ 0.01
+ 0
+ 0.01
+ 0
+ 0
+ 0.01
+
+ 0 0 0 0 -0 0
+
+ 0
+ 0
+ 0
+
+ 0
+ 10
+ 0 0 0 0 -0 0
+
+
+ 0.05
+ 0.01
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -0.99377 0.71562 0.34697 -1.52 -0 -0
+
+ 12
+
+ 0.5
+ 0
+ 0.5
+ 0
+ 0
+ 1
+
+ 0 0 0 0 -0 0
+
+ 0
+ 0
+ 0
+
+ 0 0 0 3.14159 -1.57079 3.14159
+
+
+ model://rover/meshes/polaris.dae
+ 1.0037 0.8862 0.8862
+
+ Wheels_Rear_Left
+ 1
+
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0
+ 1
+ 0 0 0 0 -0 0
+
+
+ 0.3175
+ 0.2794
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -0.99377 -0.71562 0.34697 1.52 -0 0
+
+ 12
+
+ 0.5
+ 0
+ 0.5
+ 0
+ 0
+ 1
+
+ 0 0 0 0 -0 0
+
+ 0
+ 0
+ 0
+
+ 0 0 0 3.14159 -1.57079 3.14159
+
+
+ model://rover/meshes/polaris.dae
+ 1.0037 0.8862 0.8862
+
+ Wheels_Rear_Right
+ 1
+
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0
+ 1
+ 0 0 0 0 -0 0
+
+
+ 0.3175
+ 0.2794
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0 0 0 0 -0 0
+
+ 0 0 0 0 -0 0
+ 0.015
+
+ 1e-05
+ 0
+ 0
+ 1e-05
+ 0
+ 1e-05
+
+
+ 0
+ 0
+ 0
+
+
+ base_link
+ front_left_wheel_steering_block
+ 0 0 0 0 -0 0
+
+ 0 0 1
+ 1
+
+ -0.7727
+ 0.7727
+ -1
+ -1
+
+
+ 0
+ 0
+ 50
+ 0
+
+
+
+
+
+ 0
+ 0.9
+
+
+ 0
+ 0.2
+
+
+
+
+
+ front_left_wheel_steering_block
+ front_left_wheel
+ 0 0 0 0 -0 0
+
+ 0 1 0.05
+ 1
+
+ -1e+16
+ 1e+16
+ -1
+ -1
+
+
+ 0
+ 0
+ 0
+ 0
+
+
+
+
+
+ 0
+ 0.2
+
+
+ 0
+ 0.2
+
+
+
+
+
+ base_link
+ front_right_wheel_steering_block
+ 0 0 0 0 -0 0
+
+ 0 0 1
+ 1
+
+ -0.7727
+ 0.7727
+ -1
+ -1
+
+
+ 0
+ 0
+ 50
+ 0
+
+
+
+
+
+ 0
+ 0.9
+
+
+ 0
+ 0.2
+
+
+
+
+
+ front_right_wheel_steering_block
+ front_right_wheel
+ 0 0 0 0 -0 0
+
+ 0 1 -0.05
+ 1
+
+ -1e+16
+ 1e+16
+ -1
+ -1
+
+
+ 0
+ 0
+ 0
+ 0
+
+
+
+
+
+ 0
+ 0.2
+
+
+ 0
+ 0.2
+
+
+
+
+
+ base_link
+ rear_left_wheel
+ 0 0 0 0 -0 0
+
+ 0 1 0.05
+ 1
+
+ -1e+16
+ 1e+16
+ -1
+ -1
+
+
+ 0
+ 0
+ 0
+ 0
+
+
+
+
+
+ 0
+ 0.2
+
+
+ 0
+ 0.2
+
+
+
+
+
+ base_link
+ rear_right_wheel
+ 0 0 -0.1 0 -0 0
+
+ 0 1 -0.05
+ 1
+
+ -1e+16
+ 1e+16
+ -1
+ -1
+
+
+ 0
+ 0
+ 0
+ 0
+
+
+
+
+
+ 0
+ 0.2
+
+
+ 0
+ 0.2
+
+
+
+
+
+ base_link
+ rover/imu_link
+ 0 0 0 0 -0 0
+
+ 1 0 0
+ 1
+
+ 0
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+ 0
+ 0
+
+
+
+
+
+ 0
+ 0.2
+
+
+ 0
+ 0.2
+
+
+
+
+ 1
+ 0
+ 1.85051 12.0935 -0.161234 0 0 -3.13968
+
+
+ 1
+
+
+
+
+ model://fire_hydrant/meshes/fire_hydrant.dae
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://fire_hydrant/meshes/fire_hydrant.dae
+
+
+
+ 0
+ 0
+ 0
+
+ 50.1047 -5.16824 0.15 0 -0 0
+
+
+ 1
+
+
+
+
+ model://fire_hydrant/meshes/fire_hydrant.dae
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://fire_hydrant/meshes/fire_hydrant.dae
+
+
+
+ 0
+ 0
+ 0
+
+ 35.1055 4.87588 0.15 0 -0 0
+
+
+ 1
+
+
+
+
+ model://fire_hydrant/meshes/fire_hydrant.dae
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://fire_hydrant/meshes/fire_hydrant.dae
+
+
+
+ 0
+ 0
+ 0
+
+ 39.8693 -39.227 0.15 0 -0 0
+
+
+ 1
+
+
+
+
+ model://fire_hydrant/meshes/fire_hydrant.dae
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://fire_hydrant/meshes/fire_hydrant.dae
+
+
+
+ 0
+ 0
+ 0
+
+ 22.3117 -40.1336 0.15 0 -0 0
+
+
+ 1
+
+
+
+
+ model://fire_hydrant/meshes/fire_hydrant.dae
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://fire_hydrant/meshes/fire_hydrant.dae
+
+
+
+ 0
+ 0
+ 0
+
+ 6.82536 -39.9421 0.15 0 -0 0
+
+
+ 1
+
+
+
+
+ model://fire_hydrant/meshes/fire_hydrant.dae
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://fire_hydrant/meshes/fire_hydrant.dae
+
+
+
+ 0
+ 0
+ 0
+
+ -3.54695 -40.9334 0.15 0 -0 0
+
+
+ 1
+
+
+
+
+ model://stop_sign/meshes/stop_sign.dae
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://stop_sign/meshes/stop_sign.dae
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+ -11.0955 3.92021 0 0 -0 3.14
+
+
+ 1
+
+
+
+
+ model://stop_sign/meshes/stop_sign.dae
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model://stop_sign/meshes/stop_sign.dae
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+ 10.9133 -4.26207 0 0 -0 3.14
+
+ 0 0 -9.8066
+ 6e-06 2.3e-05 -4.2e-05
+
+
+ 0 0 0 0 -0 0
+
+ 0.001005 0 -0.009004 0 -0 0
+ 2.02
+
+ 0.011
+ 0
+ 0
+ 0.015
+ 0
+ 0.021
+
+
+
+ 0 0 0 0 -0 0
+
+
+ 0.67 0.67 0.15
+
+
+
+
+
+ 0.001
+ 0
+
+
+
+
+
+
+
+
+
+
+ 10
+
+
+ 0 0 0 0 -0 3.14159
+
+
+ 0.001 0.001 0.001
+ model://typhoon_h480/meshes/main_body_remeshed_v3.stl
+
+
+
+
+
+
+ 1
+
+ 0
+ 0
+ 0
+
+
+
+ -0.041 0 -0.162 0 -0 0
+ 0.1
+
+ 0.001
+ 0
+ 0
+ 0.001
+ 0
+ 0.001
+
+
+
+ 0 0 0 0 -0 0
+
+
+ 0.001 0.001 0.001
+ model://typhoon_h480/meshes/cgo3_mount_remeshed_v1.stl
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+ cgo3_mount_link
+ base_link
+ 0 0 0 0 -0 0
+
+ 0 0 1
+
+ 0
+ 0
+ 100
+ -1
+
+
+ 1
+ 0
+ 0
+
+ 1
+
+
+
+ 1
+
+ 0
+ 0.2
+
+
+
+
+
+
+ -0.041 0 -0.162 0 -0 0
+ 0.1
+
+ 0.001
+ 0
+ 0
+ 0.001
+ 0
+ 0.001
+
+
+
+ -0.051 0 0 0 -0 3.14159
+
+
+ 0.001 0.001 0.001
+ model://typhoon_h480/meshes/cgo3_vertical_arm_remeshed_v1.stl
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+ cgo3_vertical_arm_link
+ cgo3_mount_link
+ -0.026 0 -0.1 0 -0 0
+
+ 0 0 1
+
+ -1e+16
+ 1e+16
+ 100
+ -1
+
+
+ 0.1
+ 0
+ 0
+
+ 1
+
+
+
+ 1
+
+ 0.1
+ 0.2
+
+
+
+
+
+
+ -0.041 0 -0.081 0 -0 0
+ 0.1
+
+ 0.001
+ 0
+ 0
+ 0.001
+ 0
+ 0.001
+
+
+
+ -0.05 0 0 0 -0 3.14159
+
+
+ 0.001 0.001 0.001
+ model://typhoon_h480/meshes/cgo3_horizontal_arm_remeshed_v1.stl
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+ cgo3_horizontal_arm_link
+ cgo3_vertical_arm_link
+ -0.07 0 -0.162 0 -0 0
+
+ -1 0 0
+
+ -0.785398
+ 0.785398
+ 100
+ -1
+
+
+ 0.1
+ 0
+ 0
+
+ 1
+
+
+
+ 1
+
+ 0.1
+ 0.2
+
+
+
+
+
+
+ -0.041 0 -0.162 0 -0 0
+ 0.1
+
+ 0.001
+ 0
+ 0
+ 0.001
+ 0
+ 0.001
+
+
+
+ -0.041 0 -0.162 0 -0 0
+
+
+ 0.035
+
+
+
+
+
+ 1
+ 1
+
+
+
+
+
+
+
+ 1e+08
+ 1
+ 0.01
+ 0.001
+
+
+
+
+ 10
+
+
+ -0.05 0 0 0 -0 3.14159
+
+
+ 0.001 0.001 0.001
+ model://typhoon_h480/meshes/cgo3_camera_remeshed_v1.stl
+
+
+
+
+
+
+
+ 1
+
+
+
+ 0 0 -0.162 0 -0 0
+
+ 2
+
+ R8G8B8
+ 640
+ 360
+
+
+ 0.05
+ 15000
+
+
+ 1
+ 10
+ 0
+
+
+ 1
+ 30
+ /cgo3_camera
+ image_raw
+ camera_info
+ cgo3_camera_optical_frame
+ 0.0
+ 0.0
+ 0.0
+ 0.0
+ 0.0
+ 0.0
+
+
+ 0
+ 0
+ 0
+
+
+ cgo3_camera_link
+ cgo3_horizontal_arm_link
+ -0.01 0.03 -0.162 0 -0 0
+
+ 0 -1 0
+
+ -1.05
+ 2.09
+ 100
+ -1
+
+
+ 0.1
+ 0
+ 0
+
+ 1
+
+
+
+ 1
+
+ 0.1
+ 0.2
+
+
+
+
+
+
+ 0 -0.14314 -0.207252 0 -0 0
+ 0.1
+
+ 0.001
+ 0
+ 0
+ 0.001
+ 0
+ 0.001
+
+
+
+ -0.005 -0.14314 -0.207252 0 1.56893 0
+
+
+ 0.012209
+ 0.3
+
+
+
+
+
+ 1
+ 1
+
+
+
+
+
+
+
+ 1e+08
+ 1
+ 0.01
+ 0.001
+
+
+
+
+ 10
+
+
+ 0.00052 -0.08503 -0.121187 -0.501318 0 0
+
+
+ 0.00914984
+ 0.176893
+
+
+
+
+
+ 1
+ 1
+
+
+
+
+
+
+
+ 1e+08
+ 1
+ 0.01
+ 0.001
+
+
+
+
+ 10
+
+
+ 0 0 0 0 -0 0
+
+
+ 0.001 0.001 0.001
+ model://typhoon_h480/meshes/leg2_remeshed_v3.stl
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+ left_leg
+ base_link
+ 0.00026 -0.040515 -0.048 0 -0 0
+
+ -1 0 0
+
+ 0
+ 1
+ 100
+ -1
+ 1e+08
+ 1
+
+
+ 0.1
+ 0
+ 0
+
+ 1
+
+
+
+ 1
+
+ 0
+ 0.2
+
+
+
+
+
+ 0 0 0 0 -0 0
+
+ 0 0.14314 -0.207252 0 -0 0
+ 0.1
+
+ 0.001
+ 0
+ 0
+ 0.001
+ 0
+ 0.001
+
+
+
+ -0.005 0.14314 -0.207252 0 1.56893 0
+
+
+ 0.012209
+ 0.3
+
+
+
+
+
+ 1
+ 1
+
+
+
+
+
+
+
+ 1e+08
+ 1
+ 0.01
+ 0.001
+
+
+
+
+ 10
+
+
+ 0.00052 0.08503 -0.121187 0.501318 -0 0
+
+
+ 0.00914984
+ 0.176893
+
+
+
+
+
+ 1
+ 1
+
+
+
+
+
+
+
+ 1e+08
+ 1
+ 0.01
+ 0.001
+
+
+
+
+ 10
+
+
+ 0 0 0 0 -0 0
+
+
+ 0.001 0.001 0.001
+ model://typhoon_h480/meshes/leg1_remeshed_v3.stl
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+ right_leg
+ base_link
+ 0.00026 0.040515 -0.048 0 -0 0
+
+ 1 0 0
+
+ 0
+ 1
+ 100
+ -1
+ 1e+08
+ 1
+
+
+ 0.1
+ 0
+ 0
+
+ 1
+
+
+
+ 1
+
+ 0
+ 0.2
+
+
+
+
+
+ 0 0 0 0 -0 0
+
+ 0 0 0 0 -0 0
+ 0.015
+
+ 1e-05
+ 0
+ 0
+ 1e-05
+ 0
+ 1e-05
+
+
+ 0
+ 0
+ 0
+
+
+ typhoon_h480/imu_link
+ base_link
+
+ 1 0 0
+
+ 0
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+
+ 1
+
+
+
+ 0.211396 0.119762 0.082219 0 -0 0
+
+ 0 0 0 0 -0 0
+ 0.005
+
+ 9.75e-07
+ 0
+ 0
+ 0.000273104
+ 0
+ 0.000274004
+
+
+
+ 0 0 0 0 -0 0
+
+
+ 0.005
+ 0.128
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 10
+
+
+ -0.211396 -0.119762 -0.082219 0 -0 0
+
+
+ 0.001 0.001 0.001
+ model://typhoon_h480/meshes/prop_ccw_assembly_remeshed_v3.stl
+
+
+
+
+
+
+ 1
+
+ 0
+ 0
+ 0
+
+
+ rotor_3
+ base_link
+
+ 0 0 1
+
+ -1e+16
+ 1e+16
+ 10
+ -1
+
+
+ 0.005
+ 0
+ 0
+
+ 1
+
+
+
+ 1
+
+ 0
+ 0.2
+
+
+
+
+
+ -0.209396 0.122762 0.082219 0 -0 2.0944
+
+ 0 0 0 0 -0 0
+ 0.005
+
+ 9.75e-07
+ 0
+ 0
+ 0.000273104
+ 0
+ 0.000274004
+
+
+
+ 0 0 0 0 -0 0
+
+
+ 0.005
+ 0.128
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 10
+
+
+ -0.211396 -0.119762 -0.082219 0 -0 0
+
+
+ 0.001 0.001 0.001
+ model://typhoon_h480/meshes/prop_ccw_assembly_remeshed_v3.stl
+
+
+
+
+
+
+ 1
+
+ 0
+ 0
+ 0
+
+
+ rotor_0
+ base_link
+
+ 0 0 1
+
+ -1e+16
+ 1e+16
+ 10
+ -1
+
+
+ 0.005
+ 0
+ 0
+
+ 1
+
+
+
+ 1
+
+ 0
+ 0.2
+
+
+
+
+
+ -0.001879 0.242705 0.082217 0 -0 0
+
+ 0 0 0 0 -0 0
+ 0.005
+
+ 9.75e-07
+ 0
+ 0
+ 0.000273104
+ 0
+ 0.000274004
+
+
+
+ 0 0 0 0 -0 0
+
+
+ 0.005
+ 0.128
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 10
+
+
+ 0.001879 -0.242705 -0.082217 0 -0 0
+
+
+ 0.001 0.001 0.001
+ model://typhoon_h480/meshes/prop_cw_assembly_remeshed_v3.stl
+
+
+
+
+
+
+ 1
+
+ 0
+ 0
+ 0
+
+
+ rotor_4
+ base_link
+
+ 0 0 1
+
+ -1e+16
+ 1e+16
+ 10
+ -1
+
+
+ 0.005
+ 0
+ 0
+
+ 1
+
+
+
+ 1
+
+ 0
+ 0.2
+
+
+
+
+
+ 0.211396 -0.119762 0.082219 0 0 -2.0944
+
+ 0 0 0 0 -0 0
+ 0.005
+
+ 9.75e-07
+ 0
+ 0
+ 0.000273104
+ 0
+ 0.000274004
+
+
+
+ 0 0 0 0 -0 0
+
+
+ 0.005
+ 0.128
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 10
+
+
+ 0.001879 -0.242705 -0.082217 0 -0 0
+
+
+ 0.001 0.001 0.001
+ model://typhoon_h480/meshes/prop_cw_assembly_remeshed_v3.stl
+
+
+
+
+
+
+ 1
+
+ 0
+ 0
+ 0
+
+
+ rotor_1
+ base_link
+
+ 0 0 1
+
+ -1e+16
+ 1e+16
+ 10
+ -1
+
+
+ 0.005
+ 0
+ 0
+
+ 1
+
+
+
+ 1
+
+ 0
+ 0.2
+
+
+
+
+
+ -0.001879 -0.242705 0.082217 0 0 -2.0944
+
+ 0 0 0 0 -0 0
+ 0.005
+
+ 9.75e-07
+ 0
+ 0
+ 0.000273104
+ 0
+ 0.000274004
+
+
+
+ 0 0 0 0 -0 0
+
+
+ 0.005
+ 0.128
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 10
+
+
+ -0.211396 -0.119762 -0.082219 0 -0 0
+
+
+ 0.001 0.001 0.001
+ model://typhoon_h480/meshes/prop_ccw_assembly_remeshed_v3.stl
+
+
+
+
+
+
+ 1
+
+ 0
+ 0
+ 0
+
+
+ rotor_5
+ base_link
+
+ 0 0 1
+
+ -1e+16
+ 1e+16
+ 10
+ -1
+
+
+ 0.005
+ 0
+ 0
+
+ 1
+
+
+
+ 1
+
+ 0
+ 0.2
+
+
+
+
+
+ -0.209396 -0.122762 0.082219 0 -0 2.0944
+
+ 0 0 0 0 -0 0
+ 0.005
+
+ 9.75e-07
+ 0
+ 0
+ 0.000273104
+ 0
+ 0.000274004
+
+
+
+ 0 0 0 0 -0 0
+
+
+ 0.005
+ 0.128
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 10
+
+
+ 0.001879 -0.242705 -0.082217 0 -0 0
+
+
+ 0.001 0.001 0.001
+ model://typhoon_h480/meshes/prop_cw_assembly_remeshed_v3.stl
+
+
+
+
+
+
+ 1
+
+ 0
+ 0
+ 0
+
+
+ rotor_2
+ base_link
+
+ 0 0 1
+
+ -1e+16
+ 1e+16
+ 10
+ -1
+
+
+ 0.005
+ 0
+ 0
+
+ 1
+
+
+
+ 1
+
+ 0
+ 0.2
+
+
+
+
+
+ 0.08 0 -0.03 0 -0 3.14159
+
+ 0 0 0 0 -0 0
+ 1e-15
+
+ 2.08333e-07
+ 0
+ 0
+ 2.08333e-07
+ 0
+ 4.16667e-08
+
+
+
+
+
+ 0.005 0.015 0.005
+
+
+
+
+
+
+
+ 0 0 0 0 1.57 0
+
+ 0.02
+ 5
+ 1.33974
+
+
+
+
+ 1
+ 20
+ 0
+
+ 0
+ 0
+ 0
+
+
+ sonar::link
+ typhoon_h480::base_link
+
+ 0 0 1
+
+ 0
+ 0
+
+ 0
+
+ 0
+ 0
+
+
+
+
+
+ base_link
+ 10
+
+
+
+ rotor_0_joint
+ rotor_0
+ cw
+ 0.0125
+ 0.025
+ 1500
+ 8.54858e-06
+ 0.06
+ /gazebo/command/motor_speed
+ 5
+ 0.000806428
+ 1e-06
+ /motor_speed/5
+ 10
+
+
+
+ rotor_1_joint
+ rotor_1
+ ccw
+ 0.0125
+ 0.025
+ 1500
+ 8.54858e-06
+ 0.06
+ /gazebo/command/motor_speed
+ 4
+ 0.000806428
+ 1e-06
+ /motor_speed/4
+ 10
+
+
+
+ rotor_2_joint
+ rotor_2
+ ccw
+ 0.0125
+ 0.025
+ 1500
+ 8.54858e-06
+ 0.06
+ /gazebo/command/motor_speed
+ 3
+ 0.000806428
+ 1e-06
+ /motor_speed/3
+ 10
+
+
+
+ rotor_3_joint
+ rotor_3
+ cw
+ 0.0125
+ 0.025
+ 1500
+ 8.54858e-06
+ 0.06
+ /gazebo/command/motor_speed
+ 2
+ 0.000806428
+ 1e-06
+ /motor_speed/2
+ 10
+
+
+
+ rotor_4_joint
+ rotor_4
+ ccw
+ 0.0125
+ 0.025
+ 1500
+ 8.54858e-06
+ 0.06
+ /gazebo/command/motor_speed
+ 1
+ 0.000806428
+ 1e-06
+ /motor_speed/1
+ 10
+
+
+
+ rotor_5_joint
+ rotor_5
+ cw
+ 0.0125
+ 0.025
+ 1500
+ 8.54858e-06
+ 0.06
+ /gazebo/command/motor_speed
+ 0
+ 0.000806428
+ 1e-06
+ /motor_speed/0
+ 10
+
+
+
+ 1
+
+
+
+ 100
+ 0.0004
+ 6.4e-06
+ 600
+ /mag
+
+
+
+ 50
+ /baro
+
+
+
+ /imu
+ /gps
+ /mag
+ /baro
+ INADDR_ANY
+ 14560
+ 4560
+ 0
+ /dev/ttyACM0
+ 921600
+ INADDR_ANY
+ 14550
+ INADDR_ANY
+ 14540
+ 0
+ 0
+ 1
+ 1
+ /gazebo/command/motor_speed
+
+
+ 0
+ 0
+ 1500
+ 0
+ 100
+ velocity
+
+
+ 1
+ 0
+ 1500
+ 0
+ 100
+ velocity
+
+
+ 2
+ 0
+ 1500
+ 0
+ 100
+ velocity
+
+
+ 3
+ 0
+ 1500
+ 0
+ 100
+ velocity
+
+
+ 4
+ 0
+ 1500
+ 0
+ 100
+ velocity
+
+
+ 5
+ 0
+ 1500
+ 0
+ 100
+ velocity
+
+
+ 6
+ 0
+ -3.1415
+ 0
+ 0
+ position_gztopic
+ /gimbal_roll_cmd
+ cgo3_camera_joint
+
+
+ 7
+ 0
+ -3.1415
+ 0
+ 0
+ position_gztopic
+ /gimbal_pitch_cmd
+ cgo3_camera_joint
+
+
+ 8
+ 0
+ -3.1415
+ 0
+ 0
+ position_gztopic
+ /gimbal_yaw_cmd
+ cgo3_vertical_arm_joint
+
+
+ 9
+ 1
+ 0.5
+ 0
+ 0
+ position
+
+ 3.5
+ 0.5
+ 0
+ 4
+ -4
+ 6
+ -6
+
+ left_leg_joint
+
+
+ 10
+ 1
+ 0.5
+ 0
+ 0
+ position
+
+ 3.5
+ 0.5
+ 0
+ 4
+ -4
+ 6
+ -6
+
+ right_leg_joint
+
+
+
+ 0
+
+
+ typhoon_h480/imu_link
+ /imu
+ 0.0003394
+ 3.8785e-05
+ 1000.0
+ 0.0087
+ 0.004
+ 0.006
+ 300.0
+ 0.196
+
+
+ cgo3_vertical_arm_joint
+ cgo3_horizontal_arm_joint
+ cgo3_camera_joint
+
+
+
+ 0.6
+ 0.1
+ 0.02
+ 0
+ 0
+ 1.0
+ -1.0
+
+ joint_yaw
+
+
+
+ 0.8
+ 0.035
+ 0.02
+ 0
+ 0
+ 0.3
+ -0.3
+
+ joint_roll
+
+
+
+ 2.068
+ 0.01245
+ 0.01
+ 0
+ 0
+ 0.3
+ -0.3
+
+ joint_pitch
+
+
+ camera_imu
+ /
+
+ 0 0 0.26 0 -0 0
+
+
+
+
+ 720
+
+ 140
+ 0
+ 550
+ 0
+ 0
+ 550
+
+ 0.1 0 0.4 0 -0 0
+
+
+ 1
+ 1000
+
+ mud_seat
+ __default_topic__
+
+
+ 0
+ 0
+ 0
+ 0 0 0 0 -0 0
+
+ 0 0 0 0 0 -1.5708
+
+
+ model://rover/meshes/polaris.dae
+
+ Body
+ 0
+
+
+
+
+
+
+
+ 0
+ 1
+
+
+ -1 0 1.0323 0 0 -1.5707
+
+
+ model://rover/meshes/polaris.dae
+
+ Bed
+ 1
+
+
+
+
+
+
+
+ 0
+ 1
+
+
+ -1.492 0 1.03 0 0 -1.5707
+
+
+ model://rover/meshes/polaris.dae
+
+ Tail_Gate
+ 1
+
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 1.12 -0.57488 0.35516 3.1415 -0 1.5707
+
+
+ model://rover/meshes/polaris.dae
+
+ Brake_Front_Left
+ 1
+
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 1.12 0.57488 0.35516 3.1415 -0 1.5707
+
+
+ model://rover/meshes/polaris.dae
+
+ Brake_Front_Right
+ 1
+
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0.55 -0.1 0.4 0 -0 0
+
+
+ 0.6 0.15 0.1
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0.7 -0.05 0.45 0 -0.5 0
+
+
+ 0.2 0.05 0.1
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0.798 -0.125 0.478 0 -0.8 0
+
+
+ 0.129 0.1 0.05
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0.8135 -0.05 0.45 0 -0 0
+
+
+ 0.1 0.05 0.1835
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0.84 -0.125 0.45 0 -0 0
+
+
+ 0.03 0.1 0.1835
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0.82 -0.125 0.475 0 -0 0
+
+
+ 0.03 0.1 0.05
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0
+ 10
+ 0 0 0.62 0 -0 0
+
+
+ 0.52167 1.37206 0.53369
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0.2 0 0.335 0 -0 0
+
+
+ 1.34 1.65746 0.06
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -1 0 0.921 0 -0 0
+
+
+ 1.04609 1.6998 0.01
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -1.465 0 1.06 0 -0 0
+
+
+ 0.05 1.69982 0.27
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.495 0 1.06 0 -0 0
+
+
+ 0.05 1.69982 0.27
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.97 0.82491 1.06 0 -0 0
+
+
+ 1.04609 0.05 0.27
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.97 -0.82491 1.06 0 -0 0
+
+
+ 1.04609 0.05 0.27
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0 0 0.86 0 -0 0
+
+
+ 0.52167 1.3 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.26 0 1.125 0 -0.2 0
+
+
+ 0.06 1.37206 0.6
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 1.12 0 0.7 0 -0 0
+
+
+ 0.58 1.3 0.8
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.02 0.76 1.936 3.14159 1.54159 3.14159
+
+
+ 0.03
+ 0.68
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.02 -0.76 1.936 3.14159 1.54159 3.14159
+
+
+ 0.03
+ 0.68
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0.315 0 1.93 0 -1 0
+
+
+ 0.01299 1.54 0.10226
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.41 0 1.88 0 -0 0
+
+
+ 0.01299 1.54 0.10226
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0.602 0.755 1.45 0 -0.54 0
+
+
+ 0.03
+ 1.15
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0.602 -0.755 1.45 0 -0.54 0
+
+
+ 0.03
+ 1.15
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.4 0.755 1.45 0 -0 0
+
+
+ 0.03
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.4 -0.755 1.45 0 -0 0
+
+
+ 0.03
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.411 0.04 1.445 0.397 -0 0
+
+
+ 0.01392 1.55724 0.078
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.4 -0.04 1.445 -0.397 0 0
+
+
+ 0.01392 1.55724 0.078
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0.55 -0.1 0.4 0 -0 0
+
+
+ 0.6 0.15 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0.7 -0.05 0.45 0 -0.5 0
+
+
+ 0.2 0.05 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0.798 -0.125 0.478 0 -0.8 0
+
+
+ 0.129 0.1 0.05
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0.8135 -0.05 0.45 0 -0 0
+
+
+ 0.1 0.05 0.1835
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0.84 -0.125 0.45 0 -0 0
+
+
+ 0.03 0.1 0.1835
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0.82 -0.125 0.475 0 -0 0
+
+
+ 0.03 0.1 0.05
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.20223 0.71562 0.34697 -1.52 -0 -0
+
+ 12
+
+ 0.5
+ 0
+ 0.5
+ 0
+ 0
+ 1
+
+ 0 0 0 0 -0 0
+
+ 0
+ 0
+ 0
+
+ 0 0 0 -3e-06 1.57079 3.14159
+
+
+ model://rover/meshes/polaris.dae
+ 1.0037 0.8862 0.8862
+
+ Wheel_Front_Left
+ 1
+
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0
+ 1
+ 0 0 0 0 -0 0
+
+
+ 0.3175
+ 0.2794
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.20223 0.5 0.35515 1.5708 -0 0
+
+ 1
+
+ 0.01
+ 0
+ 0.01
+ 0
+ 0
+ 0.01
+
+ 0 0 0 0 -0 0
+
+ 0
+ 0
+ 0
+
+ 0
+ 10
+ 0 0 0 0 -0 0
+
+
+ 0.05
+ 0.01
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.20223 -0.71562 0.34697 1.52 -0 0
+
+ 12
+
+ 0.5
+ 0
+ 0.5
+ 0
+ 0
+ 1
+
+ 0 0 0 0 -0 0
+
+ 0
+ 0
+ 0
+
+ 0 0 0 3.14159 -1.57079 3.14159
+
+
+ model://rover/meshes/polaris.dae
+ 1.0037 0.8862 0.8862
+
+ Wheel_Front_Right
+ 1
+
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0
+ 1
+ 0 0 0 0 -0 0
+
+
+ 0.3175
+ 0.2794
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.20223 -0.5 0.35515 1.5708 -0 0
+
+ 1
+
+ 0.01
+ 0
+ 0.01
+ 0
+ 0
+ 0.01
+
+ 0 0 0 0 -0 0
+
+ 0
+ 0
+ 0
+
+ 0
+ 10
+ 0 0 0 0 -0 0
+
+
+ 0.05
+ 0.01
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -0.99377 0.71562 0.34697 -1.52 -0 -0
+
+ 12
+
+ 0.5
+ 0
+ 0.5
+ 0
+ 0
+ 1
+
+ 0 0 0 0 -0 0
+
+ 0
+ 0
+ 0
+
+ 0 0 0 3.14159 -1.57079 3.14159
+
+
+ model://rover/meshes/polaris.dae
+ 1.0037 0.8862 0.8862
+
+ Wheels_Rear_Left
+ 1
+
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0
+ 1
+ 0 0 0 0 -0 0
+
+
+ 0.3175
+ 0.2794
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -0.99377 -0.71562 0.34697 1.52 -0 0
+
+ 12
+
+ 0.5
+ 0
+ 0.5
+ 0
+ 0
+ 1
+
+ 0 0 0 0 -0 0
+
+ 0
+ 0
+ 0
+
+ 0 0 0 3.14159 -1.57079 3.14159
+
+
+ model://rover/meshes/polaris.dae
+ 1.0037 0.8862 0.8862
+
+ Wheels_Rear_Right
+ 1
+
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0
+ 1
+ 0 0 0 0 -0 0
+
+
+ 0.3175
+ 0.2794
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0 0 0 0 -0 0
+
+ 0 0 0 0 -0 0
+ 0.015
+
+ 1e-05
+ 0
+ 0
+ 1e-05
+ 0
+ 1e-05
+
+
+ 0
+ 0
+ 0
+
+
+ base_link
+ front_left_wheel_steering_block
+ 0 0 0 0 -0 0
+
+ 0 0 1
+ 1
+
+ -0.7727
+ 0.7727
+ -1
+ -1
+
+
+ 0
+ 0
+ 50
+ 0
+
+
+
+
+
+ 0
+ 0.9
+
+
+ 0
+ 0.2
+
+
+
+
+
+ front_left_wheel_steering_block
+ front_left_wheel
+ 0 0 0 0 -0 0
+
+ 0 1 0.05
+ 1
+
+ -1e+16
+ 1e+16
+ -1
+ -1
+
+
+ 0
+ 0
+ 0
+ 0
+
+
+
+
+
+ 0
+ 0.2
+
+
+ 0
+ 0.2
+
+
+
+
+
+ base_link
+ front_right_wheel_steering_block
+ 0 0 0 0 -0 0
+
+ 0 0 1
+ 1
+
+ -0.7727
+ 0.7727
+ -1
+ -1
+
+
+ 0
+ 0
+ 50
+ 0
+
+
+
+
+
+ 0
+ 0.9
+
+
+ 0
+ 0.2
+
+
+
+
+
+ front_right_wheel_steering_block
+ front_right_wheel
+ 0 0 0 0 -0 0
+
+ 0 1 -0.05
+ 1
+
+ -1e+16
+ 1e+16
+ -1
+ -1
+
+
+ 0
+ 0
+ 0
+ 0
+
+
+
+
+
+ 0
+ 0.2
+
+
+ 0
+ 0.2
+
+
+
+
+
+ base_link
+ rear_left_wheel
+ 0 0 0 0 -0 0
+
+ 0 1 0.05
+ 1
+
+ -1e+16
+ 1e+16
+ -1
+ -1
+
+
+ 0
+ 0
+ 0
+ 0
+
+
+
+
+
+ 0
+ 0.2
+
+
+ 0
+ 0.2
+
+
+
+
+
+ base_link
+ rear_right_wheel
+ 0 0 -0.1 0 -0 0
+
+ 0 1 -0.05
+ 1
+
+ -1e+16
+ 1e+16
+ -1
+ -1
+
+
+ 0
+ 0
+ 0
+ 0
+
+
+
+
+
+ 0
+ 0.2
+
+
+ 0
+ 0.2
+
+
+
+
+
+ base_link
+ rover/imu_link
+ 0 0 0 0 -0 0
+
+ 1 0 0
+ 1
+
+ 0
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+ 0
+ 0
+
+
+
+
+
+ 0
+ 0.2
+
+
+ 0
+ 0.2
+
+
+
+
+ 1
+ 0
+ 19.9272 -26.6256 -0.161234 0 -0 1.56166
+
+
+
+
+ 720
+
+ 140
+ 0
+ 550
+ 0
+ 0
+ 550
+
+ 0.1 0 0.4 0 -0 0
+
+
+ 1
+ 1000
+
+ mud_seat
+ __default_topic__
+
+
+ 0
+ 0
+ 0
+ 0 0 0 0 -0 0
+
+ 0 0 0 0 0 -1.5708
+
+
+ model://rover/meshes/polaris.dae
+
+ Body
+ 0
+
+
+
+
+
+
+
+ 0
+ 1
+
+
+ -1 0 1.0323 0 0 -1.5707
+
+
+ model://rover/meshes/polaris.dae
+
+ Bed
+ 1
+
+
+
+
+
+
+
+ 0
+ 1
+
+
+ -1.492 0 1.03 0 0 -1.5707
+
+
+ model://rover/meshes/polaris.dae
+
+ Tail_Gate
+ 1
+
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 1.12 -0.57488 0.35516 3.1415 -0 1.5707
+
+
+ model://rover/meshes/polaris.dae
+
+ Brake_Front_Left
+ 1
+
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 1.12 0.57488 0.35516 3.1415 -0 1.5707
+
+
+ model://rover/meshes/polaris.dae
+
+ Brake_Front_Right
+ 1
+
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0.55 -0.1 0.4 0 -0 0
+
+
+ 0.6 0.15 0.1
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0.7 -0.05 0.45 0 -0.5 0
+
+
+ 0.2 0.05 0.1
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0.798 -0.125 0.478 0 -0.8 0
+
+
+ 0.129 0.1 0.05
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0.8135 -0.05 0.45 0 -0 0
+
+
+ 0.1 0.05 0.1835
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0.84 -0.125 0.45 0 -0 0
+
+
+ 0.03 0.1 0.1835
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0.82 -0.125 0.475 0 -0 0
+
+
+ 0.03 0.1 0.05
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0
+ 10
+ 0 0 0.62 0 -0 0
+
+
+ 0.52167 1.37206 0.53369
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0.2 0 0.335 0 -0 0
+
+
+ 1.34 1.65746 0.06
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -1 0 0.921 0 -0 0
+
+
+ 1.04609 1.6998 0.01
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -1.465 0 1.06 0 -0 0
+
+
+ 0.05 1.69982 0.27
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.495 0 1.06 0 -0 0
+
+
+ 0.05 1.69982 0.27
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.97 0.82491 1.06 0 -0 0
+
+
+ 1.04609 0.05 0.27
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.97 -0.82491 1.06 0 -0 0
+
+
+ 1.04609 0.05 0.27
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0 0 0.86 0 -0 0
+
+
+ 0.52167 1.3 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.26 0 1.125 0 -0.2 0
+
+
+ 0.06 1.37206 0.6
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 1.12 0 0.7 0 -0 0
+
+
+ 0.58 1.3 0.8
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.02 0.76 1.936 3.14159 1.54159 3.14159
+
+
+ 0.03
+ 0.68
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.02 -0.76 1.936 3.14159 1.54159 3.14159
+
+
+ 0.03
+ 0.68
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0.315 0 1.93 0 -1 0
+
+
+ 0.01299 1.54 0.10226
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.41 0 1.88 0 -0 0
+
+
+ 0.01299 1.54 0.10226
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0.602 0.755 1.45 0 -0.54 0
+
+
+ 0.03
+ 1.15
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0.602 -0.755 1.45 0 -0.54 0
+
+
+ 0.03
+ 1.15
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.4 0.755 1.45 0 -0 0
+
+
+ 0.03
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.4 -0.755 1.45 0 -0 0
+
+
+ 0.03
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.411 0.04 1.445 0.397 -0 0
+
+
+ 0.01392 1.55724 0.078
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ -0.4 -0.04 1.445 -0.397 0 0
+
+
+ 0.01392 1.55724 0.078
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0.55 -0.1 0.4 0 -0 0
+
+
+ 0.6 0.15 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0.7 -0.05 0.45 0 -0.5 0
+
+
+ 0.2 0.05 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0.798 -0.125 0.478 0 -0.8 0
+
+
+ 0.129 0.1 0.05
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0.8135 -0.05 0.45 0 -0 0
+
+
+ 0.1 0.05 0.1835
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0.84 -0.125 0.45 0 -0 0
+
+
+ 0.03 0.1 0.1835
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 10
+ 0.82 -0.125 0.475 0 -0 0
+
+
+ 0.03 0.1 0.05
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.20223 0.71562 0.34697 -1.52 -0 -0
+
+ 12
+
+ 0.5
+ 0
+ 0.5
+ 0
+ 0
+ 1
+
+ 0 0 0 0 -0 0
+
+ 0
+ 0
+ 0
+
+ 0 0 0 -3e-06 1.57079 3.14159
+
+
+ model://rover/meshes/polaris.dae
+ 1.0037 0.8862 0.8862
+
+ Wheel_Front_Left
+ 1
+
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0
+ 1
+ 0 0 0 0 -0 0
+
+
+ 0.3175
+ 0.2794
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.20223 0.5 0.35515 1.5708 -0 0
+
+ 1
+
+ 0.01
+ 0
+ 0.01
+ 0
+ 0
+ 0.01
+
+ 0 0 0 0 -0 0
+
+ 0
+ 0
+ 0
+
+ 0
+ 10
+ 0 0 0 0 -0 0
+
+
+ 0.05
+ 0.01
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.20223 -0.71562 0.34697 1.52 -0 0
+
+ 12
+
+ 0.5
+ 0
+ 0.5
+ 0
+ 0
+ 1
+
+ 0 0 0 0 -0 0
+
+ 0
+ 0
+ 0
+
+ 0 0 0 3.14159 -1.57079 3.14159
+
+
+ model://rover/meshes/polaris.dae
+ 1.0037 0.8862 0.8862
+
+ Wheel_Front_Right
+ 1
+
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0
+ 1
+ 0 0 0 0 -0 0
+
+
+ 0.3175
+ 0.2794
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.20223 -0.5 0.35515 1.5708 -0 0
+
+ 1
+
+ 0.01
+ 0
+ 0.01
+ 0
+ 0
+ 0.01
+
+ 0 0 0 0 -0 0
+
+ 0
+ 0
+ 0
+
+ 0
+ 10
+ 0 0 0 0 -0 0
+
+
+ 0.05
+ 0.01
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -0.99377 0.71562 0.34697 -1.52 -0 -0
+
+ 12
+
+ 0.5
+ 0
+ 0.5
+ 0
+ 0
+ 1
+
+ 0 0 0 0 -0 0
+
+ 0
+ 0
+ 0
+
+ 0 0 0 3.14159 -1.57079 3.14159
+
+
+ model://rover/meshes/polaris.dae
+ 1.0037 0.8862 0.8862
+
+ Wheels_Rear_Left
+ 1
+
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0
+ 1
+ 0 0 0 0 -0 0
+
+
+ 0.3175
+ 0.2794
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -0.99377 -0.71562 0.34697 1.52 -0 0
+
+ 12
+
+ 0.5
+ 0
+ 0.5
+ 0
+ 0
+ 1
+
+ 0 0 0 0 -0 0
+
+ 0
+ 0
+ 0
+
+ 0 0 0 3.14159 -1.57079 3.14159
+
+
+ model://rover/meshes/polaris.dae
+ 1.0037 0.8862 0.8862
+
+ Wheels_Rear_Right
+ 1
+
+
+
+
+
+
+
+ 0
+ 1
+
+
+ 0
+ 1
+ 0 0 0 0 -0 0
+
+
+ 0.3175
+ 0.2794
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0 0 0 0 -0 0
+
+ 0 0 0 0 -0 0
+ 0.015
+
+ 1e-05
+ 0
+ 0
+ 1e-05
+ 0
+ 1e-05
+
+
+ 0
+ 0
+ 0
+
+
+ base_link
+ front_left_wheel_steering_block
+ 0 0 0 0 -0 0
+
+ 0 0 1
+ 1
+
+ -0.7727
+ 0.7727
+ -1
+ -1
+
+
+ 0
+ 0
+ 50
+ 0
+
+
+
+
+
+ 0
+ 0.9
+
+
+ 0
+ 0.2
+
+
+
+
+
+ front_left_wheel_steering_block
+ front_left_wheel
+ 0 0 0 0 -0 0
+
+ 0 1 0.05
+ 1
+
+ -1e+16
+ 1e+16
+ -1
+ -1
+
+
+ 0
+ 0
+ 0
+ 0
+
+
+
+
+
+ 0
+ 0.2
+
+
+ 0
+ 0.2
+
+
+
+
+
+ base_link
+ front_right_wheel_steering_block
+ 0 0 0 0 -0 0
+
+ 0 0 1
+ 1
+
+ -0.7727
+ 0.7727
+ -1
+ -1
+
+
+ 0
+ 0
+ 50
+ 0
+
+
+
+
+
+ 0
+ 0.9
+
+
+ 0
+ 0.2
+
+
+
+
+
+ front_right_wheel_steering_block
+ front_right_wheel
+ 0 0 0 0 -0 0
+
+ 0 1 -0.05
+ 1
+
+ -1e+16
+ 1e+16
+ -1
+ -1
+
+
+ 0
+ 0
+ 0
+ 0
+
+
+
+
+
+ 0
+ 0.2
+
+
+ 0
+ 0.2
+
+
+
+
+
+ base_link
+ rear_left_wheel
+ 0 0 0 0 -0 0
+
+ 0 1 0.05
+ 1
+
+ -1e+16
+ 1e+16
+ -1
+ -1
+
+
+ 0
+ 0
+ 0
+ 0
+
+
+
+
+
+ 0
+ 0.2
+
+
+ 0
+ 0.2
+
+
+
+
+
+ base_link
+ rear_right_wheel
+ 0 0 -0.1 0 -0 0
+
+ 0 1 -0.05
+ 1
+
+ -1e+16
+ 1e+16
+ -1
+ -1
+
+
+ 0
+ 0
+ 0
+ 0
+
+
+
+
+
+ 0
+ 0.2
+
+
+ 0
+ 0.2
+
+
+
+
+
+ base_link
+ rover/imu_link
+ 0 0 0 0 -0 0
+
+ 1 0 0
+ 1
+
+ 0
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+ 0
+ 0
+
+
+
+
+
+ 0
+ 0.2
+
+
+ 0
+ 0.2
+
+
+
+
+ 1
+ 0
+ 25.1253 -26.6491 -0.161234 0 -0 1.56166
+
+
+
diff --git a/contributer_demo/demo2/control/keyboard/my_multirotor_keyboard_control.py b/contributer_demo/demo2/control/keyboard/my_multirotor_keyboard_control.py
new file mode 100644
index 0000000..b5973d5
--- /dev/null
+++ b/contributer_demo/demo2/control/keyboard/my_multirotor_keyboard_control.py
@@ -0,0 +1,280 @@
+# encoding: utf-8
+import rospy
+from geometry_msgs.msg import Twist
+import sys, select, os
+import tty, termios
+from std_msgs.msg import String
+
+
+MAX_LINEAR = 20
+MAX_ANG_VEL = 3
+LINEAR_STEP_SIZE = 0.1
+ANG_VEL_STEP_SIZE = 0.1
+
+cmd_vel_mask = False
+ctrl_leader = False #初始 控制所有无人机
+
+msg2all = """
+Control Your XTDrone!
+To all drones (press g to control the leader)
+---------------------------
+ 1 2 3 4 5 6 7 8 9 0
+ w r t y i
+ a s d g j k l
+ x v b n ,
+
+w/x : increase/decrease forward velocity
+a/d : increase/decrease leftward velocity
+i/, : increase/decrease upward velocity
+j/l : increase/decrease orientation
+r : return home
+t/y : arm/disarm
+v/n : takeoff/land
+b : offboard
+s/k : hover and remove the mask of keyboard control
+0~9 : extendable mission(eg.different formation configuration)
+ this will mask the keyboard control
+g : control the leader
+CTRL-C to quit
+"""
+
+msg2leader = """
+Control Your XTDrone!
+To the leader (press g to control all drones)
+---------------------------
+ 1 2 3 4 5 6 7 8 9 0
+ w r t y i
+ a s d g j k l
+ x v b n ,
+
+w/x : increase/decrease forward velocity
+a/d : increase/decrease leftward velocity
+i/, : increase/decrease upward velocity
+j/l : increase/decrease orientation
+r : return home
+t/y : arm/disarm
+v/n : takeoff(disenabled now)/land
+b : offboard
+s/k : hover and remove the mask of keyboard control
+0~9 : extendable mission(eg.different formation configuration)
+ this will mask the keyboard control
+g : control all drones
+CTRL-C to quit
+"""
+
+e = """
+Communications Failed
+"""
+
+def getKey(): # 获得键盘按键
+ tty.setraw(sys.stdin.fileno())
+ rlist, _, _ = select.select([sys.stdin], [], [], 0.1)
+ if rlist:
+ key = sys.stdin.read(1)
+ else:
+ key = ''
+ termios.tcsetattr(sys.stdin, termios.TCSADRAIN, settings)
+ return key
+
+def print_msg(): # 打印提示信息
+ if ctrl_leader:
+ print(msg2leader)
+ else:
+ print(msg2all)
+
+if __name__=="__main__":
+
+ settings = termios.tcgetattr(sys.stdin)
+
+ multirotor_type = sys.argv[1]
+ multirotor_num = int(sys.argv[2])
+ control_type = sys.argv[3] #vel 速度控制
+ '''
+ if multirotor_num == 18: #多无人机编队
+ formation_configs = ['waiting', 'cuboid', 'sphere', 'diamond'] # 0-9的参数
+ elif multirotor_num == 9:
+ formation_configs = ['waiting', 'cube', 'pyramid', 'triangle']
+ elif multirotor_num == 6:
+ formation_configs = ['waiting', 'T', 'diamond', 'triangle']
+ ''' # 0 1 2 3
+ if multirotor_num == 21:
+ formation_configs = ['waiting', 'cube21', 'circle21', 'pyramid21', 'diamond21']
+ elif multirotor_num == 34:
+ formation_configs = ['waiting', 'CUBE', 'HEART', '520', 'NUDT', '八一']
+
+ cmd= String()
+ twist = Twist()
+
+ rospy.init_node('multirotor_keyboard_multi_control')
+
+ if control_type == 'vel': # 速度控制
+ multi_cmd_vel_flu_pub = [None]*multirotor_num
+ multi_cmd_pub = [None]*multirotor_num
+ for i in range(multirotor_num):
+ multi_cmd_vel_flu_pub[i] = rospy.Publisher('/xtdrone/'+multirotor_type+'_'+str(i)+'/cmd_vel_flu', Twist, queue_size=10)
+ multi_cmd_pub[i] = rospy.Publisher('/xtdrone/'+multirotor_type+'_'+str(i)+'/cmd',String,queue_size=10)
+ leader_cmd_vel_flu_pub = rospy.Publisher("/xtdrone/leader/cmd_vel_flu", Twist, queue_size=10)
+ leader_cmd_pub = rospy.Publisher("/xtdrone/leader/cmd", String, queue_size=10)
+
+ else: # 加速度控制
+ multi_cmd_accel_flu_pub = [None]*multirotor_num
+ multi_cmd_pub = [None]*multirotor_num
+ for i in range(multirotor_num):
+ multi_cmd_accel_flu_pub[i] = rospy.Publisher('/xtdrone/'+multirotor_type+'_'+str(i)+'/cmd_accel_flu', Twist, queue_size=10)
+ multi_cmd_pub[i] = rospy.Publisher('/xtdrone/'+multirotor_type+'_'+str(i)+'/cmd',String,queue_size=10)
+ leader_cmd_accel_flu_pub = rospy.Publisher("/xtdrone/leader/cmd_accel_flu", Twist, queue_size=10)
+ leader_cmd_pub = rospy.Publisher("/xtdrone/leader/cmd", String, queue_size=10)
+
+ forward = 0.0
+ leftward = 0.0
+ upward = 0.0
+ angular = 0.0
+
+ print_msg()
+ while(1):
+ key = getKey()
+ if key == 'w' :
+ forward = forward + LINEAR_STEP_SIZE
+ print_msg()
+ if control_type == 'vel':
+ print("currently:\t forward vel %.2f\t leftward vel %.2f\t upward vel %.2f\t angular %.2f " % (forward, leftward, upward, angular))
+ else:
+ print("currently:\t forward vel %.2f\t leftward vel %.2f\t upward vel %.2f\t angular %.2f " % (forward, leftward, upward, angular))
+
+ elif key == 'x' :
+ forward = forward - LINEAR_STEP_SIZE
+ print_msg()
+ if control_type == 'vel':
+ print("currently:\t forward vel %.2f\t leftward vel %.2f\t upward vel %.2f\t angular %.2f " % (forward, leftward, upward, angular))
+ else:
+ print("currently:\t forward vel %.2f\t leftward vel %.2f\t upward vel %.2f\t angular %.2f " % (forward, leftward, upward, angular))
+
+ elif key == 'a' :
+
+ leftward = leftward + LINEAR_STEP_SIZE
+ print_msg()
+ if control_type == 'vel':
+ print("currently:\t forward vel %.2f\t leftward vel %.2f\t upward vel %.2f\t angular %.2f " % (forward, leftward, upward, angular))
+ else:
+ print("currently:\t forward vel %.2f\t leftward vel %.2f\t upward vel %.2f\t angular %.2f " % (forward, leftward, upward, angular))
+
+ elif key == 'd' :
+ leftward = leftward - LINEAR_STEP_SIZE
+ print_msg()
+ if control_type == 'vel':
+ print("currently:\t forward vel %.2f\t leftward vel %.2f\t upward vel %.2f\t angular %.2f " % (forward, leftward, upward, angular))
+ else:
+ print("currently:\t forward vel %.2f\t leftward vel %.2f\t upward vel %.2f\t angular %.2f " % (forward, leftward, upward, angular))
+
+ elif key == 'i' :
+ upward = upward + LINEAR_STEP_SIZE
+ print_msg()
+ if control_type == 'vel':
+ print("currently:\t forward vel %.2f\t leftward vel %.2f\t upward vel %.2f\t angular %.2f " % (forward, leftward, upward, angular))
+ else:
+ print("currently:\t forward vel %.2f\t leftward vel %.2f\t upward vel %.2f\t angular %.2f " % (forward, leftward, upward, angular))
+
+ elif key == ',' :
+ upward = upward - LINEAR_STEP_SIZE
+ print_msg()
+ if control_type == 'vel':
+ print("currently:\t forward vel %.2f\t leftward vel %.2f\t upward vel %.2f\t angular %.2f " % (forward, leftward, upward, angular))
+ else:
+ print("currently:\t forward vel %.2f\t leftward vel %.2f\t upward vel %.2f\t angular %.2f " % (forward, leftward, upward, angular))
+
+ elif key == 'j':
+ angular = angular + ANG_VEL_STEP_SIZE
+ print_msg()
+ print("currently:\t forward vel %.2f\t leftward vel %.2f\t upward vel %.2f\t angular %.2f " % (forward, leftward, upward, angular))
+
+ elif key == 'l':
+ angular = angular - ANG_VEL_STEP_SIZE
+ print_msg()
+ print("currently:\t forward vel %.2f\t leftward vel %.2f\t upward vel %.2f\t angular %.2f " % (forward, leftward, upward, angular))
+
+ elif key == 'r': # 自动返回起飞点
+ cmd = 'AUTO.RTL'
+ print_msg()
+ print('Returning home')
+ elif key == 't': #飞机解锁
+ cmd = 'ARM'
+ print_msg()
+ print('Arming')
+ elif key == 'y': # 飞机上锁
+ cmd = 'DISARM'
+ print_msg()
+ print('Disarming')
+ elif key == 'v':
+ cmd = 'AUTO.TAKEOFF'
+ cmd = ''
+ print_msg()
+ #print('Takeoff mode is disenabled now')
+ elif key == 'b':
+ cmd = 'OFFBOARD'
+ print_msg()
+ print('Offboard')
+ elif key == 'n': # 自动着陆
+ cmd = 'AUTO.LAND'
+ print_msg()
+ print('Landing')
+ elif key == 'g': # 开启或结束编队控制
+ ctrl_leader = not ctrl_leader
+ print_msg()
+ elif key in ['k', 's']: # 悬停,全部参数归零
+ cmd_vel_mask = False
+ forward = 0.0
+ leftward = 0.0
+ upward = 0.0
+ angular = 0.0
+ cmd = 'HOVER'
+ print_msg()
+ print("currently:\t forward vel %.2f\t leftward vel %.2f\t upward vel %.2f\t angular %.2f " % (forward, leftward, upward, angular))
+ print('Hover')
+ else:
+ for i in range(10): # 按键数字
+ if key == str(i):
+ cmd = formation_configs[i] # 编队的队形
+ print_msg()
+ print(cmd)
+ cmd_vel_mask = True # 有掩模,其他按键无效
+ if (key == '\x03'):
+ break
+
+ if forward > MAX_LINEAR:
+ forward = MAX_LINEAR
+ elif forward < -MAX_LINEAR:
+ forward = -MAX_LINEAR
+ if leftward > MAX_LINEAR:
+ leftward = MAX_LINEAR
+ elif leftward < -MAX_LINEAR:
+ leftward = -MAX_LINEAR
+ if upward > MAX_LINEAR:
+ upward = MAX_LINEAR
+ elif upward < -MAX_LINEAR:
+ upward = -MAX_LINEAR
+ if angular > MAX_ANG_VEL:
+ angular = MAX_ANG_VEL
+ elif angular < -MAX_ANG_VEL:
+ angular = - MAX_ANG_VEL
+
+ twist.linear.x = forward; twist.linear.y = leftward ; twist.linear.z = upward
+ twist.angular.x = 0.0; twist.angular.y = 0.0; twist.angular.z = angular
+
+ for i in range(multirotor_num): # 无人机数量
+ if ctrl_leader:
+ if control_type == 'vel':
+ leader_cmd_vel_flu_pub.publish(twist)
+ else:
+ leader_cmd_aceel_flu_pub.publish(twist) #无定义
+ leader_cmd_pub.publish(cmd)
+ else:
+ if not cmd_vel_mask: #只有在输入0-9时,mask为True,其余情况为F 。这里是非数字时
+ if control_type == 'vel':
+ multi_cmd_vel_flu_pub[i].publish(twist)
+ else:
+ multi_cmd_accel_flu_pub[i].publish(twist)
+ multi_cmd_pub[i].publish(cmd)
+
+ cmd = ''
+
+ termios.tcsetattr(sys.stdin, termios.TCSADRAIN, settings)
diff --git a/contributer_demo/demo2/coordination/formation_demo/avoid.py b/contributer_demo/demo2/coordination/formation_demo/avoid.py
new file mode 100644
index 0000000..fe0361a
--- /dev/null
+++ b/contributer_demo/demo2/coordination/formation_demo/avoid.py
@@ -0,0 +1,54 @@
+import rospy
+from geometry_msgs.msg import Twist, Vector3, PoseStamped
+from std_msgs.msg import String
+import time
+import math
+import numpy
+import sys
+
+vehicle_type = sys.argv[1]
+vehicle_num = int(sys.argv[2])
+pose = [None]*vehicle_num
+pose_sub = [None]*vehicle_num
+avoid_vel_pub = [None]*vehicle_num
+avoid_kp = 0.5
+avoid_radius = 1.5
+aid_vec1 = [1, 0, 0]
+aid_vec2 = [0, 1, 0]
+vehicles_avoid_vel = [Vector3()] * vehicle_num
+
+def pose_callback(msg, id):
+ pose[id] = msg
+
+rospy.init_node('avoid')
+for i in range(vehicle_num):
+ pose_sub[i] = rospy.Subscriber(vehicle_type+'_'+str(i)+'/mavros/local_position/pose',PoseStamped,pose_callback,i)
+ avoid_vel_pub[i] = rospy.Publisher("/xtdrone/"+vehicle_type+'_'+str(i)+"/avoid_vel", Vector3,queue_size=10)
+
+time.sleep(1)
+rate = rospy.Rate(50)
+while not rospy.is_shutdown():
+ for i in range(vehicle_num):
+ position1 = numpy.array([pose[i].pose.position.x, pose[i].pose.position.y, pose[i].pose.position.z])
+ for j in range(1, vehicle_num-i):
+ position2 = numpy.array([pose[i+j].pose.position.x, pose[i+j].pose.position.y, pose[i+j].pose.position.z])
+ dir_vec = position1-position2
+ if numpy.linalg.norm(dir_vec) < avoid_radius:
+ cos1 = dir_vec.dot(aid_vec1)/(numpy.linalg.norm(dir_vec) * numpy.linalg.norm(aid_vec1))
+ cos2 = dir_vec.dot(aid_vec2)/(numpy.linalg.norm(dir_vec) * numpy.linalg.norm(aid_vec2))
+ if abs(cos1) < abs(cos2):
+ avoid_vel = avoid_kp * numpy.cross(dir_vec, aid_vec1)/numpy.linalg.norm(numpy.cross(dir_vec, aid_vec1))
+ else:
+ avoid_vel = avoid_kp * numpy.cross(dir_vec, aid_vec2)/numpy.linalg.norm(numpy.cross(dir_vec, aid_vec2))
+ if dir_vec[2] * avoid_vel[2] > 0:
+ vehicles_avoid_vel[i] = Vector3(vehicles_avoid_vel[i].x+avoid_vel[0],vehicles_avoid_vel[i].y+avoid_vel[1],vehicles_avoid_vel[i].z+avoid_vel[2])
+ vehicles_avoid_vel[i+j] = Vector3(vehicles_avoid_vel[i+j].x-avoid_vel[0],vehicles_avoid_vel[i+j].y-avoid_vel[1],vehicles_avoid_vel[i+j].z-avoid_vel[2])
+ else:
+ vehicles_avoid_vel[i] = Vector3(vehicles_avoid_vel[i].x-avoid_vel[0],vehicles_avoid_vel[i].y-avoid_vel[1],vehicles_avoid_vel[i].z-avoid_vel[2])
+ vehicles_avoid_vel[i+j] = Vector3(vehicles_avoid_vel[i+j].x+avoid_vel[0],vehicles_avoid_vel[i+j].y+avoid_vel[1],vehicles_avoid_vel[i+j].z+avoid_vel[2])
+ for i in range(vehicle_num):
+ avoid_vel_pub[i].publish(vehicles_avoid_vel[i])
+ vehicles_avoid_vel = [Vector3()] * vehicle_num
+ rate.sleep()
+
+
diff --git a/contributer_demo/demo2/coordination/formation_demo/my_follower.py b/contributer_demo/demo2/coordination/formation_demo/my_follower.py
new file mode 100644
index 0000000..82c552a
--- /dev/null
+++ b/contributer_demo/demo2/coordination/formation_demo/my_follower.py
@@ -0,0 +1,260 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+### This code is about the distributed formation control of consensus protocol with a certain
+### Laplacian matrix and the formation transformation based on a task allocation algorithm——
+### KM for the shorest distances of all the UAVs to achieve the new pattern.
+### For more information of these two algorithms, please see the latest paper on https://arxiv.org/abs/2005.01125
+
+import rospy
+from geometry_msgs.msg import Twist, Vector3, PoseStamped, TwistStamped
+from std_msgs.msg import String
+import sys
+
+# formation patterns
+#if sys.argv[3] == '6':
+# from formation_dict import formation_dict_6 as formation_dict
+#elif sys.argv[3] == '9':
+# from formation_dict import formation_dict_9 as formation_dict
+#elif sys.argv[3] == '18':
+# from formation_dict import formation_dict_18 as formation_dict
+if sys.argv[3] == '21':
+ from my_formation_dict import formation_dict_my as formation_dict
+elif sys.argv[3] == '34':
+ from my_formation_dict import formation_dict_my as formation_dict
+
+import numpy
+import Queue
+
+
+class Follower:
+
+ def __init__(self, uav_type, uav_id, uav_num):
+ self.hover = "HOVER"
+ self.offboard = "OFFBOARD"
+ self.uav_type = uav_type
+ self.id = uav_id
+ self.uav_num = uav_num
+ self.f = 100 # control/communication rate
+ self.local_pose = PoseStamped()
+ self.local_pose_queue = Queue.Queue(self.f/10)
+ for i in range(self.f/10):
+ self.local_pose_queue.put(PoseStamped())
+ self.local_velocity = TwistStamped()
+ self.cmd_vel_enu = Twist()
+ self.avoid_vel = Vector3()
+ self.following_switch = False # determine whether the formation pattern is required to be changed
+ self.arrive_print = True # determine whether the target position has been reached
+ self.following_ids = [] # followers of this uav
+ self.formation_config = 'waiting'
+ self.following_count = 0 # the number of followers of this uav
+ self.Kp = 1
+ self.velxy_max = 1 #0.8
+ self.velz_max = 1
+ self.following_local_pose = [PoseStamped() for i in range(self.uav_num)] # local position of other uavs, and only the position of followers of this uav is not zero
+ self.following_local_pose_sub = [None]*self.uav_num
+ self.arrive_count = 0
+ ###############起飞位置偏置
+ self.bias = [ [3, 3, 0],[6, 3, 0],[9, 3, 0],[12, 3, 0],[15, 3, 0],[18, 3, 0], [0, 6, 0],[3, 6, 0],[6, 6, 0],[9, 6, 0],[12, 6, 0],[15, 6, 0],[18, 6, 0], [0, 9, 0],[3, 9, 0],[6, 9, 0],[9, 9, 0],[12, 9, 0],[15, 9, 0],[18, 9, 0] ]
+ self.local_pose_sub = rospy.Subscriber(self.uav_type+'_'+str(self.id)+"/mavros/local_position/pose", PoseStamped, self.local_pose_callback)
+ self.avoid_vel_sub = rospy.Subscriber("/xtdrone/"+self.uav_type+'_'+str(self.id)+"/avoid_vel", Vector3, self.avoid_vel_callback)
+ self.formation_switch_sub = rospy.Subscriber("/xtdrone/formation_switch",String, self.formation_switch_callback)
+ self.vel_enu_pub = rospy.Publisher('/xtdrone/'+self.uav_type+'_'+str(self.id)+'/cmd_vel_enu', Twist, queue_size=10)
+ self.info_pub = rospy.Publisher('/xtdrone/'+self.uav_type+'_'+str(self.id)+'/info', String, queue_size=10)
+ self.cmd_pub = rospy.Publisher('/xtdrone/'+self.uav_type+'_'+str(self.id)+'/cmd',String,queue_size=10)
+ self.first_formation = True
+ self.orig_formation = None
+ self.new_formation = None
+
+ def local_pose_callback(self, msg):
+ self.local_pose = msg
+ self.local_pose.pose.position.x += self.bias[self.id-1][0]###########起飞位置偏置
+ self.local_pose.pose.position.y += self.bias[self.id-1][1]
+
+ pose_comparison = self.local_pose_queue.get()
+ self.local_pose_queue.put(self.local_pose)
+ comparison = (self.local_pose.pose.position.x - pose_comparison.pose.position.x)**2+(self.local_pose.pose.position.y - pose_comparison.pose.position.y)**2+(self.local_pose.pose.position.z - pose_comparison.pose.position.z)**2
+ if comparison < float(self.velxy_max**2+self.velxy_max**2+self.velz_max**2)/1e5: # if the target position is reached, arrive_count ++1
+ self.arrive_count += 1
+ else:
+ self.arrive_count = 0
+
+ def following_local_pose_callback(self, msg, id):
+ self.following_local_pose[id] = msg
+ self.following_local_pose[id].pose.position.x += self.bias[id][0]#############起飞位置偏置
+ self.following_local_pose[id].pose.position.y += self.bias[id][1]
+
+ # the order of changing the formation pattern
+ def formation_switch_callback(self, msg):
+ if not self.formation_config == msg.data:
+ self.following_switch = True
+ self.formation_config = msg.data
+
+ def avoid_vel_callback(self, msg):
+ self.avoid_vel = msg
+
+ def loop(self):
+ rospy.init_node('follower'+str(self.id-1))
+ rate = rospy.Rate(self.f)
+ while not rospy.is_shutdown():
+ if self.arrive_count > 2000 and self.arrive_print:
+ print("Follower"+str(self.id-1)+":Arrived")
+ self.arrive_print = False
+ if self.following_switch:
+ self.following_switch = False
+ self.arrive_print = True
+ self.arrive_count = 0
+ for i in range(self.f/10):
+ self.cmd_pub.publish(self.offboard)
+ self.info_pub.publish("Received")
+ print("Follower"+str(self.id-1)+": Switch to Formation "+self.formation_config)
+ # The Laplacian matrix is invarible in this code, and you can change it if necessary.
+ if self.formation_config=='waiting':
+ self.L_matrix = self.get_L_central_matrix()
+ else:
+ # Change from the original pattern to the first pattern without KM.
+ if self.first_formation:
+ self.first_formation=False
+ self.orig_formation=formation_dict[self.formation_config]
+ self.L_matrix = self.get_L_central_matrix()
+ else:
+ self.adj_matrix = self.build_graph(self.orig_formation,formation_dict[self.formation_config])
+ # These variables are determined for KM algorithm, see examples of KM algorithm on Github.
+ self.label_left = numpy.max(self.adj_matrix, axis=1) # init label for the left
+ self.label_right = numpy.array([0]*(self.uav_num-1)) # init label for the right set
+ self.match_right = numpy.array([-1] *(self.uav_num-1))
+ self.visit_left = numpy.array([0]*(self.uav_num-1))
+ self.visit_right = numpy.array([0]*(self.uav_num-1))
+ self.slack_right = numpy.array([100]*(self.uav_num-1))
+
+ self.change_id = self.KM()
+ # Get a new formation pattern of UAVs based on KM.
+ self.new_formation=self.get_new_formation(self.change_id,formation_dict[self.formation_config])
+ self.L_matrix = self.get_L_central_matrix()
+ self.orig_formation=self.new_formation
+ if self.id == 3:
+ print(self.L_matrix)
+ # Get the followers of this uav based on the Laplacian matrix, and update the position of the followers.
+ self.following_ids = numpy.argwhere(self.L_matrix[self.id,:] == 1)
+ self.following_count = 0
+ for i in range(self.uav_num):
+ if not self.following_local_pose_sub[i] == None:
+ self.following_local_pose_sub[i].unregister()
+ for following_id in self.following_ids:
+ self.following_local_pose_sub[following_id[0]] = rospy.Subscriber(self.uav_type+'_'+str(following_id[0])+"/mavros/local_position/pose", PoseStamped , self.following_local_pose_callback,following_id[0])
+ self.following_count += 1
+
+ self.cmd_vel_enu.linear = Vector3(0, 0, 0)
+ # Code of the consensus protocol, see details on the paper.
+ for following_id in self.following_ids:
+ #print(self.id,"following: ", self.following_ids)
+ self.cmd_vel_enu.linear.x += self.following_local_pose[following_id[0]].pose.position.x - self.local_pose.pose.position.x + self.new_formation[0, self.id-1]
+ self.cmd_vel_enu.linear.y += self.following_local_pose[following_id[0]].pose.position.y - self.local_pose.pose.position.y + self.new_formation[1, self.id-1]
+ self.cmd_vel_enu.linear.z += self.following_local_pose[following_id[0]].pose.position.z - self.local_pose.pose.position.z + self.new_formation[2, self.id-1]
+ if not following_id[0] == 0:
+ self.cmd_vel_enu.linear.x -= self.new_formation[0, following_id[0]-1]
+ self.cmd_vel_enu.linear.y -= self.new_formation[1, following_id[0]-1]
+ self.cmd_vel_enu.linear.z -= self.new_formation[2, following_id[0]-1]
+
+ self.cmd_vel_enu.linear.x = self.Kp * self.cmd_vel_enu.linear.x + self.avoid_vel.x
+ self.cmd_vel_enu.linear.y = self.Kp * self.cmd_vel_enu.linear.y + self.avoid_vel.y
+ self.cmd_vel_enu.linear.z = self.Kp * self.cmd_vel_enu.linear.z + self.avoid_vel.z
+
+ if self.cmd_vel_enu.linear.x > self.velxy_max: #越界限制
+ self.cmd_vel_enu.linear.x = self.velxy_max
+ elif self.cmd_vel_enu.linear.x < - self.velxy_max:
+ self.cmd_vel_enu.linear.x = - self.velxy_max
+ if self.cmd_vel_enu.linear.y > self.velxy_max:
+ self.cmd_vel_enu.linear.y = self.velxy_max
+ elif self.cmd_vel_enu.linear.y < - self.velxy_max:
+ self.cmd_vel_enu.linear.y = - self.velxy_max
+ if self.cmd_vel_enu.linear.z > self.velz_max:
+ self.cmd_vel_enu.linear.z = self.velz_max
+ elif self.cmd_vel_enu.linear.z < - self.velz_max:
+ self.cmd_vel_enu.linear.z = - self.velz_max
+
+ if not self.formation_config == 'waiting':
+ self.vel_enu_pub.publish(self.cmd_vel_enu)
+ if (self.cmd_vel_enu.linear.x)**2+(self.cmd_vel_enu.linear.y)**2+(self.cmd_vel_enu.linear.z)**2<0.2: #到达目标位置
+ self.arrive_count += 1
+ else:
+ self.arrive_count = 0
+ rate.sleep()
+
+ # 'build_graph', 'find_path' and 'KM' functions are all determined for KM algorithm.
+ # A graph of UAVs is established based on distances between them in 'build_graph' function.
+ def build_graph(self,orig_formation,change_formation):
+ distance=[[0 for i in range(self.uav_num-1)]for j in range(self.uav_num-1)] #二维0矩阵,行列都为跟随者个数
+ for i in range(self.uav_num-1):
+ for j in range(self.uav_num-1):
+ distance[i][j]=numpy.linalg.norm(orig_formation[:,i]-change_formation[:,j])
+ distance[i][j]=int(50-distance[i][j])
+ return distance
+
+ # Determine whether a path has been found.
+ def find_path(self,i):
+ self.visit_left[i] = True
+ for j, match_weight in enumerate(self.adj_matrix[i],start=0):
+ if self.visit_right[j]:
+ continue
+ gap = self.label_left[i] + self.label_right[j] - match_weight
+ if gap == 0 :
+ self.visit_right[j] = True
+ if self.match_right[j]==-1 or self.find_path(self.match_right[j]):
+ self.match_right[j] = i
+ return True
+ else:
+ self.slack_right[j]=min(gap,self.slack_right[j])
+ return False
+
+ # Main body of KM algorithm.
+ def KM(self):
+ for i in range(self.uav_num-1):
+ self.slack_right = numpy.array([100]*(self.uav_num-1))
+ while True:
+ self.visit_left = numpy.array([0]*(self.uav_num-1))
+ self.visit_right = numpy.array([0]*(self.uav_num-1))
+ if self.find_path(i):
+ break
+ d = numpy.inf
+ for j, slack in enumerate(self.slack_right):
+ if not self.visit_right[j] :
+ d = min(d,slack)
+ for k in range(self.uav_num-1):
+ if self.visit_left[k]:
+ self.label_left[k] -= d
+ if self.visit_right[k]:
+ self.label_right[k] += d
+ else:
+ self.slack_right[k] -=d
+ return self.match_right
+
+ # The formation patterns designed in the formation dictionaries are random (the old ones),
+ # and a new formation pattern based on the distances of UAVs of the current pattern is designed as follows.
+ # Note that only the desired position of each UAV has changed, while the form of the new pattern is the same as the one in the dictionary.
+ def get_new_formation(self,change_id,change_formation):
+ new_formation=numpy.zeros((3,self.uav_num-1))
+ position=numpy.zeros((3,self.uav_num-1))
+ change_id=[i + 1 for i in change_id]
+ for i in range(0,self.uav_num-1):
+ position[:,i]=change_formation[:,i]
+
+ for i in range(0,self.uav_num-1):
+ for j in range(0,self.uav_num-1):
+ if (j+1)==change_id[i]:
+ new_formation[:,i]=position[:,j]
+ return new_formation
+
+ # Laplacian matrix
+ def get_L_central_matrix(self):
+
+ L=numpy.zeros((self.uav_num,self.uav_num))
+ for i in range(1,self.uav_num):
+ L[i][0]=1
+ L[i][i]=-1
+
+ #L=numpy.array([[-0. ,0. , 0., 0., 0., 0.],[ 1. ,-1. , 0. , 0. , 0. , 0.],[ 0., 1. ,-1. , 0. , 0. , 0.],[ 0., 0., 1. ,-1. , 0. , 0.],[ 0. , 0. , 0. , 1. ,-1. , 0.],[ 0. , 0. , 0. , 0. , 1. ,-1.]])
+ return L
+
+if __name__ == '__main__':
+ follower = Follower(sys.argv[1],int(sys.argv[2]),int(sys.argv[3]))
+ follower.loop()
diff --git a/contributer_demo/demo2/coordination/formation_demo/my_formation_generator.py b/contributer_demo/demo2/coordination/formation_demo/my_formation_generator.py
new file mode 100644
index 0000000..4664a0e
--- /dev/null
+++ b/contributer_demo/demo2/coordination/formation_demo/my_formation_generator.py
@@ -0,0 +1,380 @@
+# encoding: utf-8
+import numpy as np
+import random
+import matplotlib.pyplot as plt
+import math
+import os
+
+UAV_NUM = 33 #无人机数量-1,0 0 0位置不动
+POP_SIZE = 200 #种群数量
+N_GENERATIONS = 200 #迭代次数,迭代50轮
+CROSSOVER_RATE = 0.8
+# MUTATION_RATE = 0.2
+
+formation_dict_my = {}
+# formation_dict_my["origin34"] = [ # XTDrone中简化仿真的初始位置
+# # [0, 0, 0],
+# [0, 1, 0], [0, 2, 0], [1, 0, 0], [1, 1, 0], [1, 2, 0],
+# [2, 0, 0], [2, 1, 0], [2, 2, 0], [3, 0, 0], [3, 1, 0], [3, 2, 0],
+# [4, 0, 0], [4, 1, 0], [4, 2, 0], [5, 0, 0], [5, 1, 0], [5, 2, 0],
+# [6, 0, 0], [6, 1, 0], [6, 2, 0], [7, 0, 0], [7, 1, 0], [7, 2, 0],
+# [8, 0, 0], [8, 1, 0], [8, 2, 0], [9, 0, 0], [9, 1, 0], [9, 2, 0],
+# [10, 0, 0], [10, 1, 0], [10, 2, 0], [11, 0, 0] ]
+formation_dict_my["origin34"] = [ # XTDrone中gazebo仿真的初始位置
+ # [0, 3, 0],
+ [3, 3, 0], [6, 3, 0], [9, 3, 0], [12, 3, 0],
+ [0, 6, 0], [3, 6, 0], [6, 6, 0], [9, 6, 0], [12, 6, 0],
+ [0, 9, 0], [3, 9, 0], [6, 9, 0], [9, 9, 0], [12, 9, 0],
+ [0, 12, 0], [3, 12, 0], [6, 12, 0], [9, 12, 0], [12, 12, 0],
+ [0, 15, 0], [3, 15, 0], [6, 15, 0], [9, 15, 0], [12, 15, 0],
+ [0, 18, 0], [3, 18, 0], [6, 18, 0], [9, 18, 0], [12, 18, 0],
+ [0, 21, 0], [3, 21, 0], [6, 21, 0], [9, 21, 0] ]
+formation_dict_my["CUBE"] = [ #自定义位置1,立方体
+ # [0, 0, 0],
+ [0, 0, 0],
+ [-15, -15, 15], [-15, 15, 15], [15, 15, 15], [15, -15, 15], #上顶点
+ [-15, -15, -15], [-15, 15, -15], [15, 15, -15], [15, -15, -15], #下顶点
+ [-15, -5, 15], [-15, 5, 15], [-5, 15, 15], [5, 15, 15], #上棱
+ [15, 5, 15], [15, -5, 15], [5, -15, 15], [-5, -15, 15], #上棱
+ [-15, -5, -15], [-15, 5, -15], [-5, 15, -15], [5, 15, -15], #下棱
+ [15, 5, -15], [15, -5, -15], [5, -15, -15], [-5, -15, -15], #下棱
+ [-15, -15, -5], [-15, -15, 5], [15, -15, -5], [15, -15, 5], #中棱
+ [-15, 15, -5], [-15, 15, 5], [15, 15, -5], [15, 15, 5] ] #中棱
+formation_dict_my["HEART"] = [ #自定义位置2,心形
+ # [-0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
+ [ 1.00000000e+01, 0.00000000e+00, 0.00000000e+00],
+ [ 8.33179844e+00, 1.31962721e+00, 0.00000000e+00],
+ [ 6.57163890e+00, 2.13525495e+00, 0.00000000e+00],
+ [ 4.86498026e+00, 2.47883127e+00, 0.00000000e+00],
+ [ 3.33488737e+00, 2.42293749e+00, 0.00000000e+00],
+ [ 2.07106782e+00, 2.07106781e+00, 0.00000000e+00],
+ [ 1.12256994e+00, 1.54508498e+00, 0.00000000e+00],
+ [-1.12256995e+00, 1.54508497e+00, 0.00000000e+00],
+ [-2.07106781e+00, 2.07106781e+00, 0.00000000e+00],
+ [-3.33488736e+00, 2.42293751e+00, 0.00000000e+00],
+ [-4.86498028e+00, 2.47883124e+00, 0.00000000e+00],
+ [-6.57163891e+00, 2.13525491e+00, 0.00000000e+00],
+ [-8.33179843e+00, 1.31962724e+00, 0.00000000e+00],
+ [-1.00000000e+01, 3.58979303e-08, 0.00000000e+00],
+ [-1.14219684e+01,-1.80906211e+00, 0.00000000e+00],
+ [-1.24494914e+01,-4.04508498e+00, 0.00000000e+00],
+ [-1.29551502e+01,-6.60097872e+00, 0.00000000e+00],
+ [-1.28454526e+01,-9.33276749e+00, 0.00000000e+00],
+ [-1.20710678e+01,-1.20710678e+01, 0.00000000e+00],
+ [-1.06331351e+01,-1.46352549e+01, 0.00000000e+00],
+ [-8.62130925e+00,-1.69202720e+01, 0.00000000e+00],
+ [-6.15270291e+00,-1.89360728e+01, 0.00000000e+00],
+ [-3.28150749e+00,-2.07186232e+01, 0.00000000e+00],
+ [-8.84786534e-09,-2.30000000e+01, 0.00000000e+00],
+ [ 3.28150747e+00,-2.07186232e+01, 0.00000000e+00],
+ [ 6.15270308e+00,-1.89360727e+01, 0.00000000e+00],
+ [ 8.62130924e+00,-1.69202720e+01, 0.00000000e+00],
+ [ 1.06331351e+01,-1.46352549e+01, 0.00000000e+00],
+ [ 1.20710678e+01,-1.20710679e+01, 0.00000000e+00],
+ [ 1.28454526e+01,-9.33276750e+00, 0.00000000e+00],
+ [ 1.29551502e+01,-6.60097873e+00, 0.00000000e+00],
+ [ 1.24494914e+01,-4.04508499e+00, 0.00000000e+00],
+ [ 1.14219684e+01,-1.80906212e+00, 0.00000000e+00] ]
+formation_dict_my["520"] = [ #自定义位置3,520
+ # [0, 0, 0],
+ [-3, 0, 0], [3, 0, 0], [3, -3, 0], [3, -6, 0], [0, -6, 0],#2
+ [-3, -6, 0], [-3, -9, 0], [-3, -12, 0], [0, -12, 0], [3, -12, 0],
+ [-9, 0, 0], [-12, 0, 0], [-15, 0, 0], [-15, -3, 0], [-15, -6, 0], [-12, -6, 0], #5
+ [-9, -6, 0], [-9, -9, 0], [-9, -12, 0], [-12, -12, 0], [-15, -12, 0],
+ [9, 0, 0], [12, 0, 0], [15, 0, 0], [15, -3, 0], [15, -6, 0], [15, -9, 0], #0
+ [15, -12, 0], [12, -12, 0], [9, -12, 0], [9, -9, 0], [9, -6, 0], [9, -3, 0] ]
+formation_dict_my["NUDT"] = [ #自定义位置4,国防科大
+ # [0, 0, 0],
+ [0, -4, 0], [0, -8, 0], [-1.2, -11, 0], #U
+ [-7, 0, 0], [-7, -4, 0], [-7, -8, 0], [-5.8, -11, 0], [-3.5, -12, 0],
+ [-12, 0, 0], [-12, -6, 0], [-12, -12, 0], #N
+ [-18, 0, 0], [-18, -6, 0], [-18, -12, 0],
+ [-16.5, -3, 0], [-15, -6, 0], [-13.5, -9, 0],
+ [5, 0, 0], [5, -3, 0], [5, -6, 0], [5, -9, 0], [5, -12, 0], #D
+ [8, -0.5, 0], [9.5, -3, 0], [10.5, -6, 0], [9.5, -9, 0], [8, -11.5, 0],
+ [15, 0, 0], [18, 0, 0], [21, 0, 0], [18, -4, 0], [18, -8, 0], [18, -12, 0] ]#T
+formation_dict_my["八一"] = [ #自定义位置5,八一军徽
+ # [0, 0, 0],
+ [-2, 0, 0], [2, 0, 0], [-2, -3, 0], [-2.5, -4, 0], [-3.5, -4.5, 0],
+ [2, -1, 0], [2.5, -2, 0], [3, -3, 0], [4, -4.5, 0], #八
+ [-3, -8, 0], [-1, -8, 0], [1, -8, 0], [3, -8, 0], #一
+ [-22, 2, -5], [-13.4, 2, -5], [-5.2, 2, -5], [-2.6, 10, -5], [0, 18, -5],
+ [2.6, 10, -5], [5.2, 2, -5], [13.4, 2, -5], [22, 2, -5], #上
+ [15.2, -3, -5], [8.4, -8, -5], [11, -16, -5], [13.4, -24, -5], [6.8, -19, -5],
+ [0, -14, -5], [-6.8, -19, -5], [-13.6, -24, -5], [-11, -16, -5], [-8.4, -8, -5], [-15.2, -3, -5] ] #下
+
+
+def plot_uav_pos():
+###画无人机位置
+ pre_x = np.zeros((1, UAV_NUM)) #初始位置
+ pre_y = np.zeros((1, UAV_NUM))
+ pre_z = np.zeros((1, UAV_NUM))
+ past_x = np.zeros((1, UAV_NUM)) #编队后位置
+ past_y = np.zeros((1, UAV_NUM))
+ past_z = np.zeros((1, UAV_NUM))
+ for i in range(UAV_NUM):
+ pre_x[0][i] = UAV_pre[i][0]
+ pre_y[0][i] = UAV_pre[i][1]
+ pre_z[0][i] = UAV_pre[i][2]
+ past_x[0][i] = UAV_past[i][0]
+ past_y[0][i] = UAV_past[i][1]
+ past_z[0][i] = UAV_past[i][2]
+ fig = plt.figure()
+ ax = fig.add_subplot(111, projection='3d')
+
+ ax.set_xlim(-10, 10)#坐标轴范围
+ ax.set_ylim(-10, 10)
+ ax.set_zlim(-10, 10)
+ ax.set_xlabel('X Axes')
+ ax.set_ylabel('Y Axes')
+ ax.set_zlabel('Z Axes')
+ sc = ax.scatter3D(pre_x, pre_y, pre_z, color='r', alpha=0.7, marker='1', linewidth = 10) #初始位置 红
+ sc = ax.scatter3D(past_x, past_y, past_z, color='y', alpha=0.7, marker='1', linewidth = 10) #编队后位置 黄
+#画无人机位置的辅助线
+ #编队后位置
+ # DING_LIST = [[-4, -3], [6, -3], [6, 9], [-4, 9]]
+ # DingX, DingY = [], []
+ # for each in DING_LIST:
+ # DingX.append(each[0])
+ # DingY.append(each[1])
+ # DingX.append(DING_LIST[0][0]) #X和Y行程闭环
+ # DingY.append(DING_LIST[0][1])
+ # ax.plot(DingX, DingY, color = 'black', linestyle = ':')
+ # #初始位置
+ # r = 5
+ # a, b = (0,0)
+ # x = np.arange( a-r, a+r+1e-3, 0.1)
+ # y = b + np.sqrt( r**2 - (x - a)**2)
+ # ax.plot(x, y, color = 'black', linestyle = ':') # 上半部
+ # ax.plot(x, -y, color = 'black', linestyle = ':') # 下半部
+ # plt.show()
+
+
+###计算全部无人机从初始位置分别到终止位置的距离
+def calu_pre2past_dis():
+ distance = []
+ for i in range(UAV_NUM):
+ single_pre = UAV_pre[i]
+ pre = np.tile(single_pre, (UAV_NUM ,1 ))#矩阵增广,用于将 原先的位置-编队后的位置
+ dis_pre2past = np.sqrt( np.dot( (pre - UAV_past)**2, np.array([ [1],[1],[1] ]) ) ) #计算无人机编队前后的距离
+ #编队前位置-编队后位置,再对x和y分别平方,再相加,最后开方。两点间的距离
+ dis_pre2past = dis_pre2past.reshape(-1,) #(10,1)转化为(10,)
+ distance.append( dis_pre2past ) #每一行代表初始的一架无人机,变换到编队后所有位置的距离
+ distance = np.array(distance) # distance[x][y]表示初始第x号飞到编队后第y号位置的距离
+ return distance
+
+###初始化种群
+def initpop():
+ pop = np.zeros((POP_SIZE, UAV_NUM), int)
+ #100行 * 10列,用来表示初始的x架无人机0~9编队后到达的位置的下标0~9
+ # print(pop)
+ # print(type(pop[1][1]))
+ for i in range(POP_SIZE):
+ select = [x for x in range( UAV_NUM )] #随机产生种群的每个个体
+ random.shuffle(select) #产生一种随机的分配方案
+ pop[i, :] = select
+ return pop
+# print(pop)
+
+###交叉 变异
+def crossover_and_mutation(pop):
+ pre_pop = pop.copy() #prechoose是不经过交叉变异的,newchoose后期经过交叉变异
+ for row in range(0, (np.shape(pop))[0], 2): # 两个为一组互相交叉
+ if CROSSOVER_RATE > random.random():
+ gen_1 = pop[row, :].copy()
+ gen_2 = pop[row + 1, :].copy()
+ select = [x for x in range(UAV_NUM)]
+ random.shuffle(select)
+ p1 = select[0] #保证两个交叉点的位置不一样
+ p2 = select[1]
+ p1, p2 = min(p1, p2), max(p1, p2) # 保证 p1 < p2
+ cross1, cross2 = gen_1[p1:p2 + 1].copy(), gen_2[p1:p2 + 1].copy() #两个基因的交叉片段
+ # print(p1, p2, cross1, cross2)
+ for cro_pos_i in range(p2 - p1 + 1): # 遍历交叉片段
+ gen_pos1 = np.where(gen_1 == cross2[cro_pos_i])
+ gen_1[gen_pos1] = (gen_1[p1:p2 + 1])[cro_pos_i].copy()
+ # a = gen_1
+ for cro_pos_i in range(p2 - p1 + 1):
+ gen_pos2 = np.where(gen_2 == cross1[cro_pos_i])
+ gen_2[gen_pos2] = (gen_2[p1:p2 + 1])[cro_pos_i].copy()
+ # b = gen_2
+ gen_1[p1:p2 + 1] = cross2.copy() #gen2的交叉片段给gen1
+ gen_2[p1:p2 + 1] = cross1.copy()
+ pop[row, :] = gen_1.copy() #放回到种群中
+ pop[row + 1, :] = gen_2.copy()
+
+ for row in range(0, (np.shape(pop))[0]): #遍历每个基因,以一定概率变异
+ if MUTATION_RATE > random.random():
+ select = [x for x in range(UAV_NUM)]
+ random.shuffle(select)
+ p1 = select[0] #保证变异的两个点位不一样
+ p2 = select[1]
+ gen = pop[row, :].copy()
+ gen[p1], gen[p2] = gen[p2], gen[p1] #交换两个变异的点位
+ pop[row, :] = gen.copy() #放回到种群中
+ # print(p1,p2,gen[p1],gen[p2])
+ # print(pop,'--------')
+ # print(pre_pop)
+ pop = np.append(pre_pop, pop, 0)
+ #经过交叉变异的种群和未经过的,组合成一个两倍于POPSIZE的种群,下一轮会选择前POPSIZE个
+ return pop
+ # print(pop.shape)
+
+###计算每一种分配情况,最远距离和最近距离之差
+def calu_allocate_dis(pop, dist):
+ all_pop_dis = [] #种群100个个体分配情况的时间,列表,行向量
+
+ for allocate_i in pop: #遍历每一种分配方案
+ distances = np.zeros(UAV_NUM)
+ for i in range(UAV_NUM):
+ uav_no_ = allocate_i[i]
+ distances[i] = dist[uav_no_][i]
+ all_pop_dis.append(max(distances) - min(distances))
+ all_pop_dis = np.array(all_pop_dis).reshape(-1, 1) # 列表转列向量
+ # unselect_pop_n = all_pop_dis.shape[0]
+ return all_pop_dis #每种分配方案的距离
+ # print(all_pop_dis)
+
+# ###计算每一种分配的总距离
+# def calu_allocate_dis(pop, dist):
+# all_pop_dis = [] #种群100个个体分配情况的时间,列表,行向量
+# for allocate_i in pop: #遍历每一种分配方案
+# single_array_sum_time = 0 #一种分配情况的总时间
+# for i in range(UAV_NUM):
+# uav_no_ = allocate_i[i]
+# single_array_sum_time += dist[uav_no_][i]
+# all_pop_dis.append(single_array_sum_time)
+# all_pop_dis = np.array(all_pop_dis).reshape(-1, 1) # 列表转列向量
+# # unselect_pop_n = all_pop_dis.shape[0]
+# return all_pop_dis #每种分配方案的距离
+
+
+###排序并计算适应度
+def get_fitness(all_pop_dis, pop):
+ index = np.argsort(all_pop_dis, 0) #升序排列,下标
+ all_pop_dis = all_pop_dis[index].reshape(all_pop_dis.shape[0], 1)[0:POP_SIZE, :]
+ #距离升序排列,种群经过交叉变异,数量扩大一倍,这里选择前POP_SIZE个(距离最短的前n个)
+ pop = pop[index].reshape(pop.shape[0], UAV_NUM)[0:POP_SIZE, :] # 距离短的前n个种群个体
+ '''计算适值和适应度'''
+ fit = 1000 - all_pop_dis[:] # 适应度,时间的反比,时间短=适应度大
+ fitplus = np.cumsum(fit).reshape(-1, 1) # 适值向下叠加
+ # print(fitplus[POP_SIZE-1, :])
+ fitlevelplus = fitplus[:] / fitplus[POP_SIZE - 1, :] # 适应度向下叠加
+ fitlevelplus = np.insert(fitlevelplus, 0, np.array([0]), 0) # 在第一行添加0
+ # print(fitlevelplus)
+ # a = (np.shape(fitlevelplus))[0]
+ return fitlevelplus, all_pop_dis, pop
+
+###选择
+def select(pop, fitlevelplus, all_pop_dis):
+ newchoose_pop = [] #根据适应度选择的新种群
+ new_pop_dis = [] #新种群的每个个体,分配方案的距离
+ for _ in range(POP_SIZE):
+ rand = random.random()
+ for row in range(POP_SIZE):
+ if rand > fitlevelplus[row, :] and rand < fitlevelplus[row + 1, :]:
+ newchoose_pop.append(pop[row, :])
+ new_pop_dis.append(all_pop_dis[row, :])
+ break
+ newchoose_pop = np.array(newchoose_pop)
+ new_pop_dis = np.array(new_pop_dis)
+ return newchoose_pop, new_pop_dis
+ # print(newchoose)
+ # print((np.shape(newchoose))[0])
+ # print(new_pop_dis)
+
+#将种群和每个分配方案的距离排序
+def sortdis(sortpop, dist):
+ index = np.argsort(dist, 0) #升序排列,下标
+ dist = dist[index].reshape(dist.shape[0], 1)
+ #距离升序排列,种群经过交叉变异,数量扩大一倍,这里选择前POP_SIZE个(距离最短的前n个)
+ sortpop = sortpop[index].reshape(sortpop.shape[0], UAV_NUM)
+ return sortpop, dist
+
+def plot_allocate(best_allc):#best_allc是0~9个编队后位置分给初始的第几号无人机
+ plot_uav_pos()
+ for i in range(UAV_NUM):
+ uav_x = []
+ uav_y = []
+ uav_z = []
+ uav_x.append( UAV_past[i][0] ) #编队后的位置给初始的第几号无人机
+ uav_y.append( UAV_past[i][1] )
+ uav_z.append( UAV_past[i][2] )
+ uav_id_pre = best_allc[i]
+ uav_x.append( UAV_pre[uav_id_pre][0] )
+ uav_y.append( UAV_pre[uav_id_pre][1] )
+ uav_z.append( UAV_pre[uav_id_pre][2] )
+ plt.plot(uav_x, uav_y, uav_z, color = 'black', linestyle = ':')
+ plt.show()
+
+def outputfile(best_allc, form_name):
+ allo_index = np.argsort(best_allc, 0) #升序排列,下标。排序后的下标,是初始无人机0~9到达终止位置的第几号
+ # 编队结果:6 3 5 9 0 1 7 2 8 4
+ # 排序下标:4 5 7 1 9 2 0 6 8 3
+ # 0号对应编队第4号位置, 1号对应编队第5号位置
+ filename = 'my_formation_dict.py'
+ filepath = os.getcwd() + '\\' + filename # 输出的文件所在完整路径
+ if not os.path.exists(filepath): #如果文件不存在,则在文件里添加第一行
+ with open(filename, 'w') as f:
+ f.write( "import numpy as np\n\n" )
+ f.write( "formation_dict_my = {}\n" )
+ with open(filename, 'a') as f:
+ f.write( 'formation_dict_my["' + form_name + '"] = np.array([ ' )
+ for i in range(0, UAV_NUM-1):
+ f.write( str(UAV_past[allo_index[i]]) + ",")
+ f.write( str(UAV_past[allo_index[UAV_NUM-1]]) + "])\n")
+ f.write( 'formation_dict_my["' + form_name + '"] = np.transpose(formation_dict_my["' + form_name + '"]*1)\n')
+
+def plot_info(best_distances, dist, pop):
+ best_distances = np.array(best_distances)
+ # print(best_distances)
+ print(dist[0, :]) #最短距离
+ # print(pop[0, :]) #对应的分配方案
+
+ x = [a for a in range(1, N_GENERATIONS+1)]
+ y = best_distances
+ plt.plot(x, y)
+ plt.xlabel('迭代次数')
+ plt.ylabel('距离之差')
+ plt.rcParams['font.sans-serif'] = ['SimHei']
+ plt.show()
+
+def calu_best_dis(best_allc, dis):
+ best_dis = 0
+ # allo_index = np.argsort(best_allc, 0) #升序排列,下标
+ for i in range(UAV_NUM):
+ uav_no_ = best_allc[i]
+ best_dis += dis[uav_no_][i]
+ # pos_past = UAV_past[allo_index[i]]
+ # pos_pre = UAV_pre[i]
+ # curr_dis = math.sqrt((pos_pre[0] - pos_past[0]) ** 2 + (pos_pre[1] - pos_past[1]) ** 2)
+ # best_dis += curr_dis
+ print(best_dis)
+
+if __name__ == "__main__":
+ dic_i = 0
+ for key in formation_dict_my.keys():
+ MUTATION_RATE = 0.2 # 每开始新的一轮循环,新的编队
+ form_name = key
+ UAV_past = formation_dict_my[key]
+ if dic_i:
+ plot_uav_pos()
+ plt.show() #画无人机初始位置和编队后的位置
+ distance = calu_pre2past_dis() #计算全部无人机从初始位置分别到终止位置的距离
+ pop = initpop() #初始化种群
+ best_distances = [] #每一轮最短的距离,用于绘图
+ for generation_n in range(N_GENERATIONS): #迭代N代
+ if generation_n == int(N_GENERATIONS/2):#迭代到一半时,变异率扩大一倍
+ MUTATION_RATE = MUTATION_RATE*3
+ pop = crossover_and_mutation(pop) #先交叉变异,pop扩大为原来的两倍
+ all_pop_dis = calu_allocate_dis(pop, distance) #每种分配方案的距离,分配方案的数量
+ fitlevelplus, all_pop_dis, pop = get_fitness(all_pop_dis, pop) #种群排序,取前n,求适应度
+ # pop, all_pop_dis = select(pop, fitlevelplus, all_pop_dis) #选择
+ # sort_pop, sort_pop_dis = sortdis(pop, all_pop_dis)
+ best_distances.append(all_pop_dis[0, :]) #当前种群里,最短距离
+ plot_allocate(pop[0, :]) #画无人机前后分配线
+ outputfile(pop[0, :], form_name) #无人机位置输出到文件
+ plot_info(best_distances, all_pop_dis, pop) #绘制最短距离随迭代次数变化曲线
+ # calu_best_dis(pop[0, :], distance)
+ UAV_pre = formation_dict_my[key]
+ dic_i += 1
diff --git a/contributer_demo/demo2/coordination/formation_demo/my_leader.py b/contributer_demo/demo2/coordination/formation_demo/my_leader.py
new file mode 100644
index 0000000..6a3f3c4
--- /dev/null
+++ b/contributer_demo/demo2/coordination/formation_demo/my_leader.py
@@ -0,0 +1,101 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+import rospy
+from geometry_msgs.msg import Twist, Vector3, PoseStamped
+from std_msgs.msg import String
+from pyquaternion import Quaternion
+import time
+import math
+import numpy
+import sys
+#if sys.argv[2] == '6': #formation_dict是该文件夹下的文件
+# from formation_dict import formation_dict_6 as formation_dict
+#elif sys.argv[2] == '9':
+# from formation_dict import formation_dict_9 as formation_dict
+#elif sys.argv[2] == '18':
+# from formation_dict import formation_dict_18 as formation_dict
+if sys.argv[2] == '21':
+ from my_formation_dict import formation_dict_my as formation_dict
+elif sys.argv[2] == '34':
+ from my_formation_dict import formation_dict_my as formation_dict
+
+class Leader:
+
+ def __init__(self, uav_type, leader_id, uav_num):
+ self.hover = True
+ self.id = leader_id
+ self.local_pose = PoseStamped()
+ self.cmd_vel_enu = Twist()
+ self.follower_num = uav_num - 1
+ self.followers_info = ["Moving"]*self.follower_num
+ self.follower_arrived_num = 0
+ self.follower_all_arrived = True
+ self.avoid_accel = Vector3(0,0,0)
+ self.formation_config = 'waiting'
+ self.target_height_recorded = False
+ self.cmd = String()
+ self.f = 200
+ self.Kz = 0.5
+ self.local_pose_sub = rospy.Subscriber(uav_type+'_'+str(self.id)+"/mavros/local_position/pose", PoseStamped , self.local_pose_callback)
+ self.cmd_vel_sub = rospy.Subscriber("/xtdrone/leader/cmd_vel_flu", Twist, self.cmd_vel_callback)
+ self.avoid_vel_sub = rospy.Subscriber("/xtdrone/"+uav_type+'_'+str(self.id)+"/avoid_accel", Vector3, self.avoid_accel_callback)
+ self.leader_cmd_sub = rospy.Subscriber("/xtdrone/leader/cmd",String, self.cmd_callback)
+
+ for i in range(self.follower_num):#遍历所有跟随者
+ rospy.Subscriber('/xtdrone/'+uav_type+'_'+str(i+1)+'/info',String,self.followers_info_callback,i)
+ self.local_pose_pub = rospy.Publisher("/xtdrone/leader/pose", PoseStamped , queue_size=10)
+ self.formation_switch_pub = rospy.Publisher("/xtdrone/formation_switch",String, queue_size=10)
+ self.vel_enu_pub = rospy.Publisher('/xtdrone/'+uav_type+'_'+str(self.id)+'/cmd_vel_enu', Twist, queue_size=10)
+ self.cmd_pub = rospy.Publisher('/xtdrone/'+uav_type+'_'+str(self.id)+'/cmd', String, queue_size=10)
+
+ def local_pose_callback(self, msg):
+ self.local_pose = msg
+
+ def cmd_vel_callback(self, msg):
+ self.cmd_vel_enu = msg
+ if msg.linear.z == 0:
+ self.hover = True #悬停
+ else:
+ self.hover = False
+
+ def cmd_callback(self, msg):
+ if msg.data in formation_dict.keys():
+ self.formation_config = msg.data
+ else:
+ self.cmd = msg.data
+
+ def avoid_accel_callback(self, msg):
+ self.avoid_accel = msg
+
+ def followers_info_callback(self, msg, id):
+ self.followers_info[id] = msg.data
+ #print("follower"+str(id)+":"+ msg.data)
+
+ def loop(self):
+ rospy.init_node('leader')
+ rate = rospy.Rate(self.f)
+ while True:
+ #self.cmd_vel_enu = Twist()
+ for follower_info in self.followers_info:
+ if follower_info == "Arrived": # 一架到达
+ self.follower_arrived_num += 1
+ if self.follower_arrived_num > self.follower_num - 1:
+ self.follower_all_arrived = True #全部到达
+ if self.follower_all_arrived:
+ self.formation_switch_pub.publish(self.formation_config)
+ if self.formation_config == 'pyramid':
+ if not self.target_height_recorded:
+ target_height = self.local_pose.pose.position.z + 2
+ self.target_height_recorded = True
+ self.cmd_vel_enu.linear.z = self.Kz * (target_height - self.local_pose.pose.position.z)
+ self.cmd_vel_enu.linear.x += self.avoid_accel.x
+ self.cmd_vel_enu.linear.y += self.avoid_accel.y
+ self.cmd_vel_enu.linear.z += self.avoid_accel.z
+ self.vel_enu_pub.publish(self.cmd_vel_enu)
+ self.local_pose_pub.publish(self.local_pose)
+ self.cmd_pub.publish(self.cmd)
+ rate.sleep()
+
+if __name__ == '__main__':
+ leader = Leader(sys.argv[1], 0, int(sys.argv[2]))
+ leader.loop()
diff --git a/contributer_demo/demo2/coordination/formation_demo/my_run_formation.sh b/contributer_demo/demo2/coordination/formation_demo/my_run_formation.sh
new file mode 100644
index 0000000..c284794
--- /dev/null
+++ b/contributer_demo/demo2/coordination/formation_demo/my_run_formation.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+# -*- coding: UTF-8 -*-
+python my_leader.py $1 $2 & #第一架飞机是 引领,其余飞机是 跟随。$1是飞机类型如iris,$2是数量
+uav_num=1
+while(( $uav_num< $2 ))
+do
+ python my_follower.py $1 $uav_num $2&
+ let "uav_num++"
+done
diff --git a/contributer_demo/demo2/coordination/formation_demo/stop_formation.sh b/contributer_demo/demo2/coordination/formation_demo/stop_formation.sh
new file mode 100644
index 0000000..1898ec2
--- /dev/null
+++ b/contributer_demo/demo2/coordination/formation_demo/stop_formation.sh
@@ -0,0 +1,2 @@
+kill -9 $(ps -ef|grep follower.py|gawk '$0 !~/grep/ {print $2}' |tr -s '\n' ' ')
+kill -9 $(ps -ef|grep leader.py|gawk '$0 !~/grep/ {print $2}' |tr -s '\n' ' ')
diff --git a/contributer_demo/demo2/px4launch/multi_vehicle21.launch b/contributer_demo/demo2/px4launch/multi_vehicle21.launch
new file mode 100644
index 0000000..c567c0c
--- /dev/null
+++ b/contributer_demo/demo2/px4launch/multi_vehicle21.launch
@@ -0,0 +1,631 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/contributer_demo/demo2/px4launch/multi_vehicle34.launch b/contributer_demo/demo2/px4launch/multi_vehicle34.launch
new file mode 100644
index 0000000..b7fc42b
--- /dev/null
+++ b/contributer_demo/demo2/px4launch/multi_vehicle34.launch
@@ -0,0 +1,1008 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/contributer_demo/demo3/ACO/aco.py b/contributer_demo/demo3/ACO/aco.py
new file mode 100644
index 0000000..0dc95a0
--- /dev/null
+++ b/contributer_demo/demo3/ACO/aco.py
@@ -0,0 +1,164 @@
+import random
+import numpy as np
+import math
+import time
+import os
+from geographiclib.geodesic import Geodesic
+import math
+geod = Geodesic.WGS84
+
+# 计算方位角函数
+def azimuthAngle(pos):
+ if(pos[0] > 0 and pos[1] > 0):
+ angle = math.atan(pos[1] / pos[0])
+ elif(pos[0] > 0 and pos[1] < 0):
+ angle = math.atan(pos[1] / pos[0]) + 2 * math.pi
+ elif(pos[0] < 0 and pos[1] > 0):
+ angle = math.atan(pos[1] / pos[0]) + math.pi
+ elif(pos[0] < 0 and pos[1] < 0):
+ angle = math.atan(pos[1] / pos[0]) + math.pi
+
+ return (angle * 180 / math.pi)
+
+def angle_dis(pos):
+ angle = azimuthAngle(pos)
+ distance = math.sqrt(pow(pos[0],2)+pow(pos[1],2))
+ return angle, distance
+
+class ACO():
+ def __init__(self, vehicle_num, target_num,vehicle_speed, target, time_lim):
+ self.num_type_ant = vehicle_num
+ self.num_city = target_num+1 #number of cities
+ self.group = 200 # 200组蚂蚁,每组蚂蚁有6只
+ self.num_ant = self.group*self.num_type_ant #number of ants
+ self.ant_vel = vehicle_speed
+ self.cut_time = time_lim
+ self.oneee = np.zeros((4,1))
+ self.target = target
+ self.alpha = 1 #pheromone
+ self.beta = 2
+ self.k1 = 0.03
+ self.iter_max = 50
+ #matrix of the distances between cities
+ def distance_matrix(self):
+ dis_mat = []
+ for i in range(self.num_city):
+ dis_mat_each = []
+ for j in range(self.num_city):
+ dis = math.sqrt(pow(self.target[i][0]-self.target[j][0],2)+pow(self.target[i][1]-self.target[j][1],2))
+ dis_mat_each.append(dis)
+ dis_mat.append(dis_mat_each)
+ return dis_mat
+ def run(self):
+ print("ACO start, pid: %s" % os.getpid())
+ start_time = time.time()
+ #distances of nodes
+ dis_list = self.distance_matrix()
+ dis_mat = np.array(dis_list)
+ value_init = self.target[:,2].transpose()
+ delay_init = self.target[:,3].transpose()
+ pheromone_mat = np.ones((self.num_type_ant,self.num_city,self.num_city)) # 信息素矩阵6*31*31,6只蚂蚁在31*31条的路径上留下的信息素
+ #velocity of ants
+ path_new = [[0]for i in range (self.num_type_ant)]
+ count_iter = 0
+ while count_iter < self.iter_max:
+ path_sum = np.zeros((self.num_ant,1))
+ time_sum = np.zeros((self.num_ant,1))
+ value_sum = np.zeros((self.num_ant,1))
+ path_mat=[[0]for i in range (self.num_ant)]
+ value = np.zeros((self.group,1))
+ atten = np.ones((self.num_type_ant,1)) * 0.2
+ for ant in range(self.num_ant): # 对每只蚂蚁
+ ant_type = ant % self.num_type_ant
+ visit = 0 # 当前节点
+ if ant_type == 0:
+ unvisit_list=list(range(1,self.num_city))#have not visit
+ for j in range(1,self.num_city): # 行走的第几个城市
+ #choice of next city
+ trans_list=[]
+ tran_sum=0
+ trans=0
+ #if len(unvisit_list)==0:
+ #print('len(unvisit_list)==0')
+ for k in range(len(unvisit_list)): # 计算本组蚂蚁没走过的城市的启发式函数
+ trans +=np.power(pheromone_mat[ant_type][visit][unvisit_list[k]],self.alpha)*np.power(value_init[unvisit_list[k]]*self.ant_vel[ant_type]/(dis_mat[visit][unvisit_list[k]]*delay_init[unvisit_list[k]]),self.beta)
+ #trans +=np.power(pheromone_mat[ant_type][unvisit_list[k]],self.alpha)*np.power(0.05*value_init[unvisit_list[k]],self.beta)
+ trans_list.append(trans)
+ tran_sum = trans
+ rand = random.uniform(0,tran_sum)
+ for t in range(len(trans_list)): # 轮盘赌选择下一个点
+ if(rand <= trans_list[t]):
+ visit_next = unvisit_list[t]
+ break
+ else:
+ continue
+ path_mat[ant].append(visit_next) # 每只蚂蚁走过的路径
+ path_sum[ant] += dis_mat[path_mat[ant][j-1]][path_mat[ant][j]] # 每只蚂蚁走过的总路径长度
+ time_sum[ant] += path_sum[ant] / self.ant_vel[ant_type] + delay_init[visit_next] # 每只蚂蚁使用的时间
+ if time_sum[ant] > self.cut_time:
+ time_sum[ant]-=path_sum[ant] / self.ant_vel[ant_type] + delay_init[visit_next]
+ path_mat[ant].pop()
+ break
+ value_sum[ant] += value_init[visit_next] # 每只蚂蚁的value
+ unvisit_list.remove(visit_next)#update
+ visit = visit_next
+ if (ant_type) == self.num_type_ant-1:
+ small_group = int(ant/self.num_type_ant)
+ for k in range (self.num_type_ant):
+ value[small_group]+= value_sum[ant-k] # 每组蚂蚁的value
+ #iteration
+ if count_iter == 0:
+ value_new = max(value)
+ value = value.tolist()
+ for k in range (0,self.num_type_ant):
+ path_new[k] = path_mat[value.index(value_new)*self.num_type_ant+k] # 200组蚂蚁中value最大的蚂蚁的路径
+ path_new[k].remove(0) # 移除起点
+ else:
+ if max(value) > value_new:
+ value_new = max(value)
+ value = value.tolist()
+ for k in range (0,self.num_type_ant):
+ path_new[k] = path_mat[value.index(value_new)*self.num_type_ant+k]
+ path_new[k].remove(0)
+
+ #update pheromone
+ pheromone_change = np.zeros((self.num_type_ant,self.num_city,self.num_city))
+ for i in range(self.num_ant):
+ length = len(path_mat[i])
+ m = i%self.num_type_ant
+ n = int(i/self.num_type_ant)
+ for j in range(length-1):
+ pheromone_change[m][path_mat[i][j]][path_mat[i][j+1]]+= value_init[path_mat[i][j+1]]*self.ant_vel[m]/(dis_mat[path_mat[i][j]][path_mat[i][j+1]]*delay_init[path_mat[i][j+1]])
+ atten[m] += (value_sum[i]/(np.power((value_new-value[n]),4)+1))/self.group
+
+ for k in range (self.num_type_ant):
+ pheromone_mat[k]=(1-atten[k])*pheromone_mat[k]+pheromone_change[k]
+ count_iter += 1
+
+ print("ACO result:", path_new)
+ middle_point = [47.3978502, 8.5455944]
+ path_new_point = []
+ for z in range(len(path_new)):
+ path_new_point.append(self.target[path_new[z], 0:2])
+ print("ACO path points m: ", path_new_point)
+
+ path_ang_dis = []
+ log = []
+ for i in range(len(path_new_point)):
+ a_path_ang_dis = []
+ a_log = []
+ for j in range(len(path_new_point[i])):
+ angle, distance = angle_dis(path_new_point[i][j])
+ g = geod.Direct(middle_point[0], middle_point[1], angle, distance)
+ a_log.append([g['lat2'], g['lon2']])
+ a_path_ang_dis.append([angle, distance])
+ path_ang_dis.append(a_path_ang_dis)
+ log.append(a_log)
+
+ print("ACO angle and distance: ", path_ang_dis)
+
+ print("ACO log: ", log)
+ end_time = time.time()
+ print("ACO time:", end_time - start_time)
+ return path_new, end_time - start_time
+
diff --git a/contributer_demo/demo3/ACO/evaluate.py b/contributer_demo/demo3/ACO/evaluate.py
new file mode 100644
index 0000000..d029ce5
--- /dev/null
+++ b/contributer_demo/demo3/ACO/evaluate.py
@@ -0,0 +1,128 @@
+import numpy as np
+import matplotlib.pyplot as plt
+import random
+import pandas as pd
+import copy
+from aco import ACO
+from geographiclib.geodesic import Geodesic
+import math
+geod = Geodesic.WGS84
+
+class Env():
+ def __init__(self, vehicle_num, target_num, map_size, visualized=True, time_cost=None, repeat_cost=None):
+ self.vehicles_position = np.zeros(vehicle_num,dtype=np.int32) # 无人机位置
+ self.vehicles_speed = np.zeros(vehicle_num,dtype=np.int32) # 无人机速度
+ self.targets = np.zeros(shape=(target_num+1,4),dtype=np.int32) # 目标属性
+ if vehicle_num==6:
+ self.size='small'
+ self.map_size = map_size
+ self.speed_range = [10, 10, 10]
+ #self.time_lim = 1e6
+ self.time_lim = self.map_size / self.speed_range[1]
+ self.vehicles_lefttime = np.ones(vehicle_num,dtype=np.float32) * self.time_lim # 剩余的可用时间
+ self.distant_mat = np.zeros((target_num+1,target_num+1),dtype=np.float32)
+ self.total_reward = 0
+ self.reward = 0
+ self.visualized = visualized
+ self.time = 0
+ self.time_cost = time_cost
+ self.repeat_cost = repeat_cost
+ self.end = False
+ self.assignment = [[] for i in range(vehicle_num)] # 最终的分配路径
+ self.task_generator()
+
+ def task_generator(self):
+ for i in range(self.vehicles_speed.shape[0]): # 确定每个无人机的速度
+ choose = random.randint(0,2)
+ self.vehicles_speed[i] = self.speed_range[choose]
+ for i in range(self.targets.shape[0]-1): # 确定每个目标点的坐标位置和奖励、消耗值
+ self.targets[i+1,0] = random.randint(1,self.map_size) - 0.5*self.map_size # x position
+ self.targets[i+1,1] = random.randint(1,self.map_size) - 0.5*self.map_size # y position
+ self.targets[i+1,2] = random.randint(1,10) # reward
+ self.targets[i+1,3] = random.randint(5,10) # time consumption to finish the mission
+ for i in range(self.targets.shape[0]): # 计算距离矩阵
+ for j in range(self.targets.shape[0]):
+ self.distant_mat[i,j] = np.linalg.norm(self.targets[i,:2]-self.targets[j,:2])
+ self.targets_value = copy.deepcopy((self.targets[:,2]))
+
+ def run(self, assignment, algorithm, play, rond):
+ self.assignment = assignment
+ self.algorithm = algorithm
+ self.play = play
+ self.rond = rond
+ self.get_total_reward()
+ if self.visualized:
+ self.visualize()
+
+ def reset(self):
+ self.vehicles_position = np.zeros(self.vehicles_position.shape[0],dtype=np.int32)
+ self.vehicles_lefttime = np.ones(self.vehicles_position.shape[0],dtype=np.float32) * self.time_lim
+ self.targets[:,2] = self.targets_value
+ self.total_reward = 0
+ self.reward = 0
+ self.end = False
+
+ def get_total_reward(self):
+ for i in range(len(self.assignment)):
+ speed = self.vehicles_speed[i]
+ for j in range(len(self.assignment[i])):
+ position = self.targets[self.assignment[i][j],:4]
+ self.total_reward = self.total_reward + position[2]
+ if j == 0:
+ self.vehicles_lefttime[i] = self.vehicles_lefttime[i] - np.linalg.norm(position[:2]) / speed - position[3]
+ else:
+ self.vehicles_lefttime[i] = self.vehicles_lefttime[i] - np.linalg.norm(position[:2]-position_last[:2]) / speed - position[3]
+ position_last = position
+ if self.vehicles_lefttime[i] > self.time_lim:
+ self.end = True
+ break
+ if self.end:
+ self.total_reward = 0
+ break
+
+ def visualize(self):
+ if self.assignment == None:
+ plt.scatter(x=0,y=0,s=200,c='k')
+ plt.scatter(x=self.targets[1:,0],y=self.targets[1:,1],s=self.targets[1:,2]*10,c='r')
+ plt.title('Target distribution')
+ plt.savefig('task_pic/'+self.size+'/'+self.algorithm+ "-%d-%d.png" % (self.play,self.rond))
+ plt.cla()
+ else:
+ plt.title('Task assignment by '+self.algorithm +', total reward : '+str(self.total_reward))
+ plt.scatter(x=0,y=0,s=200,c='k')
+ plt.scatter(x=self.targets[1:,0],y=self.targets[1:,1],s=self.targets[1:,2]*10,c='r')
+ for i in range(len(self.assignment)):
+ trajectory = np.array([[0,0,20]])
+ for j in range(len(self.assignment[i])):
+ position = self.targets[self.assignment[i][j],:3]
+ trajectory = np.insert(trajectory,j+1,values=position,axis=0)
+ plt.scatter(x=trajectory[1:,0],y=trajectory[1:,1],s=trajectory[1:,2]*10,c='b')
+ plt.plot(trajectory[:,0], trajectory[:,1])
+ plt.savefig('task_pic/'+self.size+'/'+self.algorithm+ "-%d-%d.png" % (self.play,self.rond))
+ plt.cla()
+
+def evaluate(vehicle_num, target_num, map_size):
+ if vehicle_num==6:
+ size='small'
+
+ re_aco=[[] for i in range(2)]
+ for i in range(1):
+ env = Env(vehicle_num,target_num,map_size,visualized=True)
+ for j in range(1):
+ aco = ACO(vehicle_num,target_num,env.vehicles_speed,env.targets,env.time_lim)
+ path_new, time = aco.run()
+ env.run(path_new,'ACO',i+1,j+1)
+ re_aco[i].append((env.total_reward,time))
+ env.reset()
+
+
+
+if __name__=='__main__':
+ '''
+ vehicle number: scalar
+ speeds of vehicles: array
+ target number: scalar
+ targets: array, the first line is depot, the first column is x position, the second column is y position, the third column is reward and the forth column is time consumption to finish the mission
+ time limit: scalar
+ '''
+ evaluate(6,30,1e3)
diff --git a/contributer_demo/demo3/Astar/Astar.py b/contributer_demo/demo3/Astar/Astar.py
new file mode 100644
index 0000000..31a6ba3
--- /dev/null
+++ b/contributer_demo/demo3/Astar/Astar.py
@@ -0,0 +1,248 @@
+# -*- coding: utf-8 -*-
+import numpy as np
+import matplotlib.pyplot as plt
+import collections
+import heapq
+import itertools
+import time
+from xlrd import open_workbook
+import matplotlib.pyplot as plt
+plt.rcParams['font.family'] = "kaiti"
+import mpl_toolkits.mplot3d
+from mpl_toolkits.mplot3d import Axes3D
+
+def getDist(pos1, pos2):
+ return np.sqrt(sum([(pos1[0] - pos2[0]) ** 2, (pos1[1] - pos2[1]) ** 2, (pos1[2] - pos2[2]) ** 2]))
+
+def heuristic_fun(initparams, k, t):
+ distance = getDist(k, t)
+ need_full_point = distance / 100 * 4 / 4
+ need_comfort_point = distance / 100 * 4 / 4
+
+ return need_comfort_point + need_full_point
+
+def draw_path(sheet, path):
+ x = sheet.col_values(1)[1:]
+ y = sheet.col_values(2)[1:]
+ z = sheet.col_values(3)[1:]
+ list_length = len(sheet.col_values(4)[1:])
+ food_index = [i for i in range(list_length) if sheet.col_values(4)[1:][i] == 1]
+ fire_index = [i for i in range(list_length) if sheet.col_values(4)[1:][i] == 0]
+ fig = plt.figure(figsize=(10,10))
+ ax = fig.add_subplot(projection = '3d')
+ for i in range(list_length):
+ if i in food_index:
+ ax.scatter(x[i], y[i], z[i], s=10, c='k', marker='.')
+ else:
+ ax.scatter(x[i], y[i], z[i], s=10, c='r', marker='.')
+ ax.set_title('规划路径结果')
+ ax.set_xlabel('x')
+ ax.set_ylabel('y')
+ ax.set_zlabel('z')
+ path = np.array(path)
+ ax.plot3D(path[:, 0].tolist(), path[:, 1].tolist(), path[:, 2].tolist(), 'blue')
+ plt.show()
+
+class MinheapPQ:
+ '''
+ 堆排序返回代价最小的可行点
+ 已封装好,使用put向堆加入可行点,使用get获取代价值最小的可行点
+ '''
+ def __init__(self):
+ self.pq = []
+ self.nodes = set()
+ self.entry_finder = {}
+ self.counter = itertools.count()
+ self.REMOVED = ''
+
+ def put(self, item, priority):
+ if item in self.entry_finder:
+ self.check_remove(item)
+ count = next(self.counter)
+ entry = [priority, count, item]
+ self.entry_finder[item] = entry
+ heapq.heappush(self.pq, entry)
+ self.nodes.add(item)
+
+ def check_remove(self, item):
+ if item not in self.entry_finder:
+ return
+ entry = self.entry_finder.pop(item)
+ entry[-1] = self.REMOVED
+ self.nodes.remove(item)
+
+ def get(self):
+ while self.pq:
+ priority, count, item = heapq.heappop(self.pq)
+ if item is not self.REMOVED:
+ del self.entry_finder[item]
+ self.nodes.remove(item)
+ return item
+ raise KeyError('pop from an empty priority queue')
+
+ def top_key(self):
+ return self.pq[0][0]
+
+ def enumerate(self):
+ return self.pq
+
+ def allnodes(self):
+ return self.nodes
+
+class Weighted_A_star(object):
+ def __init__(self):
+ self.start, self.goal = tuple(np.array([0, 500, 500])), tuple(np.array([1000, 555.67, 442.022]))
+ self.g = {self.start:-20,self.goal:np.inf} # 记录从起点到各个点的g,g值是固定的,当通过另一个点能有一个更小的g时改变
+ self.Parent = {self.start:self.start}
+ self.CLOSED = set()
+ self.Path = []
+ self.OPEN = MinheapPQ() # 存储节点及其代价
+ self.full = {self.start:10}
+ self.comfort = {self.start:10}
+ self.OPEN.put(self.start, self.g[self.start] + heuristic_fun(self, self.start, self.goal)) # item, priority = g + h
+ self.lastpoint = self.start
+ self.lastg = {}
+ self.pathparent = {}
+
+ def run(self):
+ xt = self.goal
+ xi = self.start
+ last_xi = xi
+ ban_xi = {}
+ flag = 0
+ while(1): # 当没有到达终点时循环
+ # 找到一个有可行食物点、篝火点的节点作为当前点
+ xi = self.OPEN.get()
+ distance = getDist(xi, self.Parent[xi])
+ full_change = (np.sign(xi[2] - self.Parent[xi][2]) + 5) * distance / 100
+ reachable_full, reachable_comfort = self.reachable_point(xi)
+
+ while((self.full[xi] > self.comfort[xi] and len(reachable_comfort) < 2 and xi[0] < 300) \
+ or (self.full[xi] <= self.comfort[xi] and len(reachable_full) < 2 and xi[0] < 300) \
+ or (self.full[xi] > self.comfort[xi] and len(reachable_comfort) < 2 and xi[0] < 300) \
+ or (self.full[xi] <= self.comfort[xi] and len(reachable_full) < 2 and xi[0] < 300) \
+ or(self.full[xi] > self.comfort[xi] and len(reachable_comfort) < 1 and xi[0] > 300) \
+ or(self.full[xi] <= self.comfort[xi] and len(reachable_full) < 1 and xi[0] > 300) \
+ or (xi in self.CLOSED) or xi[0] == 397.14 \
+ or xi[0] == 604.287 or xi[0] == 632.907 or (xi[0] == 686.951 and self.Parent[xi][0] == 594.039)):
+ ban_xi[xi] = self.g[xi] + heuristic_fun(self, xi, self.goal)
+ xi = self.OPEN.get()
+ distance = getDist(xi, self.Parent[xi])
+ full_change = (np.sign(xi[2] - self.Parent[xi][2]) + 5) * distance / 100
+ reachable_full, reachable_comfort = self.reachable_point(xi)
+
+ # 对当前点的后续处理
+ print(xi, self.Parent[xi], self.full[xi], self.comfort[xi], len(reachable_full), len(reachable_comfort))
+ self.pathparent[xi] = self.Parent[xi]
+ self.CLOSED.add(xi)
+ for xz in ban_xi:
+ self.OPEN.put(xz, ban_xi[xz])
+ ban_xi = {}
+ if(self.goal in reachable_full or self.goal in reachable_comfort):
+ self.Parent[self.goal] = xi
+ self.pathparent[self.goal] = xi
+ break
+
+
+ if(int(100000 * self.full[xi]) > int(100000 * self.comfort[xi])):
+ self.process_child(xi, reachable_comfort, False)
+ if(int(100000 * self.full[xi]) < int(100000 * self.comfort[xi])):
+ self.process_child(xi, reachable_full, True)
+ if(int(100000 * self.full[xi]) == int(100000 * self.comfort[xi])):
+ self.process_child(xi, reachable_full, True)
+ self.process_child(xi, reachable_comfort, False)
+
+ last_xi = xi
+ flag += 1
+
+ self.lastpoint = xi
+ self.Path = self.path()
+ draw_path(sheet, self.Path)
+
+
+ def process_child(self, xi, points, isfull):
+ # 对当前点后继可行节点的处理
+ for xj in list(points.keys()):
+ if xj not in self.g:
+ self.g[xj] = np.inf
+ distance = getDist(xi, xj)
+
+ if isfull:
+ self.full[xj] = self.full[xi] + points[xj] - (np.sign(xj[2] - xi[2]) + 5) * distance / 100
+ self.comfort[xj] = self.comfort[xi] - (np.sign(xj[2] - xi[2]) + 5) * distance / 100
+ else:
+ self.full[xj] = self.full[xi] - (np.sign(xj[2] - xi[2]) + 5) * distance / 100
+ self.comfort[xj] = self.comfort[xi] + points[xj] - (np.sign(xj[2] - xi[2]) + 5) * distance / 100
+
+ a = self.g[xi] + 1 - self.full[xj] - self.comfort[xj]
+ self.lastg[xj] = self.g[xj]
+ self.g[xj] = a
+ self.Parent[xj] = xi
+ self.OPEN.put(xj, a + heuristic_fun(self, xj, self.goal))
+
+ def path(self):
+ path = []
+ x = self.lastpoint
+ path.append([1000, 555.67, 442.022])
+ i = 1
+ start = self.start
+ while x != start:
+ path.append(list(x))
+ x = self.pathparent[x]
+ i += 1
+ path.append([0, 500, 500])
+ print(path)
+ print(i + 1)
+ return path
+
+ def reachable_point(self, xi):
+ # 输入:当前点坐标
+ # 返回:可行食物点坐标及补充量,可行篝火点坐标及补充量
+ fulldown = (self.full[xi] + 5) / 4 * 100
+ comfortdown = (self.comfort[xi] + 5) / 4 * 100
+ fullup = (self.full[xi] + 5) / 6 * 100
+ comfortup = (self.comfort[xi] + 5) / 6 * 100
+
+ condition = (content[:, 1] <= xi[0] + fulldown) & (content[:, 1] > xi[0] - fulldown) &\
+ (content[:, 2] <= xi[1] + fulldown) & (content[:, 2] >= xi[1] - fulldown) &\
+ (content[:, 3] >= xi[2] - fulldown) & (content[:, 3] <= xi[2] + fullup) &\
+ (content[:, 1] <= xi[0] + comfortdown) & (content[:, 1] > xi[0] - comfortdown) &\
+ (content[:, 2] <= xi[1] + comfortdown) & (content[:, 2] >= xi[1] - comfortdown) &\
+ (content[:, 3] >= xi[2] - comfortdown) & (content[:, 3] <= xi[2] + comfortup) & (content[:, 1] != xi[0])
+ full_condition = condition & (content[:, 4] == 1)
+ comfort_condition = condition & (content[:, 4] == 0)
+
+ reachable_full = dict(zip(list(map(tuple, content[full_condition][:, 1:4])), content[full_condition][:, -1]))
+ reachable_comfort = dict(zip(list(map(tuple, content[comfort_condition][:, 1:4])), content[comfort_condition][:, -1]))
+
+ for xj in list(reachable_full.keys()):
+ distance = getDist(xi, xj)
+ xj_full = self.full[xi] - (np.sign(xj[2] - xi[2]) + 5) * distance / 100
+ xj_comfort = self.comfort[xi] - (np.sign(xj[2] - xi[2]) + 5) * distance / 100
+ if xj == (1000, 555.67, 442.022) and (xj_full <-3 or xj_comfort < -3):
+ del reachable_full[xj]
+ elif(xj_full < -5 or xj_comfort < -5):
+ del reachable_full[xj]
+ for xj in list(reachable_comfort.keys()):
+ distance = getDist(xi, xj)
+ xj_full = self.full[xi] - (np.sign(xj[2] - xi[2]) + 5) * distance / 100
+ xj_comfort = self.comfort[xi] - (np.sign(xj[2] - xi[2]) + 5) * distance / 100
+ if xj == (1000, 555.67, 442.022) and (xj_full <-3 or xj_comfort < -3):
+ del reachable_comfort[xj]
+ elif(xj_full < -5 or xj_comfort < -5):
+ del reachable_comfort[xj]
+
+ return reachable_full, reachable_comfort
+
+
+if __name__ == '__main__':
+
+ workbook = open_workbook(r'附件.xlsx')
+ sheet = workbook.sheet_by_index(0)
+ content = np.array([sheet.row_values(i) for i in range(2, 589)])
+
+ Astar = Weighted_A_star()
+ sta = time.time()
+ path = Astar.run()
+ print(time.time() - sta)
+ draw_path(sheet, path)
diff --git a/contributer_demo/demo3/Astar/judge.py b/contributer_demo/demo3/Astar/judge.py
new file mode 100644
index 0000000..5f0bd93
--- /dev/null
+++ b/contributer_demo/demo3/Astar/judge.py
@@ -0,0 +1,108 @@
+from xlrd import open_workbook
+import numpy as np
+import copy
+
+def getDist(pos1, pos2):
+ return np.sqrt(sum([(pos1[0] - pos2[0]) ** 2, (pos1[1] - pos2[1]) ** 2, (pos1[2] - pos2[2]) ** 2]))
+
+def judge_path(path):
+ full = 10
+ comfort = 10
+ for i in range(1, len(path)):
+ distance = getDist(path[i], path[i - 1])
+ full = full - (np.sign(path[i][2] - path[i-1][2]) + 5) * distance / 100
+ comfort = comfort - (np.sign(path[i][2] - path[i-1][2]) + 5) * distance / 100
+ if(full <= -5 or comfort <= -5):
+ return 0
+ if(content[np.where(content[:, 1] == path[i][0]), 4] == 0):
+ comfort = comfort + content[np.where(content[:, 1] == path[i][0]), 5]
+ else:
+ full = full + content[np.where(content[:, 1] == path[i][0]), 5]
+ if(full > -3 and comfort > -3):
+ if(len(path) == 22):
+ if(path not in all_paths):
+ all_paths.append(path)
+ return 1
+ else:
+ return 0
+
+
+def compute(all_paths):
+ for w in range(len(all_paths)):
+
+ thispath = all_paths[w]
+ print('**********************************************')
+ print(len(thispath))
+ print(thispath)
+ path = thispath
+
+ full = 10
+ comfort = 10
+ for i in range(1, len(thispath)):
+ distance = getDist(path[i], path[i - 1])
+ full = full - (np.sign(path[i][2] - path[i-1][2]) + 5) * distance / 100
+ comfort = comfort - (np.sign(path[i][2] - path[i-1][2]) + 5) * distance / 100
+ print(full, comfort)
+ if(content[np.where(content[:, 1] == path[i][0]), 4] == 0):
+ comfort = comfort + content[np.where(content[:, 1] == path[i][0]), 5]
+ else:
+ full = full + content[np.where(content[:, 1] == path[i][0]), 5]
+
+ print(full, comfort)
+
+
+if __name__ == '__main__':
+
+ all_paths = []
+ workbook = open_workbook(r'附件.xlsx')
+ sheet = workbook.sheet_by_index(0)
+ content = np.array([sheet.row_values(i) for i in range(1, 589)])
+
+ path = [[0, 500, 500], [49.2701, 501.378, 474.378], [66.4539, 493.45, 485.579], [205.93, 530.015, 462.304], [325.373, 562.813, 450.432], [341.06, 554.258, 440.06], [396.166, 557.686, 463.285], [414.847, 550.557, 458.839], [432.744, 544.693, 464.194], [466.047, 540.082, 447.639], [497.857, 539.374, 473.068], [518.037, 544.067, 478.518], [594.039, 532.547, 476.9], [649.996, 543.743, 471.353], [668.799, 533.409, 475.24], [686.951, 534.936, 468.021], [703.063, 520.512, 467.263], [739.278, 513.132, 452.663], [758.889, 512.304, 450.352], [803.157, 544.765, 446.707], [866.403, 557.739, 448.524], [904.524, 552.094, 445.804], [965.271, 559.438, 441.67], [979.678, 552.128, 452.517], [1000, 555.67, 442.022]]
+ for k in range(0, len(path) - 2):
+ index1 = int(np.where(content[:, 1] == path[k][0])[0]) + 1
+ index2 = int(np.where(content[:, 1] == path[k + 2][0])[0])
+ change_nodes = content[index1:index2, 1:4].tolist()
+ for j in range(len(change_nodes)):
+ path_copy1 = path.copy()
+ path_copy1[k+1] = change_nodes[j]
+ flag = judge_path(path_copy1)
+ if(flag == 0):
+ continue
+
+ for z in range(1, len(path_copy1) - 1):
+ pathj = path_copy1.copy()
+ del pathj[z]
+ flag = judge_path(pathj)
+ if(flag == 0):
+ continue
+
+ for a in range(1, len(pathj) - 1):
+ patha = pathj.copy()
+ del patha[a]
+ flag = judge_path(patha)
+ if(flag == 0):
+ continue
+
+ for b in range(1, len(patha) - 1):
+ pathb = patha.copy()
+ del pathb[b]
+ judge_path(pathb)
+ if(flag == 0):
+ continue
+
+ print('************************************************************')
+ for i in all_paths:
+ print(i)
+ print(len(all_paths))
+ compute(all_paths)
+
+
+
+
+
+
+
+
+
+
diff --git a/coordination/formation_demo/run_formation.sh b/coordination/formation_demo/run_formation.sh
index d276989..4365866 100755
--- a/coordination/formation_demo/run_formation.sh
+++ b/coordination/formation_demo/run_formation.sh
@@ -3,6 +3,6 @@ python2.7 leader.py $1 $2 &
uav_num=1
while(( $uav_num< $2 ))
do
- python2.7 follower_consensus.py $1 $uav_num $2&
+ python2.7 follower.py $1 $uav_num $2&
let "uav_num++"
done