From b9a3384e9d722cdf45feba95c749c8fccd65d294 Mon Sep 17 00:00:00 2001 From: rschoene <rene.schoene@tu-dresden.de> Date: Wed, 8 Jul 2020 11:25:28 +0200 Subject: [PATCH] Update scripts, send as sequence possible. --- goal.sh | 4 +- receiver.sh | 4 +- .../inf/st/ros2rag/senderstub/SenderMain.java | 51 +++++++++++++++---- send.sh | 3 ++ send_one.sh | 2 - sequence.csv | 30 +++++++++++ starter.sh | 4 +- 7 files changed, 79 insertions(+), 19 deletions(-) create mode 100755 send.sh delete mode 100755 send_one.sh create mode 100644 sequence.csv diff --git a/goal.sh b/goal.sh index 7f5c049..7d1aa68 100755 --- a/goal.sh +++ b/goal.sh @@ -1,3 +1,3 @@ #!/usr/bin/env bash -./gradlew :ros2rag.goal:installDist -./ros2rag.goal/build/install/ros2rag.goal/bin/ros2rag.goal $@ +./gradlew :ros2rag.goal:installDist && \ + ./ros2rag.goal/build/install/ros2rag.goal/bin/ros2rag.goal $@ diff --git a/receiver.sh b/receiver.sh index a242dc3..b4bbb00 100755 --- a/receiver.sh +++ b/receiver.sh @@ -1,3 +1,3 @@ #!/usr/bin/env bash -./gradlew :ros2rag.receiverstub:installDist -./ros2rag.receiverstub/build/install/ros2rag.receiverstub/bin/ros2rag.receiverstub $@ +./gradlew :ros2rag.receiverstub:installDist && \ + ./ros2rag.receiverstub/build/install/ros2rag.receiverstub/bin/ros2rag.receiverstub $@ diff --git a/ros2rag.senderstub/src/main/java/de/tudresden/inf/st/ros2rag/senderstub/SenderMain.java b/ros2rag.senderstub/src/main/java/de/tudresden/inf/st/ros2rag/senderstub/SenderMain.java index e518c86..f540f1c 100644 --- a/ros2rag.senderstub/src/main/java/de/tudresden/inf/st/ros2rag/senderstub/SenderMain.java +++ b/ros2rag.senderstub/src/main/java/de/tudresden/inf/st/ros2rag/senderstub/SenderMain.java @@ -3,30 +3,59 @@ package de.tudresden.inf.st.ros2rag.senderstub; import de.tudresden.inf.st.ros2rag.starter.ast.MqttHandler; import panda.Linkstate; +import java.nio.file.Files; +import java.nio.file.Paths; import java.util.concurrent.TimeUnit; public class SenderMain { public static void main(String[] args) throws Exception { + // either 3 or 4 arguments + // 3 arguments: topic filename wait + // 4 arguments: topic x y z // assume 4 arguments - if (args.length < 4) { - System.err.println("Sends a new position, expected arguments: topic x y z"); + if (args.length < 3 || args.length > 4) { + System.err.println("Either sends a new position, arguments: topic x y z"); + System.err.println("Or reads positions from a file, arguments: topic filename wait"); return; } + MqttHandler sender = new MqttHandler("sender stub").dontSendWelcomeMessage(); + sender.setHost("localhost", 1883); + sender.waitUntilReady(2, TimeUnit.SECONDS); final String topic = args[0]; + if (args.length == 3) { + final String filename = args[1]; + final int wait = Integer.parseInt(args[2]); + try { + for (String line : Files.readAllLines(Paths.get(filename))) { + if (line.isEmpty()) continue; + String[] lineSplit = line.split(";"); + publish(sender, topic, + Float.parseFloat(lineSplit[0]), + Float.parseFloat(lineSplit[1]), + Float.parseFloat(lineSplit[2])); + TimeUnit.MILLISECONDS.sleep(wait); + } + } catch (InterruptedException ignore) { + } + } else { + publish(sender, topic, + Float.parseFloat(args[1]), + Float.parseFloat(args[2]), + Float.parseFloat(args[3])); + } + sender.close(); + } + + private static void publish(MqttHandler sender, String topic, float x, float y, float z) { Linkstate.PandaLinkState pls = Linkstate.PandaLinkState.newBuilder() - .setName(args[0]) + .setName(topic) .setPos(Linkstate.PandaLinkState.Position.newBuilder() - .setPositionX(Float.parseFloat(args[1])) - .setPositionY(Float.parseFloat(args[2])) - .setPositionZ(Float.parseFloat(args[3])) + .setPositionX(x) + .setPositionY(y) + .setPositionZ(z) .build()) .build(); final byte[] message = pls.toByteArray(); - - MqttHandler sender = new MqttHandler("sender stub").dontSendWelcomeMessage(); - sender.setHost("localhost", 1883); - sender.waitUntilReady(2, TimeUnit.SECONDS); sender.publish(topic, message); - sender.close(); } } diff --git a/send.sh b/send.sh new file mode 100755 index 0000000..8c55e2d --- /dev/null +++ b/send.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +./gradlew :ros2rag.senderstub:installDist && \ + ./ros2rag.senderstub/build/install/ros2rag.senderstub/bin/ros2rag.senderstub $@ diff --git a/send_one.sh b/send_one.sh deleted file mode 100755 index 5af156b..0000000 --- a/send_one.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env bash -./ros2rag.senderstub/build/install/ros2rag.senderstub/bin/ros2rag.senderstub $@ diff --git a/sequence.csv b/sequence.csv new file mode 100644 index 0000000..4d66f7a --- /dev/null +++ b/sequence.csv @@ -0,0 +1,30 @@ +0.0; 0.0; 0.0 +0.3; 0.3; 0.3 +0.6; 0.6; 0.6 +1.0; 1.0; 1.0 + +1.0; 1.0; 1.0 +1.0; 1.0; 1.0 +1.0; 1.0; 1.0 +1.0; 1.0; 1.0 +1.0; 1.0; 1.0 +1.0; 1.0; 1.0 + +1.0; 0.6; 1.0 +1.0; 0.3; 1.0 +1.0; 0.0; 1.0 + +1.0; 0.0; 1.0 +1.0; 0.0; 1.0 +1.0; 0.0; 1.0 +1.0; 0.0; 1.0 + +0.6; 0.0; 1.0 +0.3; 0.0; 1.0 +0.0; 0.0; 1.0 + +0.0; 0.0; 1.0 +0.0; 0.0; 1.0 +0.0; 0.0; 1.0 +0.0; 0.0; 1.0 +0.0; 0.0; 1.0 diff --git a/starter.sh b/starter.sh index 12d625d..e3bb9b9 100755 --- a/starter.sh +++ b/starter.sh @@ -1,3 +1,3 @@ #!/usr/bin/env bash -./gradlew :ros2rag.starter:installDist -./ros2rag.starter/build/install/ros2rag.starter/bin/ros2rag.starter $@ +./gradlew :ros2rag.starter:installDist && \ + ./ros2rag.starter/build/install/ros2rag.starter/bin/ros2rag.starter $@ -- GitLab