diff --git a/RosWorkspace/build.sh b/RosWorkspace/build.sh new file mode 100755 index 0000000000000000000000000000000000000000..131164317c3fb6e8f7cbd8e30686535e17d24e28 --- /dev/null +++ b/RosWorkspace/build.sh @@ -0,0 +1,5 @@ +%!/bin/bash + +source devel/setup.bash +catkin_make + diff --git a/RosWorkspace/run_all.sh b/RosWorkspace/run_all.sh new file mode 100755 index 0000000000000000000000000000000000000000..c2bf49923dfbd0fc77ceef3b06b432fc28b6ffb7 --- /dev/null +++ b/RosWorkspace/run_all.sh @@ -0,0 +1,8 @@ +%!/bin/bash + +source devel/setup.bash + +xterm -T listener -e rosrun listener listener & +xterm -T publisher -e rosrun publisher publisher & + + diff --git a/RosWorkspace/src/listener/src/main.cpp b/RosWorkspace/src/listener/src/main.cpp index c20ab460a307024831e07ef6096c20da2e43362d..68c2ba56bd76d865e490c3a0c2b2ecd331e8cbf4 100644 --- a/RosWorkspace/src/listener/src/main.cpp +++ b/RosWorkspace/src/listener/src/main.cpp @@ -1,13 +1,10 @@ -// %Tag(FULLTEXT)% #include "ros/ros.h" -#include "std_msgs/String.h" +#include "std_msgs/Float64MultiArray.h" -// %Tag(CALLBACK)% -void chatterCallback(const std_msgs::String::ConstPtr& msg) +void chatterCallback(const std_msgs::Float64MultiArray::ConstPtr& msg) { - ROS_INFO("I heard: [%s]", msg->data.c_str()); + ROS_INFO("Received command: %f", msg->data[0]); } -// %EndTag(CALLBACK)% int main(int argc, char **argv) { @@ -15,14 +12,8 @@ int main(int argc, char **argv) ros::NodeHandle n; -// %Tag(SUBSCRIBER)% - ros::Subscriber sub = n.subscribe("chatter", 1000, chatterCallback); -// %EndTag(SUBSCRIBER)% - -// %Tag(SPIN)% + ros::Subscriber sub = n.subscribe("/commands", 1000, chatterCallback); ros::spin(); -// %EndTag(SPIN)% return 0; } -// %EndTag(FULLTEXT)% diff --git a/RosWorkspace/src/publisher/src/main.cpp b/RosWorkspace/src/publisher/src/main.cpp index 246e25635854940636c814d78e166c05375a6d74..6d688a0c2d96a07591a6bb8bcf13d22e72aee594 100644 --- a/RosWorkspace/src/publisher/src/main.cpp +++ b/RosWorkspace/src/publisher/src/main.cpp @@ -1,64 +1,27 @@ -// %Tag(FULLTEXT)% -// %Tag(ROS_HEADER)% #include "ros/ros.h" -// %EndTag(ROS_HEADER)% -// %Tag(MSG_HEADER)% -#include "std_msgs/String.h" -// %EndTag(MSG_HEADER)% +#include "std_msgs/Float64MultiArray.h" #include int main(int argc, char **argv) { -// %Tag(INIT)% ros::init(argc, argv, "publisher"); -// %EndTag(INIT)% - -// %Tag(NODEHANDLE)% ros::NodeHandle n; -// %EndTag(NODEHANDLE)% - -// %Tag(PUBLISHER)% - ros::Publisher chatter_pub = n.advertise("chatter", 1000); -// %EndTag(PUBLISHER)% - -// %Tag(LOOP_RATE)% + ros::Publisher chatter_pub = n.advertise("/camera", 1000); ros::Rate loop_rate(10); -// %EndTag(LOOP_RATE)% - -// %Tag(ROS_OK)% int count = 0; + while (ros::ok()) { -// %EndTag(ROS_OK)% - -// %Tag(FILL_MESSAGE)% - std_msgs::String msg; - - std::stringstream ss; - ss << "hello world " << count; - msg.data = ss.str(); -// %EndTag(FILL_MESSAGE)% - -// %Tag(ROSCONSOLE)% - ROS_INFO("%s", msg.data.c_str()); -// %EndTag(ROSCONSOLE)% - -// %Tag(PUBLISH)% + std_msgs::Float64MultiArray msg; + msg.data.resize(512 * 512); + msg.data[0] = double(count) / 1000.; // Set first bit to "iteration/1000" for debugging + + ROS_INFO("%f", msg.data[0]); chatter_pub.publish(msg); -// %EndTag(PUBLISH)% - -// %Tag(SPINONCE)% ros::spinOnce(); -// %EndTag(SPINONCE)% - -// %Tag(RATE_SLEEP)% loop_rate.sleep(); -// %EndTag(RATE_SLEEP)% ++count; } - - return 0; } -// %EndTag(FULLTEXT)% diff --git a/TorcsEMAMGenerator/generated/build.sh b/TorcsEMAMGenerator/generated/build.sh new file mode 100755 index 0000000000000000000000000000000000000000..bc739930fe056d2190607047421b4cbe4aa30b16 --- /dev/null +++ b/TorcsEMAMGenerator/generated/build.sh @@ -0,0 +1,38 @@ +%!/bin/bash + +echo "Building DriverController" +cd Drivercontroller +mkdir -p build +cd build +cmake .. +make -j +cd ../../ + +echo "Building SafetyController" +cd Safetycontroller +mkdir -p build +cd build +cmake .. +make -j +cd ../../ + +echo "Building FeatureExtraction" +cd Featureextraction +mkdir -p build +cd build +cmake .. +make -j +cd ../../ + +echo "Building ImagePreprocessing" +cd Imagepreprocessing +mkdir -p build +cd build +cmake .. +make -j +cd ../../ + +echo +echo "Well done!" +echo "Run ./run_all.sh to run all." + diff --git a/TorcsEMAMGenerator/generated/run_all.sh b/TorcsEMAMGenerator/generated/run_all.sh new file mode 100755 index 0000000000000000000000000000000000000000..4ad2cfc367165bb47a38a78e7f893839feb53761 --- /dev/null +++ b/TorcsEMAMGenerator/generated/run_all.sh @@ -0,0 +1,10 @@ +%!/bin/bash + +xterm -T DriverController -e Drivercontroller/build/coordinator/Coordinator_dp_drivercontroller & + +xterm -T SafetyController -e Safetycontroller/build/coordinator/Coordinator_dp_safetycontroller & + +xterm -T FeatureExtraction -e Featureextraction/build/coordinator/Coordinator_dp_featureextraction & + +xterm -T ImagePreprocessing -e Imagepreprocessing/build/coordinator/Coordinator_dp_imagepreprocessing & + diff --git a/TorcsEMAMGenerator/resources/config/Drivercontroller.yaml b/TorcsEMAMGenerator/resources/config/Drivercontroller.yaml deleted file mode 100644 index b46f82569c43e4027cb91ae582fff075290ae2fb..0000000000000000000000000000000000000000 --- a/TorcsEMAMGenerator/resources/config/Drivercontroller.yaml +++ /dev/null @@ -1,14 +0,0 @@ -- !de.monticar.lang.monticar.generator.python.RosTag - component: dp.drivercontroller - subscriber: - - !de.monticar.lang.monticar.generator.python.RosInterface - ports: - affordanceIn: clock.toSec() - topic: /indocators - type: std_msgs/Int32 - publisher: - - !de.monticar.lang.monticar.generator.python.RosInterface - ports: - commandsOut: data - topic: /commands - type: std_msgs/Float64 diff --git a/TorcsEMAMGenerator/resources/config/Featureextraction.yaml b/TorcsEMAMGenerator/resources/config/Featureextraction.yaml deleted file mode 100644 index 09cd1407423f45bd069cd1a2e28f84478f87c35a..0000000000000000000000000000000000000000 --- a/TorcsEMAMGenerator/resources/config/Featureextraction.yaml +++ /dev/null @@ -1,14 +0,0 @@ -- !de.monticar.lang.monticar.generator.python.RosTag - component: dp.featureextraction - subscriber: - - !de.monticar.lang.monticar.generator.python.RosInterface - ports: - imageIn: clock.toSec() - topic: /images - type: std_msgs/Int32 - publisher: - - !de.monticar.lang.monticar.generator.python.RosInterface - ports: - affordanceOut: data - topic: /indicators - type: std_msgs/Float64 diff --git a/TorcsEMAMGenerator/resources/config/Imagepreprocessing.yaml b/TorcsEMAMGenerator/resources/config/Imagepreprocessing.yaml deleted file mode 100644 index 9225a8154f21f2def9a08aaef77cd80f929c8ddc..0000000000000000000000000000000000000000 --- a/TorcsEMAMGenerator/resources/config/Imagepreprocessing.yaml +++ /dev/null @@ -1,14 +0,0 @@ -- !de.monticar.lang.monticar.generator.python.RosTag - component: dp.imagepreprocessing - subscriber: - - !de.monticar.lang.monticar.generator.python.RosInterface - ports: - imageIn: data - topic: /camera - type: std_msgs/Int32 - publisher: - - !de.monticar.lang.monticar.generator.python.RosInterface - ports: - imageOut: data - topic: /images - type: std_msgs/Float64MultiArray diff --git a/TorcsEMAMGenerator/resources/config/Safetycontroller.yaml b/TorcsEMAMGenerator/resources/config/Safetycontroller.yaml deleted file mode 100644 index c03bf6f51f140bd46285343f0c72aa71fdb22ccd..0000000000000000000000000000000000000000 --- a/TorcsEMAMGenerator/resources/config/Safetycontroller.yaml +++ /dev/null @@ -1,15 +0,0 @@ -- !de.monticar.lang.monticar.generator.python.RosTag - component: dp.safetycontroller - subscriber: - - !de.monticar.lang.monticar.generator.python.RosInterface - ports: - imageIn: clock.toSec() - affordanceIn: clock.toSec() - topic: /indicators - type: std_msgs/Int32 - publisher: - - !de.monticar.lang.monticar.generator.python.RosInterface - ports: - safetyLevelOut: data - topic: /safety - type: std_msgs/Float64 diff --git a/TorcsEMAMGenerator/resources/dp/Drivercontroller.emam b/TorcsEMAMGenerator/resources/dp/Drivercontroller.emam index f5510c34f3b5b71de9f6e1fc9e06c4534ab8e8f7..1fea1bbe539a7ddb1d9bea07df9539609e9c2ff5 100644 --- a/TorcsEMAMGenerator/resources/dp/Drivercontroller.emam +++ b/TorcsEMAMGenerator/resources/dp/Drivercontroller.emam @@ -2,7 +2,7 @@ package dp; component Drivercontroller { ports - in Q(0:1)^{13,1,1} affordanceIn, - out Q(0:1)^{3,1,1} commandsOut; + in Q(0:1)^{13,1} affordanceIn, + out Q(0:1)^{3,1} commandsOut; } diff --git a/TorcsEMAMGenerator/resources/dp/Drivercontroller.tag b/TorcsEMAMGenerator/resources/dp/Drivercontroller.tag new file mode 100644 index 0000000000000000000000000000000000000000..a458c0ffb1d4c7fe39000dd502b983b63e08973a --- /dev/null +++ b/TorcsEMAMGenerator/resources/dp/Drivercontroller.tag @@ -0,0 +1,7 @@ +package dp; +conforms to de.monticore.lang.monticar.generator.roscpp.RosToEmamTagSchema; + +tags Drivercontroller { + tag drivercontroller.affordanceIn with RosConnection = {topic=(/affordance,std_msgs/Float64MultiArray)}; + tag drivercontroller.commandsOut with RosConnection = {topic=(/commands,std_msgs/Float64MultiArray)}; +} diff --git a/TorcsEMAMGenerator/resources/dp/Featureextraction.emam b/TorcsEMAMGenerator/resources/dp/Featureextraction.emam index 4e41bbf6daf7c83be734f2a766eb8b9231a5100e..bda2f6e0326b0b0ae6a5564261b9829495fdbcf2 100644 --- a/TorcsEMAMGenerator/resources/dp/Featureextraction.emam +++ b/TorcsEMAMGenerator/resources/dp/Featureextraction.emam @@ -2,7 +2,7 @@ package dp; component Featureextraction { ports - in Z(0:255)^{3, 224, 224} imageIn, - out Q(0:1)^{13,1,1} affordanceOut; + in Z(0:255)^{512,1} imageIn, + out Q(0:1)^{13,1} affordanceOut; } diff --git a/TorcsEMAMGenerator/resources/dp/Featureextraction.tag b/TorcsEMAMGenerator/resources/dp/Featureextraction.tag new file mode 100644 index 0000000000000000000000000000000000000000..592a03618817c4ca747d857f9aa5217b1df06df3 --- /dev/null +++ b/TorcsEMAMGenerator/resources/dp/Featureextraction.tag @@ -0,0 +1,7 @@ +package dp; +conforms to de.monticore.lang.monticar.generator.roscpp.RosToEmamTagSchema; + +tags Featureextraction { + tag featureextraction.imageIn with RosConnection = {topic=(/images,std_msgs/Float64MultiArray)}; + tag featureextraction.affordanceOut with RosConnection = {topic=(/affordance,std_msgs/Float64MultiArray)}; +} diff --git a/TorcsEMAMGenerator/resources/dp/Imagepreprocessing.emam b/TorcsEMAMGenerator/resources/dp/Imagepreprocessing.emam index 9e00ff3ea0bfbf6dcb172181e36030b72f82e46e..8fa6203e6893e82d50a67d4b915b94a91fc365e5 100644 --- a/TorcsEMAMGenerator/resources/dp/Imagepreprocessing.emam +++ b/TorcsEMAMGenerator/resources/dp/Imagepreprocessing.emam @@ -1,10 +1,6 @@ package dp; component Imagepreprocessing { -ports in Q^{3,224} in1, - in Z^{3,224} in2, - //in B^{3,224} in3, - out Q^{3,224} out1, - out Z^{3,224} out2; - //out B^{3,224} out3; +ports in Z(0:255)^{512,1} imageIn, + out Z(0:255)^{512,1} imageOut; } diff --git a/TorcsEMAMGenerator/resources/dp/Imagepreprocessing.tag b/TorcsEMAMGenerator/resources/dp/Imagepreprocessing.tag index dbf86bc4a3468a0c2bae9b1ad95bca83e535d46e..50cf1a2bb792d6e86c1185f216850eec75c3e6b1 100644 --- a/TorcsEMAMGenerator/resources/dp/Imagepreprocessing.tag +++ b/TorcsEMAMGenerator/resources/dp/Imagepreprocessing.tag @@ -2,10 +2,6 @@ package dp; conforms to de.monticore.lang.monticar.generator.roscpp.RosToEmamTagSchema; tags Imagepreprocessing { - tag imagepreprocessing.in1 with RosConnection = {topic=(/topicName1,std_msgs/Float64MultiArray)}; - tag imagepreprocessing.in2 with RosConnection = {topic=(/topicName2,std_msgs/Int32MultiArray)}; - //tag imagepreprocessing.in3 with RosConnection = {topic=(/topicName3,std_msgs/ByteMultiArray)}; - tag imagepreprocessing.out1 with RosConnection = {topic=(/topicName4,std_msgs/Float64MultiArray)}; - tag imagepreprocessing.out2 with RosConnection = {topic=(/topicName5,std_msgs/Int32MultiArray)}; - //tag imagepreprocessing.out3 with RosConnection = {topic=(/topicName6,std_msgs/ByteMultiArray)}; + tag imagepreprocessing.imageIn with RosConnection = {topic=(/camera,std_msgs/Float64MultiArray)}; + tag imagepreprocessing.imageOut with RosConnection = {topic=(/images,std_msgs/Float64MultiArray)}; } diff --git a/TorcsEMAMGenerator/resources/dp/Safetycontroller.emam b/TorcsEMAMGenerator/resources/dp/Safetycontroller.emam index f231131178aec095f56ce7c98b4b189b71207558..371b94a7a575ad37a5da52d52e76ea33ebe72bcb 100644 --- a/TorcsEMAMGenerator/resources/dp/Safetycontroller.emam +++ b/TorcsEMAMGenerator/resources/dp/Safetycontroller.emam @@ -2,8 +2,7 @@ package dp; component Safetycontroller { ports - in Z(0:255)^{3, 224, 224} imageIn, - in Q(0:1)^{13,1,1} affordanceIn, - out Q(0:1)^{1,1,1} safetyLevelOut; + in Z(0:255)^{512,1} imageIn, + in Q(0:1)^{13,1} affordanceIn, + out Q(0:1)^{1,1} safetyLevelOut; } - diff --git a/TorcsEMAMGenerator/resources/dp/Safetycontroller.tag b/TorcsEMAMGenerator/resources/dp/Safetycontroller.tag new file mode 100644 index 0000000000000000000000000000000000000000..7d57c538d1ca23f033591d971b41b5f9f69c85f0 --- /dev/null +++ b/TorcsEMAMGenerator/resources/dp/Safetycontroller.tag @@ -0,0 +1,8 @@ +package dp; +conforms to de.monticore.lang.monticar.generator.roscpp.RosToEmamTagSchema; + +tags Safetycontroller { + tag safetycontroller.imageIn with RosConnection = {topic=(/images,std_msgs/Float64MultiArray)}; + tag safetycontroller.affordanceIn with RosConnection = {topic=(/affordance,std_msgs/Float64MultiArray)}; + tag safetycontroller.safetyLevelOut with RosConnection = {topic=(/safety,std_msgs/Float64MultiArray)}; +} diff --git a/TorcsEMAMGenerator/src/main/java/de/monticore/lang/monticar/torcs_dl/Experiments.java b/TorcsEMAMGenerator/src/main/java/de/monticore/lang/monticar/torcs_dl/Experiments.java index 05064b318d08721a63ec22a341d86e8a54ac0562..abebbbba163349356cc059f4295edf64d445d52f 100644 --- a/TorcsEMAMGenerator/src/main/java/de/monticore/lang/monticar/torcs_dl/Experiments.java +++ b/TorcsEMAMGenerator/src/main/java/de/monticore/lang/monticar/torcs_dl/Experiments.java @@ -26,8 +26,6 @@ public class Experiments { public static void main(String[] args) { System.out.println("Experiments!"); - //--- - Scope scope = createSymTab("resources"); TaggingResolver taggingResolver = new TaggingResolver(scope, Arrays.asList("resources")); TagMinMaxTagSchema.registerTagTypes(taggingResolver); @@ -45,16 +43,6 @@ public class Experiments { middlewareGenerator.add(new CPPGenImpl(), "cpp"); middlewareGenerator.add(new RosCppGenImpl(), "roscpp"); - -// DistributedTargetGenerator distributedTargetGenerator = new DistributedTargetGenerator(); -// -// distributedTargetGenerator.add(new CPPGenImpl(), "cpp"); -// distributedTargetGenerator.add(new RosCppGenImpl(), "roscpp"); - - -// GeneratorRosCpp generatorRosCpp = new GeneratorRosCpp(); -// GeneratorRosMsg generatorRosMsg = new GeneratorRosMsg(); - LinkedList inputs = new LinkedList(); inputs.add("Imagepreprocessing"); inputs.add("Featureextraction"); @@ -72,23 +60,6 @@ public class Experiments { middlewareGenerator.setGenerationTargetPath("generated/"+inpu); middlewareGenerator.generate(componentInstanceSymbol, taggingResolver); -// distributedTargetGenerator.setGenerationTargetPath("generated/"+inpu); -// distributedTargetGenerator.generate(componentInstanceSymbol, symtab); - -// ExpandedComponentInstanceSymbol component = symtab.resolve("dp."+inpu.toLowerCase(), ExpandedComponentInstanceSymbol.KIND).orElse(null); -// generatorRosMsg.setTarget("generated/", inpu); -// -// for(PortSymbol port : component.getPorts()) { -// List msgFiles = generatorRosMsg.generate(port.getTypeReference()); -// System.out.println(" Msg files: " + msgFiles.toString()); -// } -// -// generatorRosCpp.setGenerationTargetPath("generated/"+inpu); -// List files = YamlHelper.generateFromFile("resources/config/"+inpu+".yaml", symtab, generatorRosCpp); -// for (File f : files) { -// System.out.println(" " + f.toString()); -// } - } } catch (IOException e) { e.printStackTrace();