diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..5b76f25600ee16caae94bbdd1bb58d8636819725 --- /dev/null +++ b/.gitignore @@ -0,0 +1,37 @@ +# Created by https://www.gitignore.io/api/java,gradle + +### Java ### +*.class + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.ear + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + + +### Gradle ### +.gradle +/build/ + +# Ignore Gradle GUI config +gradle-app.setting + +# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) +!gradle-wrapper.jar + +# Cache of project +.gradletasknamecache + +# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898 +# gradle/wrapper/gradle-wrapper.properties + +# End of https://www.gitignore.io/api/java,gradle diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..44e634daf44a1241991678b9fefed14ee448bfcd --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,29 @@ +############################################################################## +# CMake +############################################################################## + +cmake_minimum_required(VERSION 2.8.3) +project(rosjava_catkin_package_a) + +############################################################################## +# Catkin +############################################################################## + +find_package(catkin REQUIRED rosjava_build_tools) + +# Set the gradle targets you want catkin's make to run by default, e.g. +# catkin_rosjava_setup(installDist) +# Note that the catkin_create_rosjava_xxx scripts will usually automatically +# add tasks to this for you when you create subprojects. +catkin_rosjava_setup(installDist publish) + +catkin_package() + +############################################################################## +# Installation +############################################################################## + +# Change this to match the maven group name you have specified in the +# allprojects closure the root build.gradle +install(DIRECTORY ${CATKIN_DEVEL_PREFIX}/${CATKIN_GLOBAL_MAVEN_DESTINATION}/com/github/rosjava/${PROJECT_NAME}/ + DESTINATION ${CATKIN_GLOBAL_MAVEN_DESTINATION}/com/github/rosjava/${PROJECT_NAME}) diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000000000000000000000000000000000000..985fe4c62cacff54aaf296c351b1e114db9070b8 --- /dev/null +++ b/build.gradle @@ -0,0 +1,69 @@ +/* + * Copyright (C) 2014 Sebastian Ebert + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +task wrapper(type: Wrapper) { + gradleVersion = '4.10.2' +} + +buildscript { + apply from: "https://github.com/rosjava/rosjava_bootstrap/raw/kinetic/buildscript.gradle" +} + +apply plugin: 'catkin' + + +allprojects { + /* + A github url provides a good standard unique name for your project + Example below, but you may wish to switch to your own unique url. + */ + group 'com.github.rosjava.rosjava_catkin_package_a' + version = project.catkin.pkg.version +} + +subprojects { + /* + * The ros-java plugin configures a few things: + * + * - local deployment repository : where it dumps the jars and packaged artifacts) + * - local maven repositories : where it finds your locally installed/built artifacts) + * - external maven repositories : where it goes looking if it can't find dependencies locally + * + * To modify, or add repos to the default external maven repositories list, pull request against this code: + * + * https://github.com/rosjava/rosjava_bootstrap/blob/kinetic/gradle_plugins/src/main/groovy/org/ros/gradle_plugins/RosPlugin.groovy#L31 + */ + apply plugin: "ros-java" + /* + * Some IDE support if you use it. + */ + /* apply plugin: "eclipse" */ + apply plugin: "idea" +} + +/* + Some useful tasks: + + install: deploys jar's to MavenLocal() (i.e. ~/.m2/repository) + publish : deploys jar's to devel/share/maven + installDist : assembles java apps in the _subproject_/build directories. + + Note that these are dependent on the type of project (e.g. installDist is only valid for + java binary subprojects, while publish is only added once a subproject is included. + If you're using catkin_make, this is not important, since it will use the task list specified + in CMakeLists.txt +*/ +defaultTasks 'tasks' diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..29953ea141f55e3b8fc691d31b5ca8816d89fa87 Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000000000000000000000000000000000000..e0b3fb8d70b1bbf790f6f8ed1c928ddf09f54628 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100755 index 0000000000000000000000000000000000000000..cccdd3d517fc5249beaefa600691cf150f2fa3e6 --- /dev/null +++ b/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000000000000000000000000000000000000..e95643d6a2ca62258464e83c72f5156dc941c609 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/my_pub_sub_tutorial/build.gradle b/my_pub_sub_tutorial/build.gradle new file mode 100644 index 0000000000000000000000000000000000000000..bb8035899c8af3650f8b74586754382c1c819ddf --- /dev/null +++ b/my_pub_sub_tutorial/build.gradle @@ -0,0 +1,72 @@ +/* + * Copyright (C) 2014 Sebastian Ebert. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +/* This plugin is necessary for creating installDist tasks (i.e. executables) */ +apply plugin: 'application' +mainClassName = 'org.ros.RosRun' + +/* + Examples of + 1) dependencies from another project in this gradle stack. + 2,3) open ranged dependencies from a maven repository. + + Dependencies can be on external maven artifacts (such as rosjava_core + here) or on sibling subprojects. For rosjava maven artifact dependencies + it is a good idea to use open ranges on to + save continually updating these references, but it is recommended + to restrict this to the patch version number (e.g. [0.3,0.4) will + get the latest 0.3.x version) to avoid unknowingly + having api breaking changes usually associated with minor and major + version number changes. +*/ + +dependencies { + /* An external maven artifact dependency */ + compile 'org.ros.rosjava_core:rosjava:[0.3,0.4)' + /*compile 'org.ros.rosjava_messages:rosjava_custom_srv:[0.1, 0.2)'*/ + /* Example of a local subproject dependency */ + /* compile project(':sibling_gradle_project') */ + + // logging + implementation group: 'org.slf4j', name: 'slf4j-api', version: '1.7.30' + implementation group: 'org.apache.logging.log4j', name: 'log4j-slf4j-impl', version: '2.13.2' + + // pnml lib + implementation group: 'org.eclipse.emf', name: 'org.eclipse.emf.ecore', version: '2.12.0' + implementation group: 'org.eclipse.emf', name: 'org.eclipse.emf.ecore.xmi', version: '2.12.0' + implementation group: 'org.eclipse.emf', name: 'org.eclipse.emf.common', version: '2.12.0' + implementation group: 'org.eclipse.emf', name: 'org.eclipse.emf.mwe.core', version: '1.3.13' + implementation group: 'fr.lip6.pnml', name: 'fr.lip6.pnml.framework.ptnet', version: '2.2.12' + implementation group: 'fr.lip6.pnml', name: 'fr.lip6.pnml.framework.utils', version: '2.2.12' + implementation group: 'org.apache.ws.commons.axiom', name: 'axiom-api', version: '1.2.22' + implementation group: 'org.apache.ws.commons.axiom', name: 'axiom-impl', version: '1.2.22' + implementation group: 'com.thaiopensource', name: 'jing', version: '20091111' + implementation 'org.jetbrains:annotations:19.0.0' + + // apache + implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.0' + + + implementation fileTree(include: ['pnml-relast-0.2.jar'], dir: './libs') +} + +task cleanScripts(dependsOn: 'installDist') { + doLast { + file('build/scripts').deleteDir() + } +} + +installDist.finalizedBy(cleanScripts) diff --git a/my_pub_sub_tutorial/build/install/my_pub_sub_tutorial/bin/my_pub_sub_tutorial b/my_pub_sub_tutorial/build/install/my_pub_sub_tutorial/bin/my_pub_sub_tutorial new file mode 100755 index 0000000000000000000000000000000000000000..ecd00cdb78243645047fdc17088091caa67e24f1 --- /dev/null +++ b/my_pub_sub_tutorial/build/install/my_pub_sub_tutorial/bin/my_pub_sub_tutorial @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## my_pub_sub_tutorial start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/.." >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="my_pub_sub_tutorial" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and MY_PUB_SUB_TUTORIAL_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/lib/my_pub_sub_tutorial-0.1.0.jar:$APP_HOME/lib/pnml-relast-0.2.jar:$APP_HOME/lib/rosjava-0.3.6.jar:$APP_HOME/lib/log4j-slf4j-impl-2.13.2.jar:$APP_HOME/lib/slf4j-api-1.7.30.jar:$APP_HOME/lib/org.eclipse.emf.ecore-2.12.0.jar:$APP_HOME/lib/org.eclipse.emf.ecore.xmi-2.12.0.jar:$APP_HOME/lib/org.eclipse.emf.common-2.12.0.jar:$APP_HOME/lib/org.eclipse.emf.mwe.core-1.3.13.jar:$APP_HOME/lib/fr.lip6.pnml.framework.ptnet-2.2.12.jar:$APP_HOME/lib/fr.lip6.pnml.framework.utils-2.2.12.jar:$APP_HOME/lib/axiom-impl-1.2.22.jar:$APP_HOME/lib/axiom-api-1.2.22.jar:$APP_HOME/lib/jing-20091111.jar:$APP_HOME/lib/annotations-19.0.0.jar:$APP_HOME/lib/commons-lang3-3.0.jar:$APP_HOME/lib/apache_xmlrpc_server-0.3.6.jar:$APP_HOME/lib/apache_xmlrpc_client-0.3.6.jar:$APP_HOME/lib/apache_xmlrpc_common-0.3.6.jar:$APP_HOME/lib/rosjava_test_msgs-0.3.0.jar:$APP_HOME/lib/rosgraph_msgs-1.11.2.jar:$APP_HOME/lib/nav_msgs-1.12.7.jar:$APP_HOME/lib/tf2_msgs-0.5.20.jar:$APP_HOME/lib/geometry_msgs-1.12.7.jar:$APP_HOME/lib/actionlib_msgs-1.12.7.jar:$APP_HOME/lib/std_msgs-0.5.11.jar:$APP_HOME/lib/message_generation-0.3.3.jar:$APP_HOME/lib/dnsjava-2.1.1.jar:$APP_HOME/lib/com.springsource.org.apache.commons.httpclient-3.1.0.jar:$APP_HOME/lib/com.springsource.org.apache.commons.logging-1.1.1.jar:$APP_HOME/lib/com.springsource.org.apache.commons.net-2.0.0.jar:$APP_HOME/lib/guava-12.0.jar:$APP_HOME/lib/log4j-core-2.13.2.jar:$APP_HOME/lib/log4j-api-2.13.2.jar:$APP_HOME/lib/org.eclipse.emf.mwe2.runtime-2.8.3.jar:$APP_HOME/lib/commons-cli-1.2.jar:$APP_HOME/lib/commons-logging-1.2.jar:$APP_HOME/lib/geronimo-activation_1.1_spec-1.1.jar:$APP_HOME/lib/jaxen-1.1.6.jar:$APP_HOME/lib/geronimo-stax-api_1.0_spec-1.0.1.jar:$APP_HOME/lib/apache-mime4j-core-0.7.2.jar:$APP_HOME/lib/woodstox-core-asl-4.2.0.jar:$APP_HOME/lib/xercesImpl-2.9.1.jar:$APP_HOME/lib/ws-commons-util-1.0.1.jar:$APP_HOME/lib/saxon-8.7.jar:$APP_HOME/lib/isorelax-20030108.jar:$APP_HOME/lib/netty-3.5.2.Final.jar:$APP_HOME/lib/com.springsource.org.apache.commons.codec-1.3.0.jar:$APP_HOME/lib/com.springsource.org.apache.commons.io-1.4.0.jar:$APP_HOME/lib/commons-pool-1.6.jar:$APP_HOME/lib/com.springsource.org.apache.commons.lang-2.4.0.jar:$APP_HOME/lib/gradle_plugins-0.3.3.jar:$APP_HOME/lib/junit-3.8.2.jar:$APP_HOME/lib/jsr305-1.3.9.jar:$APP_HOME/lib/guice-3.0.jar:$APP_HOME/lib/stax2-api-3.1.1.jar:$APP_HOME/lib/javax.inject-1.jar:$APP_HOME/lib/aopalliance-1.0.jar:$APP_HOME/lib/cglib-2.2.1-v20090111.jar:$APP_HOME/lib/asm-3.1.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $MY_PUB_SUB_TUTORIAL_OPTS -classpath "\"$CLASSPATH\"" org.ros.RosRun "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/my_pub_sub_tutorial/build/install/my_pub_sub_tutorial/bin/my_pub_sub_tutorial.bat b/my_pub_sub_tutorial/build/install/my_pub_sub_tutorial/bin/my_pub_sub_tutorial.bat new file mode 100755 index 0000000000000000000000000000000000000000..69c8ce7659b6bbcf46e5fd30e6b4610951237736 --- /dev/null +++ b/my_pub_sub_tutorial/build/install/my_pub_sub_tutorial/bin/my_pub_sub_tutorial.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem my_pub_sub_tutorial startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME%.. + +@rem Add default JVM options here. You can also use JAVA_OPTS and MY_PUB_SUB_TUTORIAL_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\lib\my_pub_sub_tutorial-0.1.0.jar;%APP_HOME%\lib\pnml-relast-0.2.jar;%APP_HOME%\lib\rosjava-0.3.6.jar;%APP_HOME%\lib\log4j-slf4j-impl-2.13.2.jar;%APP_HOME%\lib\slf4j-api-1.7.30.jar;%APP_HOME%\lib\org.eclipse.emf.ecore-2.12.0.jar;%APP_HOME%\lib\org.eclipse.emf.ecore.xmi-2.12.0.jar;%APP_HOME%\lib\org.eclipse.emf.common-2.12.0.jar;%APP_HOME%\lib\org.eclipse.emf.mwe.core-1.3.13.jar;%APP_HOME%\lib\fr.lip6.pnml.framework.ptnet-2.2.12.jar;%APP_HOME%\lib\fr.lip6.pnml.framework.utils-2.2.12.jar;%APP_HOME%\lib\axiom-impl-1.2.22.jar;%APP_HOME%\lib\axiom-api-1.2.22.jar;%APP_HOME%\lib\jing-20091111.jar;%APP_HOME%\lib\annotations-19.0.0.jar;%APP_HOME%\lib\commons-lang3-3.0.jar;%APP_HOME%\lib\apache_xmlrpc_server-0.3.6.jar;%APP_HOME%\lib\apache_xmlrpc_client-0.3.6.jar;%APP_HOME%\lib\apache_xmlrpc_common-0.3.6.jar;%APP_HOME%\lib\rosjava_test_msgs-0.3.0.jar;%APP_HOME%\lib\rosgraph_msgs-1.11.2.jar;%APP_HOME%\lib\nav_msgs-1.12.7.jar;%APP_HOME%\lib\tf2_msgs-0.5.20.jar;%APP_HOME%\lib\geometry_msgs-1.12.7.jar;%APP_HOME%\lib\actionlib_msgs-1.12.7.jar;%APP_HOME%\lib\std_msgs-0.5.11.jar;%APP_HOME%\lib\message_generation-0.3.3.jar;%APP_HOME%\lib\dnsjava-2.1.1.jar;%APP_HOME%\lib\com.springsource.org.apache.commons.httpclient-3.1.0.jar;%APP_HOME%\lib\com.springsource.org.apache.commons.logging-1.1.1.jar;%APP_HOME%\lib\com.springsource.org.apache.commons.net-2.0.0.jar;%APP_HOME%\lib\guava-12.0.jar;%APP_HOME%\lib\log4j-core-2.13.2.jar;%APP_HOME%\lib\log4j-api-2.13.2.jar;%APP_HOME%\lib\org.eclipse.emf.mwe2.runtime-2.8.3.jar;%APP_HOME%\lib\commons-cli-1.2.jar;%APP_HOME%\lib\commons-logging-1.2.jar;%APP_HOME%\lib\geronimo-activation_1.1_spec-1.1.jar;%APP_HOME%\lib\jaxen-1.1.6.jar;%APP_HOME%\lib\geronimo-stax-api_1.0_spec-1.0.1.jar;%APP_HOME%\lib\apache-mime4j-core-0.7.2.jar;%APP_HOME%\lib\woodstox-core-asl-4.2.0.jar;%APP_HOME%\lib\xercesImpl-2.9.1.jar;%APP_HOME%\lib\ws-commons-util-1.0.1.jar;%APP_HOME%\lib\saxon-8.7.jar;%APP_HOME%\lib\isorelax-20030108.jar;%APP_HOME%\lib\netty-3.5.2.Final.jar;%APP_HOME%\lib\com.springsource.org.apache.commons.codec-1.3.0.jar;%APP_HOME%\lib\com.springsource.org.apache.commons.io-1.4.0.jar;%APP_HOME%\lib\commons-pool-1.6.jar;%APP_HOME%\lib\com.springsource.org.apache.commons.lang-2.4.0.jar;%APP_HOME%\lib\gradle_plugins-0.3.3.jar;%APP_HOME%\lib\junit-3.8.2.jar;%APP_HOME%\lib\jsr305-1.3.9.jar;%APP_HOME%\lib\guice-3.0.jar;%APP_HOME%\lib\stax2-api-3.1.1.jar;%APP_HOME%\lib\javax.inject-1.jar;%APP_HOME%\lib\aopalliance-1.0.jar;%APP_HOME%\lib\cglib-2.2.1-v20090111.jar;%APP_HOME%\lib\asm-3.1.jar + +@rem Execute my_pub_sub_tutorial +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %MY_PUB_SUB_TUTORIAL_OPTS% -classpath "%CLASSPATH%" org.ros.RosRun %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable MY_PUB_SUB_TUTORIAL_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%MY_PUB_SUB_TUTORIAL_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/my_pub_sub_tutorial/build/publications/mavenJava/pom-default.xml b/my_pub_sub_tutorial/build/publications/mavenJava/pom-default.xml new file mode 100644 index 0000000000000000000000000000000000000000..fa61a01f90a57148ac8cdd391329d48d27904ae6 --- /dev/null +++ b/my_pub_sub_tutorial/build/publications/mavenJava/pom-default.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <modelVersion>4.0.0</modelVersion> + <groupId>com.github.rosjava.rosjava_catkin_package_a</groupId> + <artifactId>my_pub_sub_tutorial</artifactId> + <version>0.1.0</version> + <dependencies> + <dependency> + <groupId>org.ros.rosjava_core</groupId> + <artifactId>rosjava</artifactId> + <version>[0.3,0.4)</version> + <scope>compile</scope> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + <version>1.7.30</version> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>org.apache.logging.log4j</groupId> + <artifactId>log4j-slf4j-impl</artifactId> + <version>2.13.2</version> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>org.eclipse.emf</groupId> + <artifactId>org.eclipse.emf.ecore</artifactId> + <version>2.12.0</version> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>org.eclipse.emf</groupId> + <artifactId>org.eclipse.emf.ecore.xmi</artifactId> + <version>2.12.0</version> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>org.eclipse.emf</groupId> + <artifactId>org.eclipse.emf.common</artifactId> + <version>2.12.0</version> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>org.eclipse.emf</groupId> + <artifactId>org.eclipse.emf.mwe.core</artifactId> + <version>1.3.13</version> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>fr.lip6.pnml</groupId> + <artifactId>fr.lip6.pnml.framework.ptnet</artifactId> + <version>2.2.12</version> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>fr.lip6.pnml</groupId> + <artifactId>fr.lip6.pnml.framework.utils</artifactId> + <version>2.2.12</version> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>org.apache.ws.commons.axiom</groupId> + <artifactId>axiom-api</artifactId> + <version>1.2.22</version> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>org.apache.ws.commons.axiom</groupId> + <artifactId>axiom-impl</artifactId> + <version>1.2.22</version> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>com.thaiopensource</groupId> + <artifactId>jing</artifactId> + <version>20091111</version> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>org.jetbrains</groupId> + <artifactId>annotations</artifactId> + <version>19.0.0</version> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-lang3</artifactId> + <version>3.0</version> + <scope>runtime</scope> + </dependency> + </dependencies> +</project> diff --git a/my_pub_sub_tutorial/build/resources/main/minimal.pnml b/my_pub_sub_tutorial/build/resources/main/minimal.pnml new file mode 100644 index 0000000000000000000000000000000000000000..02aac0252a55e8aeea785a415cbe4f61c9d6784c --- /dev/null +++ b/my_pub_sub_tutorial/build/resources/main/minimal.pnml @@ -0,0 +1,149 @@ +<pnml xmlns="http://www.pnml.org/version-2009/grammar/pnml"> + <net id="n-E2D0-BCF46-0" type ="http://www.pnml.org/version-2009/grammar/ptnet"> + <name> + <text>minimal</text> + </name> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.0.1"> + </toolspecific> + <page id="g-E2D0-BCF68-1"> + <place id="p-E2D0-BCF6F-2"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.0.1"> + <location>node-1</location> + <type>discretePlaceType</type> + <outputsignalbindings> + <outputsignalbinding> + <placeID>p-E2D0-BCF6F-2</placeID> + <outputsignalID>os2</outputsignalID> + <initialvalue>1</initialvalue> <!-- -1 = undefined --> + <outputmappings> + <equal> + <value>1</value> + <result>3</result> + </equal> + <equal> + <value>0</value> + <result>2</result> + </equal> + <threshold> + <value>6</value> + <result>0</result> + </threshold> + <range> + <upperbound>5</upperbound> + <lowerbound>3</lowerbound> + <result>1</result> + </range> + </outputmappings> + </outputsignalbinding> + </outputsignalbindings> + </toolspecific> + <name> + <text>p0</text> + <graphics> + <offset x="0" y="-10" /> + </graphics> + </name> + <initialMarking> + <text>1</text> + </initialMarking> + <graphics> + <position x="30" y="50"/> + </graphics> + </place> + <place id="p-E2D0-BCF9D-3"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.0.1"> + <location>node-1</location> + <type>discretePlaceType</type> + <outputsignalbindings> + <outputsignalbinding> + <placeID>p-E2D0-BCF9D-3</placeID> + <outputsignalID>os1</outputsignalID> + <initialvalue>4</initialvalue> <!-- -1 = undefined --> + <outputmappings> + <equal> + <value>1</value> + <result>1</result> + </equal> + <threshold> + <value>6</value> + <result>0</result> + </threshold> + <range> + <upperbound>5</upperbound> + <lowerbound>3</lowerbound> + <result>1</result> + </range> + </outputmappings> + </outputsignalbinding> + </outputsignalbindings> + </toolspecific> + <name> + <text>p1</text> + <graphics> + <offset x="0" y="-10" /> + </graphics> + </name> + <graphics> + <position x="635" y="90"/> + </graphics> + </place> + <transition id="t1"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.0.1"> + <location>node-1</location> + <type>discreteTransitionType</type> + <inputsignalbindings> + <inputsignalbinding> + <transitionID>t1</transitionID> + <inputsignalID>is1</inputsignalID> + <initialvalue>1</initialvalue> + </inputsignalbinding> + <inputsignalbinding> + <transitionID>t1</transitionID> + <inputsignalID>is3</inputsignalID> + <initialvalue>1</initialvalue> + </inputsignalbinding> + </inputsignalbindings> + </toolspecific> + <name> + <text>t0</text> + <graphics> + <offset x="0" y="0" /> + </graphics> + </name> + <graphics> + <position x="300" y="50"/> + </graphics> + </transition> + <transition id="t2"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.0.1"> + <location>node-1</location> + <type>discreteTransitionType</type> + <inputsignalbindings> + <inputsignalbinding> + <transitionID>t2</transitionID> + <inputsignalID>is2</inputsignalID> + <initialvalue>0</initialvalue> + </inputsignalbinding> + </inputsignalbindings> + </toolspecific> + <name> + <text>t1</text> + <graphics> + <offset x="0" y="0" /> + </graphics> + </name> + <graphics> + <position x="285" y="205"/> + </graphics> + </transition> + <arc id="e-E2D0-BCFCD-6" source="t2" target="p-E2D0-BCF6F-2"> + </arc> + <arc id="e-E2D0-BCFDB-7" source="p-E2D0-BCF9D-3" target="t2"> + </arc> + <arc id="e-E2D0-BCFF3-8" source="t1" target="p-E2D0-BCF9D-3"> + </arc> + <arc id="e-E2D0-BCFFB-9" source="p-E2D0-BCF6F-2" target="t1"> + </arc> + </page> + </net> +</pnml> \ No newline at end of file diff --git a/my_pub_sub_tutorial/build/tmp/jar/MANIFEST.MF b/my_pub_sub_tutorial/build/tmp/jar/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..58630c02ef423cffd6dd6aafd946eb8512040c37 --- /dev/null +++ b/my_pub_sub_tutorial/build/tmp/jar/MANIFEST.MF @@ -0,0 +1,2 @@ +Manifest-Version: 1.0 + diff --git a/my_pub_sub_tutorial/build/tmp/publishMavenJavaPublicationToMavenRepository/com/github/rosjava/rosjava_catkin_package_a/my_pub_sub_tutorial/maven-metadata-remote.xml b/my_pub_sub_tutorial/build/tmp/publishMavenJavaPublicationToMavenRepository/com/github/rosjava/rosjava_catkin_package_a/my_pub_sub_tutorial/maven-metadata-remote.xml new file mode 100644 index 0000000000000000000000000000000000000000..0a8adb3b1fae0ac2d214b8990016ed4130129fd6 --- /dev/null +++ b/my_pub_sub_tutorial/build/tmp/publishMavenJavaPublicationToMavenRepository/com/github/rosjava/rosjava_catkin_package_a/my_pub_sub_tutorial/maven-metadata-remote.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<metadata> + <groupId>com.github.rosjava.rosjava_catkin_package_a</groupId> + <artifactId>my_pub_sub_tutorial</artifactId> + <versioning> + <release>0.1.0</release> + <versions> + <version>0.1.0</version> + </versions> + <lastUpdated>20210708104554</lastUpdated> + </versioning> +</metadata> diff --git a/my_pub_sub_tutorial/build/tmp/publishMavenJavaPublicationToMavenRepository/com/github/rosjava/rosjava_catkin_package_a/my_pub_sub_tutorial/resolver-status.properties b/my_pub_sub_tutorial/build/tmp/publishMavenJavaPublicationToMavenRepository/com/github/rosjava/rosjava_catkin_package_a/my_pub_sub_tutorial/resolver-status.properties new file mode 100644 index 0000000000000000000000000000000000000000..ef653da44b33b058ffb8133634afa0ff7dadac90 --- /dev/null +++ b/my_pub_sub_tutorial/build/tmp/publishMavenJavaPublicationToMavenRepository/com/github/rosjava/rosjava_catkin_package_a/my_pub_sub_tutorial/resolver-status.properties @@ -0,0 +1,3 @@ +#NOTE: This is an internal implementation file, its format can be changed without prior notice. +#Thu Jul 08 12:45:54 CEST 2021 +maven-metadata-remote.xml.lastUpdated=1625741154780 diff --git a/my_pub_sub_tutorial/src/main/java/com/github/rosjava_catkin_package_a/my_pub_sub_tutorial/Listener.java b/my_pub_sub_tutorial/src/main/java/com/github/rosjava_catkin_package_a/my_pub_sub_tutorial/Listener.java new file mode 100644 index 0000000000000000000000000000000000000000..160cda7e7d99d06651356570b93e94e00d78c53d --- /dev/null +++ b/my_pub_sub_tutorial/src/main/java/com/github/rosjava_catkin_package_a/my_pub_sub_tutorial/Listener.java @@ -0,0 +1,85 @@ +/* + * Copyright (C) 2014 Sebastian Ebert. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +package com.github.rosjava.rosjava_catkin_package_a.my_pub_sub_tutorial; + +import de.tudresden.inf.st.pnml.jastadd.model.JavaHandler; +import de.tudresden.inf.st.pnml.jastadd.model.Marking; +import de.tudresden.inf.st.service.PetriNetInitService; +import de.tudresden.inf.st.service.PetriNetLoggingService; +import org.apache.commons.logging.Log; +import org.ros.message.MessageListener; +import org.ros.namespace.GraphName; +import org.ros.node.AbstractNodeMain; +import org.ros.node.ConnectedNode; +import org.ros.node.NodeMain; +import org.ros.node.topic.Subscriber; +//import rosjava_custom_srv.sample; + +import java.util.List; + +/** + * A simple {@link Subscriber} {@link NodeMain}. + */ +/*public class Listener extends AbstractNodeMain { + + @Override + public GraphName getDefaultNodeName() { + return GraphName.of("rosjava/listener"); + } + + @Override + public void onStart(ConnectedNode connectedNode) { + final Log log = connectedNode.getLog(); + Subscriber<rosjava_custom_srv.sample> subscriber = connectedNode.newSubscriber("chatter", rosjava_custom_srv.sample._TYPE); + subscriber.addMessageListener(new MessageListener<rosjava_custom_srv.sample>() { + @Override + public void onNewMessage(rosjava_custom_srv.sample message) { + log.info("I heard: \"" + message.getData() + "\""); + } + }); + } +}*/ + +/** + * A simple {@link Subscriber} {@link NodeMain}. +*/ +public class Listener extends AbstractNodeMain { + + @Override + public GraphName getDefaultNodeName() { + return GraphName.of("rosjava/listener"); + } + + @Override + public void onStart(ConnectedNode connectedNode) { + + JavaHandler javaHandler = JavaHandler.getInstance(); + List<Marking> markedGraphs = PetriNetInitService.initMarkedGraphs("src/rosjava_catkin_package_a/my_pub_sub_tutorial/src/main/resources/minimal.pnml"); + PetriNetLoggingService.printInputSignals(markedGraphs.get(0)); + PetriNetLoggingService.printOutputSignals(markedGraphs.get(0)); + markedGraphs.get(0).print(); + + final Log log = connectedNode.getLog(); + Subscriber<std_msgs.String> subscriber = connectedNode.newSubscriber("chatter", std_msgs.String._TYPE); + subscriber.addMessageListener(new MessageListener<std_msgs.String>() { + @Override + public void onNewMessage(std_msgs.String message) { + log.info("I heard: \"" + message.getData() + "\""); + } + }); + } +} \ No newline at end of file diff --git a/my_pub_sub_tutorial/src/main/java/com/github/rosjava_catkin_package_a/my_pub_sub_tutorial/Talker.java b/my_pub_sub_tutorial/src/main/java/com/github/rosjava_catkin_package_a/my_pub_sub_tutorial/Talker.java new file mode 100644 index 0000000000000000000000000000000000000000..706655c9a9d3f70853d3a924fe84d2b60c1b1db5 --- /dev/null +++ b/my_pub_sub_tutorial/src/main/java/com/github/rosjava_catkin_package_a/my_pub_sub_tutorial/Talker.java @@ -0,0 +1,100 @@ +/* + * Copyright (C) 2014 Sebastian Ebert. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +package com.github.rosjava.rosjava_catkin_package_a.my_pub_sub_tutorial; + +import org.ros.concurrent.CancellableLoop; +import org.ros.namespace.GraphName; +import org.ros.node.AbstractNodeMain; +import org.ros.node.ConnectedNode; +import org.ros.node.NodeMain; +import org.ros.node.topic.Publisher; +//import rosjava_custom_srv.sample; + + + +/** + * A simple {@link Publisher} {@link NodeMain}. + */ +/*public class Talker extends AbstractNodeMain { + + @Override + public GraphName getDefaultNodeName() { + return GraphName.of("rosjava/talker"); + } + + @Override + public void onStart(final ConnectedNode connectedNode) { + final Publisher<rosjava_custom_srv.sample> publisher = + connectedNode.newPublisher("chatter", rosjava_custom_srv.sample._TYPE); + // This CancellableLoop will be canceled automatically when the node shuts + // down. + connectedNode.executeCancellableLoop(new CancellableLoop() { + private String sendedString; + + @Override + protected void setup() { + sendedString = "Hello World!"; + } + + @Override + protected void loop() throws InterruptedException { + rosjava_custom_srv.sample str = publisher.newMessage(); + str.setData(sendedString); + publisher.publish(str); + // sequenceNumber++; + Thread.sleep(1000); + } + }); + } +}*/ + + +/** + * A simple {@link Publisher} {@link NodeMain}. + */ +public class Talker extends AbstractNodeMain { + + @Override + public GraphName getDefaultNodeName() { + return GraphName.of("rosjava/talker"); + } + + @Override + public void onStart(final ConnectedNode connectedNode) { + final Publisher<std_msgs.String> publisher = + connectedNode.newPublisher("chatter", std_msgs.String._TYPE); + // This CancellableLoop will be canceled automatically when the node shuts + // down. + connectedNode.executeCancellableLoop(new CancellableLoop() { + private int sequenceNumber; + + @Override + protected void setup() { + sequenceNumber = 0; + } + + @Override + protected void loop() throws InterruptedException { + std_msgs.String str = publisher.newMessage(); + str.setData("Hello world! " + sequenceNumber); + publisher.publish(str); + sequenceNumber++; + Thread.sleep(1000); + } + }); + } +} diff --git a/my_pub_sub_tutorial/src/main/resources/minimal.pnml b/my_pub_sub_tutorial/src/main/resources/minimal.pnml new file mode 100644 index 0000000000000000000000000000000000000000..02aac0252a55e8aeea785a415cbe4f61c9d6784c --- /dev/null +++ b/my_pub_sub_tutorial/src/main/resources/minimal.pnml @@ -0,0 +1,149 @@ +<pnml xmlns="http://www.pnml.org/version-2009/grammar/pnml"> + <net id="n-E2D0-BCF46-0" type ="http://www.pnml.org/version-2009/grammar/ptnet"> + <name> + <text>minimal</text> + </name> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.0.1"> + </toolspecific> + <page id="g-E2D0-BCF68-1"> + <place id="p-E2D0-BCF6F-2"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.0.1"> + <location>node-1</location> + <type>discretePlaceType</type> + <outputsignalbindings> + <outputsignalbinding> + <placeID>p-E2D0-BCF6F-2</placeID> + <outputsignalID>os2</outputsignalID> + <initialvalue>1</initialvalue> <!-- -1 = undefined --> + <outputmappings> + <equal> + <value>1</value> + <result>3</result> + </equal> + <equal> + <value>0</value> + <result>2</result> + </equal> + <threshold> + <value>6</value> + <result>0</result> + </threshold> + <range> + <upperbound>5</upperbound> + <lowerbound>3</lowerbound> + <result>1</result> + </range> + </outputmappings> + </outputsignalbinding> + </outputsignalbindings> + </toolspecific> + <name> + <text>p0</text> + <graphics> + <offset x="0" y="-10" /> + </graphics> + </name> + <initialMarking> + <text>1</text> + </initialMarking> + <graphics> + <position x="30" y="50"/> + </graphics> + </place> + <place id="p-E2D0-BCF9D-3"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.0.1"> + <location>node-1</location> + <type>discretePlaceType</type> + <outputsignalbindings> + <outputsignalbinding> + <placeID>p-E2D0-BCF9D-3</placeID> + <outputsignalID>os1</outputsignalID> + <initialvalue>4</initialvalue> <!-- -1 = undefined --> + <outputmappings> + <equal> + <value>1</value> + <result>1</result> + </equal> + <threshold> + <value>6</value> + <result>0</result> + </threshold> + <range> + <upperbound>5</upperbound> + <lowerbound>3</lowerbound> + <result>1</result> + </range> + </outputmappings> + </outputsignalbinding> + </outputsignalbindings> + </toolspecific> + <name> + <text>p1</text> + <graphics> + <offset x="0" y="-10" /> + </graphics> + </name> + <graphics> + <position x="635" y="90"/> + </graphics> + </place> + <transition id="t1"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.0.1"> + <location>node-1</location> + <type>discreteTransitionType</type> + <inputsignalbindings> + <inputsignalbinding> + <transitionID>t1</transitionID> + <inputsignalID>is1</inputsignalID> + <initialvalue>1</initialvalue> + </inputsignalbinding> + <inputsignalbinding> + <transitionID>t1</transitionID> + <inputsignalID>is3</inputsignalID> + <initialvalue>1</initialvalue> + </inputsignalbinding> + </inputsignalbindings> + </toolspecific> + <name> + <text>t0</text> + <graphics> + <offset x="0" y="0" /> + </graphics> + </name> + <graphics> + <position x="300" y="50"/> + </graphics> + </transition> + <transition id="t2"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.0.1"> + <location>node-1</location> + <type>discreteTransitionType</type> + <inputsignalbindings> + <inputsignalbinding> + <transitionID>t2</transitionID> + <inputsignalID>is2</inputsignalID> + <initialvalue>0</initialvalue> + </inputsignalbinding> + </inputsignalbindings> + </toolspecific> + <name> + <text>t1</text> + <graphics> + <offset x="0" y="0" /> + </graphics> + </name> + <graphics> + <position x="285" y="205"/> + </graphics> + </transition> + <arc id="e-E2D0-BCFCD-6" source="t2" target="p-E2D0-BCF6F-2"> + </arc> + <arc id="e-E2D0-BCFDB-7" source="p-E2D0-BCF9D-3" target="t2"> + </arc> + <arc id="e-E2D0-BCFF3-8" source="t1" target="p-E2D0-BCF9D-3"> + </arc> + <arc id="e-E2D0-BCFFB-9" source="p-E2D0-BCF6F-2" target="t1"> + </arc> + </page> + </net> +</pnml> \ No newline at end of file diff --git a/package.xml b/package.xml new file mode 100644 index 0000000000000000000000000000000000000000..2814c3c70c59d9a01205f81af77965f7a713c6fe --- /dev/null +++ b/package.xml @@ -0,0 +1,60 @@ +<?xml version="1.0"?> +<package format="2"> + <name>rosjava_catkin_package_a</name> + <version>0.1.0</version> + <description>The rosjava_catkin_package_a package</description> + + <!-- One maintainer tag required, multiple allowed, one person per tag --> + <!-- Example: --> + <!-- <maintainer email="jane.doe@example.com">Jane Doe</maintainer> --> + <maintainer email="sebastian@todo.todo">sebastian</maintainer> + + + <!-- One license tag required, multiple allowed, one license per tag --> + <!-- Commonly used license strings: --> + <!-- BSD, MIT, Boost Software License, GPLv2, GPLv3, LGPLv2.1, LGPLv3 --> + <license>Apache 2.0</license> + + + <!-- Url tags are optional, but multiple are allowed, one per tag --> + <!-- Optional attribute type can be: website, bugtracker, or repository --> + <!-- Example: --> + <!-- <url type="website">http://wiki.ros.org/rosjava_catkin_package_a</url> --> + + + <!-- Author tags are optional, multiple are allowed, one per tag --> + <!-- Authors do not have to be maintainers, but could be --> + <!-- Example: --> + <!-- <author email="jane.doe@example.com">Jane Doe</author> --> + + + <!-- The *depend tags are used to specify dependencies --> + <!-- Dependencies can be catkin packages or system dependencies --> + <!-- Examples: --> + <!-- Use depend as a shortcut for packages that are both build and exec dependencies --> + <!-- <depend>roscpp</depend> --> + <!-- Note that this is equivalent to the following: --> + <!-- <build_depend>roscpp</build_depend> --> + <!-- <exec_depend>roscpp</exec_depend> --> + <!-- Use build_depend for packages you need at compile time: --> + <!-- <build_depend>message_generation</build_depend> --> + <!-- Use build_export_depend for packages you need in order to build against this package: --> + <!-- <build_export_depend>message_generation</build_export_depend> --> + <!-- Use buildtool_depend for build tool packages: --> + <!-- <buildtool_depend>catkin</buildtool_depend> --> + <!-- Use exec_depend for packages you need at runtime: --> + <!-- <exec_depend>message_runtime</exec_depend> --> + <!-- Use test_depend for packages you need only for testing: --> + <!-- <test_depend>gtest</test_depend> --> + <!-- Use doc_depend for packages you need only for building documentation: --> + <!-- <doc_depend>doxygen</doc_depend> --> + <buildtool_depend>catkin</buildtool_depend> + <build_depend>rosjava_build_tools</build_depend> + + + <!-- The export tag contains other, unspecified, tags --> + <export> + <!-- Other tools can request additional information be placed here --> + + </export> +</package> diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000000000000000000000000000000000000..b3b9ff348c333ffd9bb87259a9daa9c81303fb79 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,17 @@ +/* + * Copyright (C) 2013 Sebastian Ebert + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +include 'my_pub_sub_tutorial'