diff --git a/src/uaspire_ground/.gitignore b/src/uaspire_ground/.gitignore new file mode 100644 index 0000000..07e6e47 --- /dev/null +++ b/src/uaspire_ground/.gitignore @@ -0,0 +1 @@ +/node_modules diff --git a/src/uaspire_ground/CMakeLists.txt b/src/uaspire_ground/CMakeLists.txt new file mode 100644 index 0000000..54ade09 --- /dev/null +++ b/src/uaspire_ground/CMakeLists.txt @@ -0,0 +1,40 @@ +# CMakeLists.txt file to configure build of uaspire_ground + +# Set minimum version of CMake required to build +cmake_minimum_required(VERSION 3.10 FATAL_ERROR) + +list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") + +# Find ament meta build system +find_package(ament_cmake REQUIRED) + +# Create uaspire_ground project +project(uaspire_ground + DESCRIPTION "UASPIRE Ground" + LANGUAGES) + +# Find required packages +find_package(uaspire_msgs REQUIRED) +find_package(Node REQUIRED) +find_package(Npm REQUIRED) + +# Create targets and add target dependencies +add_custom_target(build_ground ALL + COMMENT "Build ground station" + COMMAND ${NPM_EXECUTABLE} install + USES_TERMINAL + WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}") + +# Install files to correct locations +install(CODE " +execute_process( + COMMAND ${NPM_EXECUTABLE} install --prefix=${CMAKE_INSTALL_PREFIX} -g + RESULT_VARIABLE install_result + WORKING_DIRECTORY \"${CMAKE_SOURCE_DIR}\" +) +if (NOT install_result EQUAL 0) + message(FATAL_ERROR \"Error installing to prefix\") +endif() +") + +ament_package() diff --git a/src/uaspire_ground/build.js b/src/uaspire_ground/build.js new file mode 100644 index 0000000..3dd9658 --- /dev/null +++ b/src/uaspire_ground/build.js @@ -0,0 +1,13 @@ +const rosidl_gen = require("rclnodejs/rosidl_gen"); +const path = require("path"); + +const workspacePath = path.resolve(__dirname, "..", ".."); + +console.log(`Generating ROS NodeJS messages in workspace (${workspacePath})`) +rosidl_gen.generateInPath(workspacePath) + .then(() => { + console.log("Generated ROS NodeJS messages") + }, (err) => { + console.error("Error generating ROS NodeJS messages: ", err); + process.exit(1); + }); diff --git a/src/uaspire_ground/cmake/FindNode.cmake b/src/uaspire_ground/cmake/FindNode.cmake new file mode 100644 index 0000000..638c1d2 --- /dev/null +++ b/src/uaspire_ground/cmake/FindNode.cmake @@ -0,0 +1,37 @@ +if (Node_FOUND) + return() +endif() + +find_program (NODEJS_EXECUTABLE NAMES node nodejs + HINTS + ${NODE_DIR} $ENV{NODE_DIR} + PATH_SUFFIXES bin + DOC "Node.js interpreter") + +include (FindPackageHandleStandardArgs) + +if (NODEJS_EXECUTABLE) + execute_process(COMMAND ${NODEJS_EXECUTABLE} --version + OUTPUT_VARIABLE _VERSION + RESULT_VARIABLE _NODE_VERSION_RESULT) + if (NOT _NODE_VERSION_RESULT) + string (REPLACE "v" "" NODE_VERSION_STRING "${_VERSION}") + string (REPLACE "." ";" _VERSION_LIST "${NODE_VERSION_STRING}") + list (GET _VERSION_LIST 0 NODE_VERSION_MAJOR) + list (GET _VERSION_LIST 1 NODE_VERSION_MINOR) + list (GET _VERSION_LIST 2 NODE_VERSION_PATCH) + else () + set (NODE_VERSION_STRING "0.10.30") + set (NODE_VERSION_MAJOR "0") + set (NODE_VERSION_MINOR "10") + set (NODE_VERSION_PATCH "30") + message (STATUS "defaulted to node 0.10.30") + endif () + string (REGEX REPLACE "\n" "" NODE_VERSION_STRING ${NODE_VERSION_STRING}) + + mark_as_advanced (NODEJS_EXECUTABLE) +endif () + +find_package_handle_standard_args (Node + REQUIRED_VARS NODEJS_EXECUTABLE + VERSION_VAR NODE_VERSION_STRING) diff --git a/src/uaspire_ground/cmake/FindNpm.cmake b/src/uaspire_ground/cmake/FindNpm.cmake new file mode 100644 index 0000000..36a77e3 --- /dev/null +++ b/src/uaspire_ground/cmake/FindNpm.cmake @@ -0,0 +1,71 @@ +# FindNpm +# -------- +# +# Find npm +# +# This module finds an installed npm. It sets the following variables: +# +# NPM_FOUND - Set to true if npm is found +# NPM_DIR - The directory where npm is installed +# NPM_GLOBAL_NODE_MODULE_DIR - The global node_modules directory +# NPM_EXECUTABLE - The path to the npm executable +# NPM_VERSION - The version number of the npm executable + +find_program(NPM_EXECUTABLE NAMES npm HINTS /usr) + +# If npm was found, fill in the rest +if (NPM_EXECUTABLE) + # Set the global node_modules location + execute_process(COMMAND ${NPM_EXECUTABLE} root -g + OUTPUT_VARIABLE NPM_GLOBAL_NODE_MODULE_DIR + ERROR_VARIABLE NPM_root_g_error + RESULT_VARIABLE NPM_root_g_result_code) + # Remove and newlines + string (STRIP ${NPM_GLOBAL_NODE_MODULE_DIR} NPM_GLOBAL_NODE_MODULE_DIR) + if(NPM_root_g_result_code) + if(NPM_FIND_REQUIRED) + message(SEND_ERROR "Command \"${NPM_EXECUTABLE} root -g\" failed with output:\n${NPM_root_g_error}") + else () + message(STATUS "Command \"${NPM_EXECUTABLE} root -g\" failed with output:\n${NPM_root_g_error}") + endif () + endif() + unset(NPM_root_g_error) + unset(NPM_root_g_result_code) + + # Set the NPM dir + if (EXISTS "${NPM_GLOBAL_NODE_MODULE_DIR}/npm") + set(NPM_DIR "${NPM_GLOBAL_NODE_MODULE_DIR}/npm") + endif() + + # Set the VERSION + execute_process(COMMAND ${NPM_EXECUTABLE} -v + OUTPUT_VARIABLE NPM_VERSION + ERROR_VARIABLE NPM_version_error + RESULT_VARIABLE NPM_version_result_code) + + if(NPM_version_result_code) + if(NPM_FIND_REQUIRED) + message(SEND_ERROR "Command \"${NPM_EXECUTABLE} -v\" failed with output:\n${NPM_version_error}") + else() + message(STATUS "Command \"${NPM_EXECUTABLE} -v\" failed with output:\n${NPM_version_error}") + endif () + endif () + unset(NPM_version_error) + unset(NPM_version_result_code) + + # Remove and newlines + string (STRIP ${NPM_VERSION} NPM_VERSION) + + set (NPM_FOUND TRUE) +else() + # Fail on REQUIRED + if (Npm_FIND_REQUIRED) + message(SEND_ERROR "Failed to find npm executable") + endif() +endif () + +find_package_handle_standard_args(NPM + REQUIRED_VARS NPM_EXECUTABLE NPM_DIR + VERSION_VAR NPM_VERSION ) + +mark_as_advanced(NPM_DIR NPM_GLOBAL_NODE_MODULE_DIR NPM_EXECUTABLE NPM_VERSION) \ No newline at end of file diff --git a/src/uaspire_ground/index.js b/src/uaspire_ground/index.js new file mode 100755 index 0000000..af6c6ee --- /dev/null +++ b/src/uaspire_ground/index.js @@ -0,0 +1,19 @@ +#!/usr/bin/env node + +const rcl = require("rclnodejs"); + +async function start() { + await rcl.init(); + console.log("Initialized ROS client"); + + const MsgCommand = rcl.require('uaspire_msgs/msg/Command'); + const MsgSensors = rcl.require('uaspire_msgs/msg/Sensors'); + + const node = rcl.createNode("uaspire_ground"); + node.createSubscription(MsgSensors, "uaspire/sensors", (sensors) => { + console.log("Received sensors: ", sensors); + }); + rcl.spin(node); +} + +start().catch((err) => console.error("Unhandled error:", err)); diff --git a/src/uaspire_ground/package-lock.json b/src/uaspire_ground/package-lock.json new file mode 100644 index 0000000..7c06d73 --- /dev/null +++ b/src/uaspire_ground/package-lock.json @@ -0,0 +1,401 @@ +{ + "name": "uaspire_ground", + "version": "0.0.1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=" + }, + "array-index": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-index/-/array-index-1.0.0.tgz", + "integrity": "sha1-7FanSe4QPk4Ix5C5w1PfFgVbl/k=", + "requires": { + "debug": "^2.2.0", + "es6-symbol": "^3.0.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "commander": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.1.tgz", + "integrity": "sha512-UNgvDd+csKdc9GD4zjtkHKQbT8Aspt2jCBqNSPp53vAS0L1tS9sXB2TCEOPHJ7kt9bN/niWkYj8T3RQSoMXdSQ==" + }, + "compare-versions": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.5.1.tgz", + "integrity": "sha512-9fGPIB7C6AyM18CJJBHt5EnCZDG3oiTJYy0NjfIAGjKpzv0tkxWko7TNQHF5ymqm7IH03tqmeuBxtvD+Izh6mg==" + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.0.tgz", + "integrity": "sha512-ZbfWJq/wN1Z273o7mUSjILYqehAktR2NVoSrOukDkU9kg2v/Uv89yU4Cvz8seJeAmtN5oqiefKq8FPuXOboqLw==", + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "requires": { + "object-keys": "^1.0.12" + } + }, + "dot": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/dot/-/dot-1.1.2.tgz", + "integrity": "sha1-xzdwGfxOVQeYkosrmv62ar+h8vk=" + }, + "es5-ext": { + "version": "0.10.51", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.51.tgz", + "integrity": "sha512-oRpWzM2WcLHVKpnrcyB7OW8j/s67Ba04JCm0WnNv3RiABSvs7mrQlutB8DBv793gKcp0XENR8Il8WxGTlZ73gQ==", + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.1", + "next-tick": "^1.0.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.2.tgz", + "integrity": "sha512-/ZypxQsArlv+KHpGvng52/Iz8by3EQPxhmbuz8yFG89N/caTFBSbcXONDw0aMjy827gQg26XAjP4uXFvnfINmQ==", + "requires": { + "d": "^1.0.1", + "es5-ext": "^0.10.51" + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, + "foreachasync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/foreachasync/-/foreachasync-3.0.0.tgz", + "integrity": "sha1-VQKYfchxS+M5IJfzLgBxyd7gfPY=" + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "graceful-fs": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", + "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==" + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "int64-napi": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/int64-napi/-/int64-napi-1.0.1.tgz", + "integrity": "sha512-UPprIixcZdhdLobpKgHm6/HJD9VIR53JE5Fx93nJzgnX10hCxUd8nzOukxL2WDmjT2SWfz/VzDvk6qfPBLnEVg==", + "requires": { + "bindings": "^1.3.0" + } + }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==" + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "requires": { + "has": "^1.0.1" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "requires": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-is": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.1.tgz", + "integrity": "sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY=" + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "rclnodejs": { + "version": "git://github.com/amikhalev/rclnodejs.git#0af0c513386c83df4310b6fadd00f1a4c4baf0d9", + "from": "git://github.com/amikhalev/rclnodejs.git#fix-multiple-ament-paths", + "requires": { + "bindings": "^1.2.1", + "commander": "^3.0.1", + "compare-versions": "^3.1.0", + "debug": "^4.0.1", + "deep-equal": "^1.0.1", + "dot": "^1.1.2", + "fs-extra": "^8.0.1", + "int64-napi": "^1.0.1", + "mkdirp": "^0.5.1", + "mz": "^2.6.0", + "nan": "^2.8.0", + "ref": "^1.3.4", + "ref-array": "^1.2.0", + "ref-struct": "^1.1.0", + "ros2-actionlibjs": "^0.x.1", + "uuid": "^3.2.1", + "walk": "^2.3.9" + } + }, + "ref": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ref/-/ref-1.3.5.tgz", + "integrity": "sha512-2cBCniTtxcGUjDpvFfVpw323a83/0RLSGJJY5l5lcomZWhYpU2cuLdsvYqMixvsdLJ9+sTdzEkju8J8ZHDM2nA==", + "requires": { + "bindings": "1", + "debug": "2", + "nan": "2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "ref-array": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ref-array/-/ref-array-1.2.0.tgz", + "integrity": "sha1-u6hwFS1O4KvtFCGwYjkvCwGEKQw=", + "requires": { + "array-index": "1", + "debug": "2", + "ref": "1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "ref-struct": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ref-struct/-/ref-struct-1.1.0.tgz", + "integrity": "sha1-XV7mWtQc78Olxf60BYcmHkee3BM=", + "requires": { + "debug": "2", + "ref": "1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "regexp.prototype.flags": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz", + "integrity": "sha512-ztaw4M1VqgMwl9HlPpOuiYgItcHlunW0He2fE6eNfT6E/CF2FtYi9ofOYe4mKntstYk0Fyh/rDRBdS3AnxjlrA==", + "requires": { + "define-properties": "^1.1.2" + } + }, + "ros2-actionlibjs": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/ros2-actionlibjs/-/ros2-actionlibjs-0.0.3.tgz", + "integrity": "sha512-3P0HPQad6Jwg82sGaRxwy/MyjSaxlSA4aIBtsjUxUB2POnij/v0U3PYBs4WSTA5WxckFDi1/TJR9wn4fQ3ae+g==" + }, + "thenify": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.0.tgz", + "integrity": "sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=", + "requires": { + "any-promise": "^1.0.0" + } + }, + "thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", + "requires": { + "thenify": ">= 3.1.0 < 4" + } + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + }, + "uuid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", + "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==" + }, + "walk": { + "version": "2.3.14", + "resolved": "https://registry.npmjs.org/walk/-/walk-2.3.14.tgz", + "integrity": "sha512-5skcWAUmySj6hkBdH6B6+3ddMjVQYH5Qy9QGbPmN8kVmLteXk+yVXg+yfk1nbX30EYakahLrr8iPcCxJQSCBeg==", + "requires": { + "foreachasync": "^3.0.0" + } + } + } +} diff --git a/src/uaspire_ground/package.json b/src/uaspire_ground/package.json new file mode 100644 index 0000000..8b7417f --- /dev/null +++ b/src/uaspire_ground/package.json @@ -0,0 +1,18 @@ +{ + "name": "uaspire_ground", + "version": "0.0.1", + "description": "UASPIRE Ground", + "main": "index.js", + "bin": { + "uaspire_ground": "./index.js" + }, + "scripts": { + "postinstall": "node build.js", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "Alex Mikhalev (http://github.com/amikhalev)", + "license": "MIT", + "dependencies": { + "rclnodejs": "git://github.com/amikhalev/rclnodejs#fix-multiple-ament-paths" + } +} diff --git a/src/uaspire_ground/package.xml b/src/uaspire_ground/package.xml new file mode 100644 index 0000000..4d6fd4f --- /dev/null +++ b/src/uaspire_ground/package.xml @@ -0,0 +1,26 @@ + + + + uaspire_ground + 0.0.1 + UASPIRE Ground + Alex Mikhalev + Apache License 2.0 + Alex Mikhalev + + ament_cmake + + rcl + rcutils + rmw + rosidl_generator_c + + rcl + rcutils + rmw + rosidl_generator_c + + + ament_cmake + + \ No newline at end of file