Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • trappejo/semesterprojekt-modulbasiertes-testen
1 result
Show changes
Showing
with 363 additions and 141 deletions
<?xml version="1.0" encoding="utf-8"?>
<sdf version="1.6">
<world name="default">
<!-- Ground Plane -->
<include>
<uri>model://ground_plane</uri>
</include>
<include>
<uri>model://sun</uri>
</include>
<model name="box_s_R_1">
<pose>1 3 0 0</pose>
<link name="link">
<collision name="collision">
<geometry>
<box>
<size>1 1 1</size>
</box>
</geometry>
</collision>
<visual name="visual">
<geometry>
<box>
<size>1 1 1</size>
</box>
</geometry>
</visual>
</link>
</model>
</world>
</sdf>
\ No newline at end of file
......@@ -18,8 +18,11 @@ Launch der Notbremse
location_monitor Laufen lassen
~/catkin_ws$ source devel/setup.bash
~/catkin_ws/src/location_monitor/logs$ rosrun location_monitor location_monitor_node.py 0.05(Bot Radius) 0.05(Safty Dist) 2.0(X Ziellienie) 15.0(timeout in Sek)
~/catkin_ws/src/location_monitor/logs$ rosrun location_monitor location_monitorode.py 0.00(Bot Radius) 0.00(Distanz Zur Ecke) 00(Ausrichtungs Radius.) 0.00(Sicherheitsabstand) 0.0(X Ziellinie) 000.0(Timeout)
Distanz Zur Ecke. Waffle:0.07 Burger:0
Ausrichtungs Radius. Waffle:68 Burger:0
bot_listener node Laufen lassen
~/catkin_ws$ source devel/setup.bash
~/catkin_ws/src/location_monitor/logs$ rosrun location_monitor bot_listener.py
#!/usr/bin/env python
import rospy
import logging
import os
from std_msgs.msg import String
from datetime import datetime
from gazebo_msgs.srv import GetModelState
from gazebo_msgs.srv import GetWorldProperties
WriteFlag = 0
logtime = "bot_listener_log.txt"
f = open(logtime, "w+")
logger = logging.getLogger("EventLog")
logger.setLevel(logging.INFO)
def callback(data):
# create a file handler
handler = logging.FileHandler('bot_listener.log', mode='w')
handler.setLevel(logging.INFO)
# create a logging format
formatter = logging.Formatter('%(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
# add the file handler to the logger
logger.addHandler(handler)
def callback(data):
global logger
rospy.loginfo(data.data)
get_world_properties = rospy.ServiceProxy('/gazebo/get_world_properties', GetWorldProperties)
resp1 = get_world_properties()
f.write("[T:" + str(resp1.sim_time) + "] " + data.data + "\n")
logger.info("[T:" + str(resp1.sim_time) + "] " + data.data)
def listener():
rospy.init_node('listener', anonymous=True)
......
......@@ -5,8 +5,13 @@ import sys
import gc
import rospy
import re
import array
import array as arr
import numpy as np
import sys, traceback
import multiprocessing
import time
import logging
import os
from datetime import datetime
from geometry_msgs.msg import Quaternion
from tf.transformations import euler_from_quaternion, quaternion_from_euler
......@@ -14,23 +19,37 @@ from nav_msgs.msg import Odometry
from gazebo_msgs.srv import GetModelState
from gazebo_msgs.srv import GetWorldProperties
BotDist = float(sys.argv[1])#Erstes Argumnet
SafeDist = float(sys.argv[2])#Zweites argument
DestinationX = float(sys.argv[3])#Ziellinie
Timeout = float(sys.argv[4])#timeout
BotDist = float(sys.argv[1])#Abstand vom BotKoordinatenursprung zum Kollisions Rand
BotSides = float(sys.argv[2])#Distanz Zur Ecke. Waffle:0.07 Burger:0
BotSideRad = float(sys.argv[3])#Ausrichtungs Radius. Waffle:68 Burger:0
SafeDist = float(sys.argv[4])#Sicherheitsabstand
DestinationX = float(sys.argv[5])#Ziellinie
Timeout = float(sys.argv[6])#timeout
yawBot = 0.0
WriteFlag = 0
logtime = "location_monitor_log.txt"
f = open(logtime, "w+")
logger = logging.getLogger("EventLog")
logger.setLevel(logging.INFO)
# create a file handler
handler = logging.FileHandler('location_monitor.log', mode='w')
handler.setLevel(logging.INFO)
# create a logging format
formatter = logging.Formatter('%(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
# add the file handler to the logger
logger.addHandler(handler)
# y
# ^
# |
# | ------- Box muss im rechtem Winkel zur x-Achse sein!
# | | |
# | | |
# | -------
# | ------- <-Box Box muss im rechtem Winkel zur x-Achse sein!
# | | | 2 1 2 Kollisionspunkte des Bots falls BotSides != 0
# | | | \ | /
# | ------- U <-Bot
# |
# ---------------->x
......@@ -44,29 +63,29 @@ class Block:
class Detection:
_blockListDict = {}
def show_gazebo_models(self, botx, boty):
def show_gazebo_models(self, cordlist):
global Timeout
global DestinationX
global f
global WriteFlag
global logger
get_world_properties = rospy.ServiceProxy('/gazebo/get_world_properties', GetWorldProperties)
resp1 = get_world_properties()
if resp1.sim_time >= Timeout:
print("Simulation Timeout!")
rospy.loginfo("Simulation Timeout!")
if WriteFlag == 0:
WriteFlag = 1
f.write("[T:" + str(resp1.sim_time) + "] " + "Simulation Timeout!" + "\n")
f.close
logger.info("[T:" + str(resp1.sim_time) + "] " + "Simulation Timeout!")
os._exit(1)
if WriteFlag == 0:
f.write("[T:" + str(resp1.sim_time) + "] " + "Bot X: " + str(botx) + "\n")
f.write("[T:" + str(resp1.sim_time) + "] " + "Bot Y: " + str(boty) + "\n")
if botx >= DestinationX:
print("Bot reached Destination!")
logger.info("[T:" + str(resp1.sim_time) + "] " + "Bot X: " + str(cordlist[0]))
logger.info("[T:" + str(resp1.sim_time) + "] " + "Bot Y: " + str(cordlist[1]))
if cordlist[0] >= DestinationX and DestinationX != 0.0:
rospy.loginfo("Bot reached Destination!")
if WriteFlag == 0:
WriteFlag = 1
f.write("[T:" + str(resp1.sim_time) + "] " + "Bot reached Destination!" + "\n")
f.close
if botx > 0 and boty > 0:
logger.info("[T:" + str(resp1.sim_time) + "] " + "Bot reached Destination!")
os._exit(1)
if cordlist[0] > 0 and cordlist[1] > 0:
i = 0
for model in resp1.model_names:
if ("ball" in str(model)) or ("cylinder" in str(model)) or ("box" in str(model) or ("sphere" in str(model))):
......@@ -98,145 +117,106 @@ class Detection:
resp_coordinates = model_coordinates(blockName, block._relative_entity_name)
l_x = resp_coordinates.pose.position.x
l_y = resp_coordinates.pose.position.y
print(blockName)
print("X: " + str(l_x))
print("Y: " + str(l_y))
rospy.loginfo(blockName)
rospy.loginfo("X: " + str(l_x))
rospy.loginfo("Y: " + str(l_y))
if WriteFlag == 0:
f.write(str(blockName) + "\n")
f.write("[T:" + str(resp1.sim_time) + "] " + str(blockName) + " X: " + str(l_x) + "\n")
f.write("[T:" + str(resp1.sim_time) + "] " + str(blockName) + " Y: " + str(l_y) + "\n")
logger.info(str(blockName))
logger.info("[T:" + str(resp1.sim_time) + "] " + str(blockName) + " X: " + str(l_x))
logger.info("[T:" + str(resp1.sim_time) + "] " + str(blockName) + " Y: " + str(l_y))
if block._radius != 0:
if "box" in str(blockName):
box_orient_list = [resp_coordinates.pose.orientation.x,resp_coordinates.pose.orientation.y,resp_coordinates.pose.orientation.z,resp_coordinates.pose.orientation.w]
(roll, pitch, yaw) = euler_from_quaternion(box_orient_list)
yaw_degrees = yaw * 180.0 / math.pi
if yaw_degrees < 0:
yaw_degrees += 360.0
boxkdetection(float(block._radius), botx, boty, l_x, l_y, yaw_degrees, resp1.sim_time)
boxkdetection(float(block._radius), cordlist, l_x, l_y, yaw_degrees, resp1.sim_time)
else: #if "sphere" , "cylinder" , "ball" etc.
objectWithRadiusDetection(float(block._radius), botx, boty, l_x, l_y, str(resp1.sim_time))
objectWithRadiusDetection(float(block._radius), cordlist, l_x, l_y, str(resp1.sim_time))
else:
print("Dist: " + str(dist))
if WriteFlag == 0:
f.write("[T:" + str(resp1.sim_time) + "] " + "Dist: " + str(dist) + "\n")
logger.info("[T:" + str(resp1.sim_time) + "] " + "Can't detect " + blockName)
except rospy.ServiceException as e:
rospy.loginfo("Get Model State service call failed: {0}".format(e))
else:
rospy.loginfo("Bot out of tracking Range!((x,y)<0)")
if WriteFlag == 0:
f.write("[T:" + str(resp1.sim_time) + "] " + "Bot out of tracking Range!((x,y)<0)" + "\n")
f.close
logger.info("[T:" + str(resp1.sim_time) + "] " + "Bot out of tracking Range!((x,y)<0)")
def distance(x1, y1, x2, y2):
dist = math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2)
return dist
def objectWithRadiusDetection(radius, botx, boty, l_x, l_y, simtime):
def objectWithRadiusDetection(radius, cordlist, l_x, l_y, simtime):
global WriteFlag
global f
global logger
global SafeDist
dist = distance(botx, boty, l_x, l_y)
safedist = radius + SafeDist # Radius/Size + Bot front Rad + safe dist
print("Safedist: " + str(safedist))
if WriteFlag == 0:
f.write("Safedist.: " + str(safedist) + "\n")
print("Distance: " + str(dist))
if WriteFlag == 0:
f.write("[T:" + simtime + "] " + "Dist. To Collision Point: " + str(dist) + "\n")
if dist < safedist:
rospy.loginfo("Collision!")
if WriteFlag == 0:
f.write("[T:" + simtime + "] " + "Collision!")
f.close
WriteFlag = 1
rospy.loginfo("Safedist: " + str(safedist))
lenght = len(cordlist)-1
rospy.loginfo("Distance: " + str(distance(cordlist[0], cordlist[1], l_x, l_y)))
for i in range(lenght):
dist = distance(cordlist[i], cordlist[i+1], l_x, l_y)
if WriteFlag == 0:
logger.info("Safedist.: " + str(safedist))
logger.info("[T:" + simtime + "] " + "Dist. To Collision Point: " + str(dist))
if dist < safedist:
rospy.loginfo("Collision!")
if WriteFlag == 0:
logger.info("[T:" + simtime + "] " + "Collision!")
os._exit(1)
def boxkdetection(size, botx, boty, l_x, l_y, yaw_degrees, simtime):
global f
def boxkdetection(size, cordlist, l_x, l_y, yaw_degrees, simtime):
global WriteFlag
global SafeDist
if (size * 2.0) > 5.0:
print("Box to big, > 5m")
rospy.loginfo("Box to big, > 5m")
if WriteFlag == 0:
f.write("[T:" + str(simtime) + "] " + "Box Invalid (size > 5m)" + "\n")
f.close
logger.info("[T:" + str(simtime) + "] " + "Box Invalid (size > 5m)")
else:
# print("SIZEBOX" + str(size))
safedist = SafeDist
#print(str(safedist))
safedist = SafeDist
if WriteFlag == 0:
f.write("Safedist.: " + str(safedist) + "\n")
logger.info("Safedist.: " + str(safedist))
xR = l_x + size * math.cos(math.radians(yaw_degrees))
yL = l_y + size * math.sin(math.radians(yaw_degrees))
#XUr = xR * math.cos(math.radians(45)) - yL * math.sin(math.radians(45))
#yUr = xR * math.sin(math.radians(45)) + yL * math.cos(math.radians(45))
#dist1 = distance(botx, boty, XUr, yUr)
#XUl = xR * math.cos(math.radians(135)) - yL * math.sin(math.radians(135))
#yUl = xR * math.sin(math.radians(135)) + yL * math.cos(math.radians(135))
#dist2 = distance(botx, boty, XUl, yUl)
#XDl = xR * math.cos(math.radians(225)) - yL * math.sin(math.radians(225))
#yDl = xR * math.sin(math.radians(225)) + yL * math.cos(math.radians(225))
#dist3 = distance(botx, boty, XDl, yDl)
#XDr = xR * math.cos(math.radians(315)) - yL * math.sin(math.radians(315))
#yDr = xR * math.sin(math.radians(315)) + yL * math.cos(math.radians(315))
#dist4 = distance(botx, boty, XDr, yDr)
#print(str(xR) + " " + str(yL))#korrekt
lineA = ((botx, boty), (l_x, l_y))
lineB = ((l_x, l_y), (xR, yL))
angle = angle_between(lineA, lineB)
disangle = angle
angle1 = angle
if angle > 45:
disangle = 90 - angle;
#print("Angle: " + str(angle))#korrekt
dis = (size) / math.cos(math.radians(disangle))
# print("Dist from center do edge: " + str(dis))
#f dist1 < dist2 and dist1 < dist3 and dist1 < dist4:
# angle2 = angle
#if dist2 < dist1 and dist2 < dist3 and dist2 < dist4:
# angle2 = 180 - angle
#if dist3 < dist1 and dist3 < dist2 and dist3 < dist4:
# angle2 = 180 + angle
#if dist4 < dist1 and dist4 < dist2 and dist4 < dist3:
# angle2 = 360 - angle
if botx < l_x and boty > l_y:
angle1 = 180 - angle
if botx < l_x and boty < l_y:
angle1 = 180 + angle
if botx > l_x and boty < l_y:
angle1 = 360 - angle
#print("Angle1: " + str(angle2))
dynX = l_x + dis * math.cos(math.radians(angle1))
dynY = l_y + dis * math.sin(math.radians(angle1))
#dynX = l_x + dis * math.cos(math.radians(angle2))
#dynY = l_y + dis * math.sin(math.radians(angle2))
#print("DynX : " + str(dynX))
#print("DynY : " + str(dynY))
distult = distance(botx, boty, dynX, dynY)
if WriteFlag == 0:
f.write("[T:" + str(simtime) + "] " + "Dist to collision point: " + str(distult) + "\n")
print("Dist to collision point: " + str(distult))
if distult < safedist:
rospy.loginfo("Collision!")
if WriteFlag == 0:
f.write("[T:" + str(simtime) + "] " + "Collision!")
f.close
WriteFlag = 1
lenght = len(cordlist) - 1
for i in range(lenght):
lineA = ((cordlist[i], cordlist[i+1]), (l_x, l_y))
lineB = ((l_x, l_y), (xR, yL))
angle = angle_between(lineA, lineB)
disangle = angle
angle1 = angle
if angle > 45:
disangle = 90 - angle;
dis = (size) / math.cos(math.radians(disangle))
if cordlist[i] < l_x and cordlist[i+1] > l_y:
angle1 = 180 - angle
if cordlist[i] < l_x and cordlist[i+1] < l_y:
angle1 = 180 + angle
if cordlist[i] > l_x and cordlist[i+1] < l_y:
angle1 = 360 - angle
dynX = l_x + dis * math.cos(math.radians(angle1))
dynY = l_y + dis * math.sin(math.radians(angle1))
distult = distance(cordlist[i], cordlist[i+1], dynX, dynY)
if WriteFlag == 0:
logger.info("[T:" + str(simtime) + "] " + "Dist to collision point: " + str(distult))
rospy.loginfo("Dist to collision point: " + str(distult))
if distult < safedist:
rospy.loginfo("Collision!")
if WriteFlag == 0:
logger.info("[T:" + str(simtime) + "] " + "Collision!")
os._exit(1)
def slope(x1, y1, x2, y2): # Line slope given two points:
......@@ -265,25 +245,37 @@ def get_rotation (msg):
yaw_degrees = yaw * 180.0 /math.pi
if yaw_degrees <0:
yaw_degrees += 360.0
#print("Yaw:" + str(yaw_degrees))
#rospy.loginfo("Yaw:" + str(yaw_degrees))
yawBot = yaw_degrees
def callback(msg):
global BotDist
global yawBot
global BotSides
global BotSideRad
get_rotation(msg)
botx = msg.pose.pose.position.x
boty = msg.pose.pose.position.y
botx = botx + BotDist * math.cos(math.radians(yawBot))
boty = boty + BotDist * math.sin(math.radians(yawBot))
print("BotX: " + str(botx))
print("BotY: " + str(boty))
rospy.loginfo("BotX: " + str(botx))
rospy.loginfo("BotY: " + str(boty))
detect = Detection()
detect.show_gazebo_models(botx, boty)
cordlist = [botx,boty]
if BotSides !=0:
cordlist.append(botx + BotSides * math.cos(math.radians(yawBot+BotSideRad)))
cordlist.append(boty + BotSides * math.sin(math.radians(yawBot+BotSideRad)))
cordlist.append(botx + BotSides * math.cos(math.radians(yawBot-BotSideRad)))
cordlist.append(boty + BotSides * math.sin(math.radians(yawBot-BotSideRad)))
detect.show_gazebo_models(cordlist)
gc.collect()
def main():
rospy.init_node('location_monitor') #Node in gang bringen
try:
......
......@@ -116,7 +116,7 @@
</scan>
<range>
<min>0.120</min>
<max>3.5</max>
<max>16</max>
<resolution>0.015</resolution>
</range>
<noise>
......
<?xml version="1.0" ?>
<robot name="turtlebot3_burger" xmlns:xacro="http://ros.org/wiki/xacro">
<xacro:include filename="$(find turtlebot3_description)/urdf/common_properties.xacro"/>
<xacro:include filename="$(find turtlebot3_description)/urdf/turtlebot3_burger.gazebo.xacro"/>
<xacro:include filename="$(find sim)/bot.gazebo.xacro"/>
<link name="base_footprint"/>
......
<?xml version="1.0" ?>
<robot name="turtlebot3_waffle" xmlns:xacro="http://ros.org/wiki/xacro">
<xacro:include filename="$(find turtlebot3_description)/urdf/common_properties.xacro"/>
<xacro:include filename="$(find turtlebot3_description)/urdf/turtlebot3_waffle.gazebo.xacro"/>
<xacro:include filename="$(find sim)/bot.gazebo.xacro"/>
<xacro:property name="r200_cam_rgb_px" value="0.005"/>
<xacro:property name="r200_cam_rgb_py" value="0.018"/>
......
<?xml version="1.0" ?>
<robot name="turtlebot3_waffle_pi" xmlns:xacro="http://ros.org/wiki/xacro">
<xacro:include filename="$(find turtlebot3_description)/urdf/common_properties.xacro"/>
<xacro:include filename="$(find turtlebot3_description)/urdf/turtlebot3_waffle_pi.gazebo.xacro"/>
<xacro:include filename="$(find sim)/bot.gazebo.xacro"/>
<link name="base_footprint"/>
......
......@@ -39,7 +39,7 @@ namespace compiler
try
{
var rootNode = rootNodes[i];
var path = Path.Combine(targetDirectory, @$"{baseName}-{i}");
var path = Path.Combine(targetDirectory, @$"{baseName}/{i}");
Directory.CreateDirectory(path);
TestWriter.WriteAll(path, rootNode);
}
......
<?xml version="1.0" encoding="UTF-8"?>
<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_wSJZEBEkEeqcA7mMSE3b-A" name="Test1">
<packageImport xmi:type="uml:PackageImport" xmi:id="_wUOcsBEkEeqcA7mMSE3b-A">
<importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
</packageImport>
<packagedElement xmi:type="uml:Activity" xmi:id="_sz7wUBElEeqcA7mMSE3b-A" name="Activity" node="_7EGDQBElEeqcA7mMSE3b-A _8WVuQBElEeqcA7mMSE3b-A _8peKADhTEeqhK-Tr1AkfpA _PSC0ADz8EeqwwvtZSXxI_A _8Pbz0Dz9EeqwwvtZSXxI_A">
<ownedComment xmi:type="uml:Comment" xmi:id="_N2YasDbPEeqLi4nplbzrvQ" annotatedElement="_8WVuQBElEeqcA7mMSE3b-A">
<body>t=0</body>
</ownedComment>
<ownedComment xmi:type="uml:Comment" xmi:id="_5xeOgDz7EeqwwvtZSXxI_A" annotatedElement="_sz7wUBElEeqcA7mMSE3b-A">
<body>t=0</body>
</ownedComment>
<ownedComment xmi:type="uml:Comment" xmi:id="_XECJoDz8EeqwwvtZSXxI_A" annotatedElement="_PSC0ADz8EeqwwvtZSXxI_A">
<body>t >=30&#xD;
</body>
</ownedComment>
<edge xmi:type="uml:ControlFlow" xmi:id="_USsZsBEmEeqcA7mMSE3b-A" target="_8WVuQBElEeqcA7mMSE3b-A" source="_7EGDQBElEeqcA7mMSE3b-A"/>
<edge xmi:type="uml:ControlFlow" xmi:id="_2srn0Dz7EeqwwvtZSXxI_A" target="_8peKADhTEeqhK-Tr1AkfpA" source="_8WVuQBElEeqcA7mMSE3b-A"/>
<edge xmi:type="uml:ControlFlow" xmi:id="_Sb6vADz8EeqwwvtZSXxI_A" target="_PSC0ADz8EeqwwvtZSXxI_A" source="_8peKADhTEeqhK-Tr1AkfpA"/>
<edge xmi:type="uml:ControlFlow" xmi:id="_g_viwEUpEeq-Z_ECULnOOQ" target="_8Pbz0Dz9EeqwwvtZSXxI_A" source="_PSC0ADz8EeqwwvtZSXxI_A"/>
<node xmi:type="uml:InitialNode" xmi:id="_7EGDQBElEeqcA7mMSE3b-A" name="Start" outgoing="_USsZsBEmEeqcA7mMSE3b-A"/>
<node xmi:type="uml:OpaqueAction" xmi:id="_8WVuQBElEeqcA7mMSE3b-A" name="spawn: vehicle f(x=0, y=5)" incoming="_USsZsBEmEeqcA7mMSE3b-A" outgoing="_2srn0Dz7EeqwwvtZSXxI_A"/>
<node xmi:type="uml:OpaqueAction" xmi:id="_8peKADhTEeqhK-Tr1AkfpA" name="spawn: obstacle s= cylinder (x=5, y=5, r=0.1, h=1)" incoming="_2srn0Dz7EeqwwvtZSXxI_A" outgoing="_Sb6vADz8EeqwwvtZSXxI_A"/>
<node xmi:type="uml:OpaqueAction" xmi:id="_PSC0ADz8EeqwwvtZSXxI_A" name="constraint: distance(f, s) in [0.5, 2]" visibility="protected" incoming="_Sb6vADz8EeqwwvtZSXxI_A" outgoing="_g_viwEUpEeq-Z_ECULnOOQ"/>
<node xmi:type="uml:FlowFinalNode" xmi:id="_8Pbz0Dz9EeqwwvtZSXxI_A" name="Final_Node" incoming="_g_viwEUpEeq-Z_ECULnOOQ"/>
</packagedElement>
</uml:Model>
<?xml version="1.0" encoding="UTF-8"?>
<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_wSJZEBEkEeqcA7mMSE3b-A" name="Test13">
<packageImport xmi:type="uml:PackageImport" xmi:id="_wUOcsBEkEeqcA7mMSE3b-A">
<importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
</packageImport>
<packagedElement xmi:type="uml:Activity" xmi:id="_sz7wUBElEeqcA7mMSE3b-A" name="Activity" node="_7EGDQBElEeqcA7mMSE3b-A _8WVuQBElEeqcA7mMSE3b-A _8peKADhTEeqhK-Tr1AkfpA _PSC0ADz8EeqwwvtZSXxI_A _8Pbz0Dz9EeqwwvtZSXxI_A">
<ownedComment xmi:type="uml:Comment" xmi:id="_N2YasDbPEeqLi4nplbzrvQ" annotatedElement="_8WVuQBElEeqcA7mMSE3b-A">
<body>t=0</body>
</ownedComment>
<ownedComment xmi:type="uml:Comment" xmi:id="_5xeOgDz7EeqwwvtZSXxI_A" annotatedElement="_sz7wUBElEeqcA7mMSE3b-A">
<body>t=0</body>
</ownedComment>
<ownedComment xmi:type="uml:Comment" xmi:id="_XECJoDz8EeqwwvtZSXxI_A" annotatedElement="_PSC0ADz8EeqwwvtZSXxI_A">
<body>t >=30</body>
</ownedComment>
<edge xmi:type="uml:ControlFlow" xmi:id="_USsZsBEmEeqcA7mMSE3b-A" target="_8WVuQBElEeqcA7mMSE3b-A" source="_7EGDQBElEeqcA7mMSE3b-A"/>
<edge xmi:type="uml:ControlFlow" xmi:id="_2srn0Dz7EeqwwvtZSXxI_A" target="_8peKADhTEeqhK-Tr1AkfpA" source="_8WVuQBElEeqcA7mMSE3b-A"/>
<edge xmi:type="uml:ControlFlow" xmi:id="_Sb6vADz8EeqwwvtZSXxI_A" target="_PSC0ADz8EeqwwvtZSXxI_A" source="_8peKADhTEeqhK-Tr1AkfpA"/>
<edge xmi:type="uml:ControlFlow" xmi:id="_g_viwEUpEeq-Z_ECULnOOQ" target="_8Pbz0Dz9EeqwwvtZSXxI_A" source="_PSC0ADz8EeqwwvtZSXxI_A"/>
<node xmi:type="uml:InitialNode" xmi:id="_7EGDQBElEeqcA7mMSE3b-A" name="Start" outgoing="_USsZsBEmEeqcA7mMSE3b-A"/>
<node xmi:type="uml:OpaqueAction" xmi:id="_8WVuQBElEeqcA7mMSE3b-A" name="spawn: vehicle f(x=1, y=1)" incoming="_USsZsBEmEeqcA7mMSE3b-A" outgoing="_2srn0Dz7EeqwwvtZSXxI_A"/>
<node xmi:type="uml:OpaqueAction" xmi:id="_8peKADhTEeqhK-Tr1AkfpA" name="spawn: obstacle s= cylinder(x=1,y=5,r=1, h=0.1)" incoming="_2srn0Dz7EeqwwvtZSXxI_A" outgoing="_Sb6vADz8EeqwwvtZSXxI_A"/>
<node xmi:type="uml:OpaqueAction" xmi:id="_PSC0ADz8EeqwwvtZSXxI_A" name="constraint: distance(f, s) in [1, 2]" visibility="protected" incoming="_Sb6vADz8EeqwwvtZSXxI_A" outgoing="_g_viwEUpEeq-Z_ECULnOOQ"/>
<node xmi:type="uml:FlowFinalNode" xmi:id="_8Pbz0Dz9EeqwwvtZSXxI_A" name="Final_Node" incoming="_g_viwEUpEeq-Z_ECULnOOQ"/>
</packagedElement>
</uml:Model>
<?xml version="1.0" encoding="UTF-8"?>
<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_wSJZEBEkEeqcA7mMSE3b-A" name="Test14">
<packageImport xmi:type="uml:PackageImport" xmi:id="_wUOcsBEkEeqcA7mMSE3b-A">
<importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
</packageImport>
<packagedElement xmi:type="uml:Activity" xmi:id="_sz7wUBElEeqcA7mMSE3b-A" name="Activity" node="_7EGDQBElEeqcA7mMSE3b-A _8WVuQBElEeqcA7mMSE3b-A _8peKADhTEeqhK-Tr1AkfpA _PSC0ADz8EeqwwvtZSXxI_A _8Pbz0Dz9EeqwwvtZSXxI_A">
<ownedComment xmi:type="uml:Comment" xmi:id="_N2YasDbPEeqLi4nplbzrvQ" annotatedElement="_8WVuQBElEeqcA7mMSE3b-A">
<body>t=0</body>
</ownedComment>
<ownedComment xmi:type="uml:Comment" xmi:id="_5xeOgDz7EeqwwvtZSXxI_A" annotatedElement="_sz7wUBElEeqcA7mMSE3b-A">
<body>t=0</body>
</ownedComment>
<ownedComment xmi:type="uml:Comment" xmi:id="_XECJoDz8EeqwwvtZSXxI_A" annotatedElement="_PSC0ADz8EeqwwvtZSXxI_A">
<body>t >=30</body>
</ownedComment>
<edge xmi:type="uml:ControlFlow" xmi:id="_USsZsBEmEeqcA7mMSE3b-A" target="_8WVuQBElEeqcA7mMSE3b-A" source="_7EGDQBElEeqcA7mMSE3b-A"/>
<edge xmi:type="uml:ControlFlow" xmi:id="_2srn0Dz7EeqwwvtZSXxI_A" target="_8peKADhTEeqhK-Tr1AkfpA" source="_8WVuQBElEeqcA7mMSE3b-A"/>
<edge xmi:type="uml:ControlFlow" xmi:id="_Sb6vADz8EeqwwvtZSXxI_A" target="_PSC0ADz8EeqwwvtZSXxI_A" source="_8peKADhTEeqhK-Tr1AkfpA"/>
<edge xmi:type="uml:ControlFlow" xmi:id="_g_viwEUpEeq-Z_ECULnOOQ" target="_8Pbz0Dz9EeqwwvtZSXxI_A" source="_PSC0ADz8EeqwwvtZSXxI_A"/>
<node xmi:type="uml:InitialNode" xmi:id="_7EGDQBElEeqcA7mMSE3b-A" name="Start" outgoing="_USsZsBEmEeqcA7mMSE3b-A"/>
<node xmi:type="uml:OpaqueAction" xmi:id="_8WVuQBElEeqcA7mMSE3b-A" name="spawn: vehicle f(x=1, y=1)" incoming="_USsZsBEmEeqcA7mMSE3b-A" outgoing="_2srn0Dz7EeqwwvtZSXxI_A"/>
<node xmi:type="uml:OpaqueAction" xmi:id="_8peKADhTEeqhK-Tr1AkfpA" name="spawn: obstacle s= cylinder(x=1,y=5,r=0.1, h=0.1)" incoming="_2srn0Dz7EeqwwvtZSXxI_A" outgoing="_Sb6vADz8EeqwwvtZSXxI_A"/>
<node xmi:type="uml:OpaqueAction" xmi:id="_PSC0ADz8EeqwwvtZSXxI_A" name="constraint: distance(f, s) in [1, 2]" visibility="protected" incoming="_Sb6vADz8EeqwwvtZSXxI_A" outgoing="_g_viwEUpEeq-Z_ECULnOOQ"/>
<node xmi:type="uml:FlowFinalNode" xmi:id="_8Pbz0Dz9EeqwwvtZSXxI_A" name="Final_Node" incoming="_g_viwEUpEeq-Z_ECULnOOQ"/>
</packagedElement>
</uml:Model>
<?xml version="1.0" encoding="UTF-8"?>
<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_wSJZEBEkEeqcA7mMSE3b-A" name="Test15">
<packageImport xmi:type="uml:PackageImport" xmi:id="_wUOcsBEkEeqcA7mMSE3b-A">
<importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
</packageImport>
<packagedElement xmi:type="uml:Activity" xmi:id="_sz7wUBElEeqcA7mMSE3b-A" name="Activity" node="_7EGDQBElEeqcA7mMSE3b-A _8WVuQBElEeqcA7mMSE3b-A _8peKADhTEeqhK-Tr1AkfpA _PSC0ADz8EeqwwvtZSXxI_A _8Pbz0Dz9EeqwwvtZSXxI_A">
<ownedComment xmi:type="uml:Comment" xmi:id="_N2YasDbPEeqLi4nplbzrvQ" annotatedElement="_8WVuQBElEeqcA7mMSE3b-A">
<body>t=0</body>
</ownedComment>
<ownedComment xmi:type="uml:Comment" xmi:id="_5xeOgDz7EeqwwvtZSXxI_A" annotatedElement="_sz7wUBElEeqcA7mMSE3b-A">
<body>t=0</body>
</ownedComment>
<ownedComment xmi:type="uml:Comment" xmi:id="_XECJoDz8EeqwwvtZSXxI_A" annotatedElement="_PSC0ADz8EeqwwvtZSXxI_A">
<body>t >=30</body>
</ownedComment>
<edge xmi:type="uml:ControlFlow" xmi:id="_USsZsBEmEeqcA7mMSE3b-A" target="_8WVuQBElEeqcA7mMSE3b-A" source="_7EGDQBElEeqcA7mMSE3b-A"/>
<edge xmi:type="uml:ControlFlow" xmi:id="_2srn0Dz7EeqwwvtZSXxI_A" target="_8peKADhTEeqhK-Tr1AkfpA" source="_8WVuQBElEeqcA7mMSE3b-A"/>
<edge xmi:type="uml:ControlFlow" xmi:id="_Sb6vADz8EeqwwvtZSXxI_A" target="_PSC0ADz8EeqwwvtZSXxI_A" source="_8peKADhTEeqhK-Tr1AkfpA"/>
<edge xmi:type="uml:ControlFlow" xmi:id="_g_viwEUpEeq-Z_ECULnOOQ" target="_8Pbz0Dz9EeqwwvtZSXxI_A" source="_PSC0ADz8EeqwwvtZSXxI_A"/>
<node xmi:type="uml:InitialNode" xmi:id="_7EGDQBElEeqcA7mMSE3b-A" name="Start" outgoing="_USsZsBEmEeqcA7mMSE3b-A"/>
<node xmi:type="uml:OpaqueAction" xmi:id="_8WVuQBElEeqcA7mMSE3b-A" name="spawn: vehicle f(x=1, y=1)" incoming="_USsZsBEmEeqcA7mMSE3b-A" outgoing="_2srn0Dz7EeqwwvtZSXxI_A"/>
<node xmi:type="uml:OpaqueAction" xmi:id="_8peKADhTEeqhK-Tr1AkfpA" name="spawn: obstacle s= cylinder(x=1,y=5,r=1, h=1)" incoming="_2srn0Dz7EeqwwvtZSXxI_A" outgoing="_Sb6vADz8EeqwwvtZSXxI_A"/>
<node xmi:type="uml:OpaqueAction" xmi:id="_PSC0ADz8EeqwwvtZSXxI_A" name="constraint: distance(f, s) in [1, 2]" visibility="protected" incoming="_Sb6vADz8EeqwwvtZSXxI_A" outgoing="_g_viwEUpEeq-Z_ECULnOOQ"/>
<node xmi:type="uml:FlowFinalNode" xmi:id="_8Pbz0Dz9EeqwwvtZSXxI_A" name="Final_Node" incoming="_g_viwEUpEeq-Z_ECULnOOQ"/>
</packagedElement>
</uml:Model>
<?xml version="1.0" encoding="UTF-8"?>
<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_wSJZEBEkEeqcA7mMSE3b-A" name="Test16">
<packageImport xmi:type="uml:PackageImport" xmi:id="_wUOcsBEkEeqcA7mMSE3b-A">
<importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
</packageImport>
<packagedElement xmi:type="uml:Activity" xmi:id="_sz7wUBElEeqcA7mMSE3b-A" name="Activity" node="_7EGDQBElEeqcA7mMSE3b-A _8WVuQBElEeqcA7mMSE3b-A _8peKADhTEeqhK-Tr1AkfpA _PSC0ADz8EeqwwvtZSXxI_A _8Pbz0Dz9EeqwwvtZSXxI_A">
<ownedComment xmi:type="uml:Comment" xmi:id="_N2YasDbPEeqLi4nplbzrvQ" annotatedElement="_8WVuQBElEeqcA7mMSE3b-A">
<body>t=0</body>
</ownedComment>
<ownedComment xmi:type="uml:Comment" xmi:id="_5xeOgDz7EeqwwvtZSXxI_A" annotatedElement="_sz7wUBElEeqcA7mMSE3b-A">
<body>t=0</body>
</ownedComment>
<ownedComment xmi:type="uml:Comment" xmi:id="_XECJoDz8EeqwwvtZSXxI_A" annotatedElement="_PSC0ADz8EeqwwvtZSXxI_A">
<body>t >=30</body>
</ownedComment>
<edge xmi:type="uml:ControlFlow" xmi:id="_USsZsBEmEeqcA7mMSE3b-A" target="_8WVuQBElEeqcA7mMSE3b-A" source="_7EGDQBElEeqcA7mMSE3b-A"/>
<edge xmi:type="uml:ControlFlow" xmi:id="_2srn0Dz7EeqwwvtZSXxI_A" target="_8peKADhTEeqhK-Tr1AkfpA" source="_8WVuQBElEeqcA7mMSE3b-A"/>
<edge xmi:type="uml:ControlFlow" xmi:id="_Sb6vADz8EeqwwvtZSXxI_A" target="_PSC0ADz8EeqwwvtZSXxI_A" source="_8peKADhTEeqhK-Tr1AkfpA"/>
<edge xmi:type="uml:ControlFlow" xmi:id="_g_viwEUpEeq-Z_ECULnOOQ" target="_8Pbz0Dz9EeqwwvtZSXxI_A" source="_PSC0ADz8EeqwwvtZSXxI_A"/>
<node xmi:type="uml:InitialNode" xmi:id="_7EGDQBElEeqcA7mMSE3b-A" name="Start" outgoing="_USsZsBEmEeqcA7mMSE3b-A"/>
<node xmi:type="uml:OpaqueAction" xmi:id="_8WVuQBElEeqcA7mMSE3b-A" name="spawn: vehicle f(x=1, y=1)" incoming="_USsZsBEmEeqcA7mMSE3b-A" outgoing="_2srn0Dz7EeqwwvtZSXxI_A"/>
<node xmi:type="uml:OpaqueAction" xmi:id="_8peKADhTEeqhK-Tr1AkfpA" name="spawn: obstacle s= cylinder(x=3,y=5,r=0.1, h=0.1)" incoming="_2srn0Dz7EeqwwvtZSXxI_A" outgoing="_Sb6vADz8EeqwwvtZSXxI_A"/>
<node xmi:type="uml:OpaqueAction" xmi:id="_PSC0ADz8EeqwwvtZSXxI_A" name="constraint: distance(f, s) in [0.5, 2]" visibility="protected" incoming="_Sb6vADz8EeqwwvtZSXxI_A" outgoing="_g_viwEUpEeq-Z_ECULnOOQ"/>
<node xmi:type="uml:FlowFinalNode" xmi:id="_8Pbz0Dz9EeqwwvtZSXxI_A" name="Final_Node" incoming="_g_viwEUpEeq-Z_ECULnOOQ"/>
</packagedElement>
</uml:Model>
<?xml version="1.0" encoding="UTF-8"?>
<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_wSJZEBEkEeqcA7mMSE3b-A" name="Test17">
<packageImport xmi:type="uml:PackageImport" xmi:id="_wUOcsBEkEeqcA7mMSE3b-A">
<importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
</packageImport>
<packagedElement xmi:type="uml:Activity" xmi:id="_sz7wUBElEeqcA7mMSE3b-A" name="Activity" node="_7EGDQBElEeqcA7mMSE3b-A _8WVuQBElEeqcA7mMSE3b-A _8peKADhTEeqhK-Tr1AkfpA _PSC0ADz8EeqwwvtZSXxI_A _8Pbz0Dz9EeqwwvtZSXxI_A">
<ownedComment xmi:type="uml:Comment" xmi:id="_N2YasDbPEeqLi4nplbzrvQ" annotatedElement="_8WVuQBElEeqcA7mMSE3b-A">
<body>t=0</body>
</ownedComment>
<ownedComment xmi:type="uml:Comment" xmi:id="_5xeOgDz7EeqwwvtZSXxI_A" annotatedElement="_sz7wUBElEeqcA7mMSE3b-A">
<body>t=0</body>
</ownedComment>
<ownedComment xmi:type="uml:Comment" xmi:id="_XECJoDz8EeqwwvtZSXxI_A" annotatedElement="_PSC0ADz8EeqwwvtZSXxI_A">
<body>t >=30</body>
</ownedComment>
<edge xmi:type="uml:ControlFlow" xmi:id="_USsZsBEmEeqcA7mMSE3b-A" target="_8WVuQBElEeqcA7mMSE3b-A" source="_7EGDQBElEeqcA7mMSE3b-A"/>
<edge xmi:type="uml:ControlFlow" xmi:id="_2srn0Dz7EeqwwvtZSXxI_A" target="_8peKADhTEeqhK-Tr1AkfpA" source="_8WVuQBElEeqcA7mMSE3b-A"/>
<edge xmi:type="uml:ControlFlow" xmi:id="_Sb6vADz8EeqwwvtZSXxI_A" target="_PSC0ADz8EeqwwvtZSXxI_A" source="_8peKADhTEeqhK-Tr1AkfpA"/>
<edge xmi:type="uml:ControlFlow" xmi:id="_g_viwEUpEeq-Z_ECULnOOQ" target="_8Pbz0Dz9EeqwwvtZSXxI_A" source="_PSC0ADz8EeqwwvtZSXxI_A"/>
<node xmi:type="uml:InitialNode" xmi:id="_7EGDQBElEeqcA7mMSE3b-A" name="Start" outgoing="_USsZsBEmEeqcA7mMSE3b-A"/>
<node xmi:type="uml:OpaqueAction" xmi:id="_8WVuQBElEeqcA7mMSE3b-A" name="spawn: vehicle f(x=1, y=1)" incoming="_USsZsBEmEeqcA7mMSE3b-A" outgoing="_2srn0Dz7EeqwwvtZSXxI_A"/>
<node xmi:type="uml:OpaqueAction" xmi:id="_8peKADhTEeqhK-Tr1AkfpA" name="spawn: obstacle s= cylinder(x=3,y=5,r=1, h=1)" incoming="_2srn0Dz7EeqwwvtZSXxI_A" outgoing="_Sb6vADz8EeqwwvtZSXxI_A"/>
<node xmi:type="uml:OpaqueAction" xmi:id="_PSC0ADz8EeqwwvtZSXxI_A" name="constraint: distance(f, s) in [0.5, 2]" visibility="protected" incoming="_Sb6vADz8EeqwwvtZSXxI_A" outgoing="_g_viwEUpEeq-Z_ECULnOOQ"/>
<node xmi:type="uml:FlowFinalNode" xmi:id="_8Pbz0Dz9EeqwwvtZSXxI_A" name="Final_Node" incoming="_g_viwEUpEeq-Z_ECULnOOQ"/>
</packagedElement>
</uml:Model>
<?xml version="1.0" encoding="UTF-8"?>
<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_wSJZEBEkEeqcA7mMSE3b-A" name="Test18">
<packageImport xmi:type="uml:PackageImport" xmi:id="_wUOcsBEkEeqcA7mMSE3b-A">
<importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
</packageImport>
<packagedElement xmi:type="uml:Activity" xmi:id="_sz7wUBElEeqcA7mMSE3b-A" name="Activity" node="_7EGDQBElEeqcA7mMSE3b-A _8WVuQBElEeqcA7mMSE3b-A _8peKADhTEeqhK-Tr1AkfpA _PSC0ADz8EeqwwvtZSXxI_A _8Pbz0Dz9EeqwwvtZSXxI_A">
<ownedComment xmi:type="uml:Comment" xmi:id="_N2YasDbPEeqLi4nplbzrvQ" annotatedElement="_8WVuQBElEeqcA7mMSE3b-A">
<body>t=0</body>
</ownedComment>
<ownedComment xmi:type="uml:Comment" xmi:id="_5xeOgDz7EeqwwvtZSXxI_A" annotatedElement="_sz7wUBElEeqcA7mMSE3b-A">
<body>t=0</body>
</ownedComment>
<ownedComment xmi:type="uml:Comment" xmi:id="_XECJoDz8EeqwwvtZSXxI_A" annotatedElement="_PSC0ADz8EeqwwvtZSXxI_A">
<body>t >=30&#xD;
</body>
</ownedComment>
<edge xmi:type="uml:ControlFlow" xmi:id="_USsZsBEmEeqcA7mMSE3b-A" target="_8WVuQBElEeqcA7mMSE3b-A" source="_7EGDQBElEeqcA7mMSE3b-A"/>
<edge xmi:type="uml:ControlFlow" xmi:id="_2srn0Dz7EeqwwvtZSXxI_A" target="_8peKADhTEeqhK-Tr1AkfpA" source="_8WVuQBElEeqcA7mMSE3b-A"/>
<edge xmi:type="uml:ControlFlow" xmi:id="_Sb6vADz8EeqwwvtZSXxI_A" target="_PSC0ADz8EeqwwvtZSXxI_A" source="_8peKADhTEeqhK-Tr1AkfpA"/>
<edge xmi:type="uml:ControlFlow" xmi:id="_g_viwEUpEeq-Z_ECULnOOQ" target="_8Pbz0Dz9EeqwwvtZSXxI_A" source="_PSC0ADz8EeqwwvtZSXxI_A"/>
<node xmi:type="uml:InitialNode" xmi:id="_7EGDQBElEeqcA7mMSE3b-A" name="Start" outgoing="_USsZsBEmEeqcA7mMSE3b-A"/>
<node xmi:type="uml:OpaqueAction" xmi:id="_8WVuQBElEeqcA7mMSE3b-A" name="spawn: vehicle f(x=1, y=1)" incoming="_USsZsBEmEeqcA7mMSE3b-A" outgoing="_2srn0Dz7EeqwwvtZSXxI_A"/>
<node xmi:type="uml:OpaqueAction" xmi:id="_8peKADhTEeqhK-Tr1AkfpA" name="spawn: obstacle s= sphere (x=1, y=5, r=0.1)" incoming="_2srn0Dz7EeqwwvtZSXxI_A" outgoing="_Sb6vADz8EeqwwvtZSXxI_A"/>
<node xmi:type="uml:OpaqueAction" xmi:id="_PSC0ADz8EeqwwvtZSXxI_A" name="constraint: distance(f, s) in [0.5, 2]" visibility="protected" incoming="_Sb6vADz8EeqwwvtZSXxI_A" outgoing="_g_viwEUpEeq-Z_ECULnOOQ"/>
<node xmi:type="uml:FlowFinalNode" xmi:id="_8Pbz0Dz9EeqwwvtZSXxI_A" name="Final_Node" incoming="_g_viwEUpEeq-Z_ECULnOOQ"/>
</packagedElement>
</uml:Model>