From ea7942b131b5e526d275ea68764614ff6228f5b7 Mon Sep 17 00:00:00 2001
From: Daniel Christoph <daniel.christoph@informatik.hu-berlin.de>
Date: Sat, 14 Dec 2019 17:31:21 +0100
Subject: [PATCH] Update Simulation/WorldMaker/Main.java

---
 Simulation/WorldMaker/Main.java | 180 ++++++++++++++++++++++++++++++++
 1 file changed, 180 insertions(+)
 create mode 100644 Simulation/WorldMaker/Main.java

diff --git a/Simulation/WorldMaker/Main.java b/Simulation/WorldMaker/Main.java
new file mode 100644
index 0000000..43b6f24
--- /dev/null
+++ b/Simulation/WorldMaker/Main.java
@@ -0,0 +1,180 @@
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+
+public class Main {
+
+    public static int id = 1;
+
+    public static ArrayList<String> obj = new ArrayList<>();
+
+    public static void boxSlec(String posx, String posy, String len, String wid, String high){
+        String box = "     <model name='unit_box_"+ id + "'>\n" +
+                "      <pose frame=''>" + posx + " " + posy + " 0 0 0 0</pose>\n" +
+                "      <link name='link'>\n" +
+                "        <inertial>\n" +
+                "          <mass>1</mass>\n" +
+                "          <inertia>\n" +
+                "            <ixx>0.166667</ixx>\n" +
+                "            <ixy>0</ixy>\n" +
+                "            <ixz>0</ixz>\n" +
+                "            <iyy>0.166667</iyy>\n" +
+                "            <iyz>0</iyz>\n" +
+                "            <izz>0.166667</izz>\n" +
+                "          </inertia>\n" +
+                "        </inertial>\n" +
+                "        <collision name='collision'>\n" +
+                "          <geometry>\n" +
+                "            <box>\n" +
+                "              <size>" + len + " " + wid + " " + high + "</size>\n" +
+                "            </box>\n" +
+                "          </geometry>\n" +
+                "          <max_contacts>10</max_contacts>\n" +
+                "          <surface>\n" +
+                "            <contact>\n" +
+                "              <ode/>\n" +
+                "            </contact>\n" +
+                "            <bounce/>\n" +
+                "            <friction>\n" +
+                "              <torsional>\n" +
+                "                <ode/>\n" +
+                "              </torsional>\n" +
+                "              <ode/>\n" +
+                "            </friction>\n" +
+                "          </surface>\n" +
+                "        </collision>\n" +
+                "        <visual name='visual'>\n" +
+                "          <geometry>\n" +
+                "            <box>\n" +
+                "              <size>" + len + " " + wid + " " + high + "</size>\n" +
+                "            </box>\n" +
+                "          </geometry>\n" +
+                "          <material>\n" +
+                "            <script>\n" +
+                "              <name>Gazebo/Grey</name>\n" +
+                "              <uri>file://media/materials/scripts/gazebo.material</uri>\n" +
+                "            </script>\n" +
+                "          </material>\n" +
+                "        </visual>\n" +
+                "        <self_collide>0</self_collide>\n" +
+                "        <enable_wind>0</enable_wind>\n" +
+                "        <kinematic>0</kinematic>\n" +
+                "      </link>\n" +
+                "    </model>";
+        obj.add(box);
+        id = id +1;
+    }
+    public static void zylSelec(String posx, String posy, String rad, String len){
+        String zyl = "    <model name=\"obstacle_" + id + "\">\n" +
+                "      <pose>" + posx + " " + posy + " 0 0 0 0</pose>\n" +
+                "      <link name=\"link\">\n" +
+                "        <collision name=\"collision\">\n" +
+                "          <geometry>\n" +
+                "            <cylinder>\n" +
+                "              <radius>"+ rad + "</radius>\n" +
+                "              <length>"+ len +"</length>\n" +
+                "            </cylinder>\n" +
+                "          </geometry>\n" +
+                "        </collision>\n" +
+                "\n" +
+                "        <visual name=\"visual\">\n" +
+                "          <geometry>\n" +
+                "            <cylinder>\n" +
+                "              <radius>" + rad +"</radius>\n" +
+                "              <length>" + len + "</length>\n" +
+                "            </cylinder>\n" +
+                "          </geometry>\n" +
+                "        </visual>\n" +
+                "      </link>\n" +
+                "    </model>" + "\n";
+        obj.add(zyl);
+        id = id +1;
+    }
+    public static void main(String[] args) {
+        obj.add("<sdf version='1.4'>\n" +
+                "  <world name='default'>\n" +
+                "   \n" +
+                "   <!-- A global light source -->\n" +
+                "    <include>\n" +
+                "      <uri>model://sun</uri>\n" +
+                "    </include>\n" +
+                "\n" +
+                "    <!-- A ground plane -->\n" +
+                "    <include>\n" +
+                "      <uri>model://ground_plane</uri>\n" +
+                "    </include>\n" +
+                "\n" +
+                "    <physics type=\"ode\">\n" +
+                "      <real_time_update_rate>1000.0</real_time_update_rate>\n" +
+                "      <max_step_size>0.001</max_step_size>\n" +
+                "      <real_time_factor>1</real_time_factor>\n" +
+                "      <ode>\n" +
+                "        <solver>\n" +
+                "          <type>quick</type>\n" +
+                "          <iters>150</iters>\n" +
+                "          <precon_iters>0</precon_iters>\n" +
+                "          <sor>1.400000</sor>\n" +
+                "          <use_dynamic_moi_rescaling>1</use_dynamic_moi_rescaling>\n" +
+                "        </solver>\n" +
+                "        <constraints>\n" +
+                "          <cfm>0.00001</cfm>\n" +
+                "          <erp>0.2</erp>\n" +
+                "          <contact_max_correcting_vel>2000.000000</contact_max_correcting_vel>\n" +
+                "          <contact_surface_layer>0.01000</contact_surface_layer>\n" +
+                "        </constraints>\n" +
+                "      </ode>\n" +
+                "    </physics>\n" +
+                "      \n" +
+                "    <scene>\n" +
+                "      <ambient>0.4 0.4 0.4 1</ambient>\n" +
+                "      <background>0.7 0.7 0.7 1</background>\n" +
+                "      <shadows>true</shadows>\n" +
+                "    </scene>\n" +
+                "\n" +
+                "    <gui fullscreen='0'>\n" +
+                "      <camera name='user_camera'>\n" +
+                "        <pose>0.0 0.0 17.0 0 1.5708 0</pose>\n" +
+                "        <view_controller>orbit</view_controller>\n" +
+                "      </camera>\n" +
+                "    </gui>" + "\n");
+
+        File file = new File(args[0]);
+        try {
+            if (file.createNewFile())
+            {
+                System.out.println("File is created!");
+            } else {
+                System.out.println("File overwrite!");
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        for(int i = 1; i < args.length-1; ) {
+            if ((args[i].compareTo("zyl") == 0)) {
+                zylSelec(args[i+1], args[i+2], args[i+3], args[i+4]);
+                i=i+5;
+            }
+            if ((args[i].compareTo("box") == 0)) {
+                boxSlec(args[i+1], args[i+2], args[i+3], args[i+4], args[i+5]);
+                i =i+6;
+            }
+        }
+        obj.add("  </world>\n" +
+                "</sdf>");
+        FileWriter writer = null;
+        try {
+            writer = new FileWriter(file);
+
+            for (int i = 0;i<obj.size();i++){
+                writer.write(obj.get(i));
+                writer.write("\n");
+            }
+
+            writer.close();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+}
-- 
GitLab