commit a6919ec672f420ad2ff43af0169f24c90c1292e1 Author: zengxiaobin Date: Fri Nov 24 17:09:26 2023 +0800 迁移分支 diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..e01c098 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,104 @@ +#======================================================================= +# FILE: moos-ivp-extend/CMakeLists.txt +# DATE: 2012/07/24 +# INFO: Top-level CMakeLists.txt file for the moos-ivp-extend project +# NAME: Maintained by Mike Benjamin - Original setup by Christian Convey +# Chris Gagner, and tips borrowed from Dave Billin +#======================================================================= + +CMAKE_MINIMUM_REQUIRED(VERSION 2.8) +PROJECT( IVP_EXTEND ) + +set (CMAKE_CXX_STANDARD 11) + +#======================================================================= +# Set the output directories for the binary and library files +#======================================================================= + +GET_FILENAME_COMPONENT(IVP_EXTEND_BIN_DIR "${CMAKE_SOURCE_DIR}/bin" ABSOLUTE ) +GET_FILENAME_COMPONENT(IVP_EXTEND_LIB_DIR "${CMAKE_SOURCE_DIR}/lib" ABSOLUTE ) + +SET( LIBRARY_OUTPUT_PATH "${IVP_EXTEND_LIB_DIR}" CACHE PATH "" ) +SET( ARCHIVE_OUTPUT_DIRECTORY "${IVP_EXTEND_LIB_DIR}" CACHE PATH "" ) +SET( LIBRARY_OUTPUT_DIRECTORY "${IVP_EXTEND_LIB_DIR}" CACHE PATH "" ) + +SET( EXECUTABLE_OUTPUT_PATH "${IVP_EXTEND_BIN_DIR}" CACHE PATH "" ) +SET( RUNTIME_OUTPUT_DIRECTORY "${IVP_EXTEND_BIN_DIR}" CACHE PATH "" ) + +#======================================================================= +# Find MOOS +#======================================================================= +find_package(MOOS 10.0) +INCLUDE_DIRECTORIES(${MOOS_INCLUDE_DIRS}) + +#======================================================================= +# Find the "moos-ivp" base directory +#======================================================================= + +# Search for the moos-ivp folder +find_path( MOOSIVP_SOURCE_TREE_BASE + NAMES build-ivp.sh build-moos.sh configure-ivp.sh + PATHS "../moos-ivp" "../../moos-ivp" "../../moos-ivp/trunk/" "../moos-ivp/trunk/" + DOC "Base directory of the MOOS-IvP source tree" + NO_DEFAULT_PATH +) + +if (NOT MOOSIVP_SOURCE_TREE_BASE) + message("Please set MOOSIVP_SOURCE_TREE_BASE to ") + message("the location of the \"moos-ivp\" folder ") + return() +endif() + +#====================================================================== +# Specify where to find IvP's headers and libraries... +#====================================================================== + +FILE(GLOB IVP_INCLUDE_DIRS ${MOOSIVP_SOURCE_TREE_BASE}/ivp/src/lib_* ) +INCLUDE_DIRECTORIES(${IVP_INCLUDE_DIRS}) + +FILE(GLOB IVP_LIBRARY_DIRS ${MOOSIVP_SOURCE_TREE_BASE}/lib ) +LINK_DIRECTORIES(${IVP_LIBRARY_DIRS}) + +#====================================================================== +# Specify Compiler Flags +#====================================================================== +IF( ${WIN32} ) + #--------------------------------------------- + # Windows Compiler Flags + #--------------------------------------------- + IF(MSVC) + # Flags for Microsoft Visual Studio + SET( WALL_ON OFF CACHE BOOL + "tell me about all compiler warnings (-Wall) ") + IF(WALL_ON) + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") + ENDIF(WALL_ON) + ELSE(MSVC) + # Other Windows compilers go here + ENDIF(MSVC) + +ELSE( ${WIN32} ) + #--------------------------------------------- + # Linux and Apple Compiler Flags + #--------------------------------------------- + # Force -fPIC because gcc complains when we don't use it with x86_64 code. + # Note sure why: -fPIC should only be needed for shared objects, and + # AFAIK, CMake gets that right when building shared objects. -CJC + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -g -Wdeprecated-declarations") + IF(CMAKE_COMPILER_IS_GNUCXX) + # Flags for the GNU C++ Compiler + SET( WALL_ON OFF CACHE BOOL + "tell me about all compiler warnings (-Wall) ") + IF(WALL_ON) + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall" -C++11) + ENDIF( WALL_ON) + ELSE(CMAKE_COMPILER_IS_GNUCXX) + + ENDIF(CMAKE_COMPILER_IS_GNUCXX) + +ENDIF( ${WIN32} ) + +#======================================================================= +# Add Subdirectories +#======================================================================= +ADD_SUBDIRECTORY( src ) diff --git a/README.md b/README.md new file mode 100644 index 0000000..923b3b3 --- /dev/null +++ b/README.md @@ -0,0 +1,26 @@ +# moos-ivp-pi + +基于MOOS-ivp框架下150UUV本体控制软件 + +# 目录结构 + +src/ : 程序源文件目录 + +launch / : 系统启动存放位置 + +mission/ : 测试用任务文件 + +setting/ : 系统启动配置文件存放位置 + +build/ : 编译文件存放位置 + +bin/ : 程序执行文件存放位置 + + +# 文件说明 + +./build.sh : 编译脚本 + +./clean.sh : 清除编译生成文件 + + diff --git a/alpha.moos b/alpha.moos new file mode 100644 index 0000000..d65fb50 --- /dev/null +++ b/alpha.moos @@ -0,0 +1,147 @@ + +ServerHost = localhost +ServerPort = 9000 +Community = zjk +MOOSTimeWarp = 1 + +// Forest Lake +//这两个参数没有pMarineViewer就会闪退 +LatOrigin = 43.825300 +LongOrigin = -70.330400 + +//------------------------------------------ +// Antler configuration block +ProcessConfig = ANTLER +{ + MSBetweenLaunches = 200 + + Run = MOOSDB @ NewConsole = false + //Run = pLogger @ NewConsole = false + Run = pMarineViewer @ NewConsole = false + Run = pRealm @ NewConsole = false + Run = pShare @ NewConsole = false +} +ProcessConfig = pShare +{ + AppTick = 2 + CommsTick = 2 + + input = route = localhost:8085 + output = src_name=APPCAST_REQ, route=10.25.0.230:8081 + + //输出有两个端口,8081和8082,选择用1或者2 + //发送消息看以下格式 + //output = src_name=Y, dest_name=B, route=host:port + + output = src_name=uMission_action_cmd,route=10.25.0.230:8081 + output = src_name=uMotion_config_cmd,route=10.25.0.230:8081 +} + +ProcessConfig = pLogger +{ + AppTick = 8 + CommsTick = 8 + + AsyncLog = true + + // For variables that are published in a bundle on their first post, + // explicitly declare their logging request + //Log = IVPHELM_LIFE_EVENT @ 0 NOSYNC + //Log = REPORT @ 0 NOSYNC + //Log = BHV_SETTINGS @ 0 NOSYNC + Log = OPREGION_RESET @ 0 NOSYNC + + LogAuxSrc = true + WildCardLogging = true + WildCardOmitPattern = *_STATUS + WildCardOmitPattern = DB_VARSUMMARY + WildCardOmitPattern = DB_RWSUMMARY + WildCardExclusionLog = true +} +//------------------------------------------ +// pMarineViewer config block + +ProcessConfig = pMarineViewer +{ + AppTick = 4 + CommsTick = 4 + + tiff_file = forrest19.tif + //tiff_file = MIT_SP.tif + vehicles_name_mode = names+depth //+shortmode + + + set_pan_x = -90 + set_pan_y = -280 + zoom = 0.65 + vehicle_shape_scale = 1.5 + hash_delta = 50 + hash_shade = 0.22 + hash_viewable = true + + trails_point_size = 1 + + //op_vertex = x=-83, y=-47, lwidth=1,lcolor=yellow,looped=true,group=moa + //op_vertex = x=-46.4, y=-129.2, lwidth=1,lcolor=yellow,looped=true,group=moa + //op_vertex = x=94.6, y=-62.2, lwidth=1,lcolor=yellow,looped=true,group=moa + //op_vertex = x=58, y=20, lwidth=1,lcolor=yellow,looped=true,group=moa + + // Appcast configuration + appcast_height = 75 + appcast_width = 30 + appcast_viewable = true + appcast_color_scheme = indigo + nodes_font_size = xlarge + procs_font_size = xlarge + appcast_font_size = large + + // datum_viewable = true + // datum_size = 18 + // gui_size = small + + // left_context[survey-point] = DEPLOY=true + // left_context[survey-point] = MOOS_MANUAL_OVERRIDE=false + // left_context[survey-point] = RETURN=false + + right_context[return] = DEPLOY=true + right_context[return] = MOOS_MANUAL_OVERRIDE=false + right_context[return] = RETURN=false + + scope = RETURN + scope = WPT_STAT + scope = VIEW_SEGLIST + scope = VIEW_POINT + scope = VIEW_POLYGON + scope = MVIEWER_LCLICK + scope = MVIEWER_RCLICK + + button_one = START # uMission_action_cmd={"taskName":"east_waypt_survey","action":"start"} + button_two = STOP # uMission_action_cmd={"taskName":"east_waypt_survey","action":"stop"} + button_three = ReConfig # uMotion_config_cmd = true + button_four = SendSecurityZone # SendSaftRules = true + + + action = MENU_KEY=deploy # DEPLOY = true # RETURN = false + action+ = MENU_KEY=deploy # MOOS_MANUAL_OVERRIDE=false + action = RETURN=true + action = UPDATES_RETURN=speed=1.4 + cmd = label=DEPLOY, var=DEPLOY, sval=true, receivers=all:$(VNAMES) + cmd = label=DEPLOY, var=MOOS_MANUAL_OVERRIDE, sval=false, receivers=all:$(VNAMES) + cmd = label=DEPLOY, var=AVOID, sval=true, receivers=all:$(VNAMES) + cmd = label=DEPLOY, var=RETURN, sval=false, receivers=all:$(VNAMES) + cmd = label=DEPLOY, var=STATION_KEEP, sval=false, receivers=all:$(VNAMES) + + cmd = label=RETURN, var=RETURN, sval=true, receivers=all:$(VNAMES) + cmd = label=RETURN, var=STATION_KEEP, sval=false, receivers=all:$(VNAMES) + + cmd = label=PERMUTE, var=UTS_FORWARD, dval=0, receivers=shore + + cmd = label=STATION, var=STATION_KEEP, sval=true, receivers=all:$(VNAMES), color=pink + + cmd = label=LOITER-FAST, var=UP_LOITER, sval=speed=2.8, receivers=all:$(VNAMES) + cmd = label=LOITER-SLOW, var=UP_LOITER, sval=speed=1.4, receivers=all:$(VNAMES) + + cmd = label=LOITER-CLOCKWISE-TRUE, var=UP_LOITER, sval=clockwise=true, receivers=all:$(VNAMES) + cmd = label=LOITER-CLOCKWISE-FALSE, var=UP_LOITER, sval=clockwise=false, receivers=all:$(VNAMES) + cmd = label=LOITER-CLOCKWISE-BEST, var=UP_LOITER, sval=clockwise=false, receivers=all:$(VNAMES) +} \ No newline at end of file diff --git a/bin/pBoardSupportComm b/bin/pBoardSupportComm new file mode 100755 index 0000000..66a78f8 Binary files /dev/null and b/bin/pBoardSupportComm differ diff --git a/bin/pClientViewer b/bin/pClientViewer new file mode 100755 index 0000000..aa3e262 Binary files /dev/null and b/bin/pClientViewer differ diff --git a/bin/pDataManagement b/bin/pDataManagement new file mode 100755 index 0000000..a0c330a Binary files /dev/null and b/bin/pDataManagement differ diff --git a/bin/pEmulator b/bin/pEmulator new file mode 100755 index 0000000..c26e34b Binary files /dev/null and b/bin/pEmulator differ diff --git a/bin/pFaultHandle b/bin/pFaultHandle new file mode 100755 index 0000000..de8b9af Binary files /dev/null and b/bin/pFaultHandle differ diff --git a/bin/pMotionControler b/bin/pMotionControler new file mode 100755 index 0000000..fa682a2 Binary files /dev/null and b/bin/pMotionControler differ diff --git a/bin/pStateManagement b/bin/pStateManagement new file mode 100755 index 0000000..cdf41c6 Binary files /dev/null and b/bin/pStateManagement differ diff --git a/bin/pSurfaceSupportComm b/bin/pSurfaceSupportComm new file mode 100755 index 0000000..96c81bf Binary files /dev/null and b/bin/pSurfaceSupportComm differ diff --git a/bin/pTaskManagement b/bin/pTaskManagement new file mode 100755 index 0000000..976925f Binary files /dev/null and b/bin/pTaskManagement differ diff --git a/bin/pTaskSend b/bin/pTaskSend new file mode 100755 index 0000000..fb23343 Binary files /dev/null and b/bin/pTaskSend differ diff --git a/bin/read.txt b/bin/read.txt new file mode 100644 index 0000000..50a5388 --- /dev/null +++ b/bin/read.txt @@ -0,0 +1 @@ +可执行文件存放目录,程序列表如下: \ No newline at end of file diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..e96a58a --- /dev/null +++ b/build.sh @@ -0,0 +1,46 @@ +#!/bin/bash + +INVOCATION_ABS_DIR=`pwd` +BUILD_TYPE="None" +CMD_LINE_ARGS="" + +#------------------------------------------------------------------- +# Part 1: Check for and handle command-line arguments +#------------------------------------------------------------------- +for ARGI; do + if [ "${ARGI}" = "--help" -o "${ARGI}" = "-h" ] ; then + printf "%s [SWITCHES] \n" $0 + printf "Switches: \n" + printf " --help, -h \n" + printf " --debug, -d \n" + printf " --release, -r \n" + printf "Notes: \n" + printf " (1) All other command line args will be passed as args \n" + printf " to \"make\" when it is eventually invoked. \n" + printf " (2) For example -k will continue making when/if a failure \n" + printf " is encountered in building one of the subdirectories. \n" + printf " (3) For example -j2 will utilize a 2nd core in the build \n" + printf " if your machine has two cores. -j4 etc for quad core. \n" + exit 0; + elif [ "${ARGI}" = "--debug" -o "${ARGI}" = "-d" ] ; then + BUILD_TYPE="Debug" + elif [ "${ARGI}" = "--release" -o "${ARGI}" = "-r" ] ; then + BUILD_TYPE="Release" + else + CMD_LINE_ARGS=$CMD_LINE_ARGS" "$ARGI + fi +done + +#------------------------------------------------------------------- +# Part 2: Invoke the call to make in the build directory +#------------------------------------------------------------------- + +mkdir -p build +cd build + +cmake -DCMAKE_BUILD_TYPE=${BUILD_TYPE} ../ + +make ${CMD_LINE_ARGS} +cd ${INVOCATION_ABS_DIR} + + diff --git a/build/.cmake/api/v1/query/client-vscode/query.json b/build/.cmake/api/v1/query/client-vscode/query.json new file mode 100644 index 0000000..82bb964 --- /dev/null +++ b/build/.cmake/api/v1/query/client-vscode/query.json @@ -0,0 +1 @@ +{"requests":[{"kind":"cache","version":2},{"kind":"codemodel","version":2},{"kind":"toolchains","version":1},{"kind":"cmakeFiles","version":1}]} \ No newline at end of file diff --git a/build/.cmake/api/v1/reply/cache-v2-dd2c937f009d9a652f28.json b/build/.cmake/api/v1/reply/cache-v2-dd2c937f009d9a652f28.json new file mode 100644 index 0000000..39850c5 --- /dev/null +++ b/build/.cmake/api/v1/reply/cache-v2-dd2c937f009d9a652f28.json @@ -0,0 +1,1443 @@ +{ + "entries" : + [ + { + "name" : "ARCHIVE_OUTPUT_DIRECTORY", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "" + } + ], + "type" : "PATH", + "value" : "/home/ben/project/moos-ivp-pi/lib" + }, + { + "name" : "CMAKE_ADDR2LINE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/addr2line" + }, + { + "name" : "CMAKE_AR", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/ar" + }, + { + "name" : "CMAKE_BUILD_TYPE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel ..." + } + ], + "type" : "STRING", + "value" : "None" + }, + { + "name" : "CMAKE_CACHEFILE_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "This is the directory where this CMakeCache.txt was created" + } + ], + "type" : "INTERNAL", + "value" : "/home/ben/project/moos-ivp-pi/build" + }, + { + "name" : "CMAKE_CACHE_MAJOR_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Major version of cmake used to create the current loaded cache" + } + ], + "type" : "INTERNAL", + "value" : "3" + }, + { + "name" : "CMAKE_CACHE_MINOR_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Minor version of cmake used to create the current loaded cache" + } + ], + "type" : "INTERNAL", + "value" : "16" + }, + { + "name" : "CMAKE_CACHE_PATCH_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Patch version of cmake used to create the current loaded cache" + } + ], + "type" : "INTERNAL", + "value" : "3" + }, + { + "name" : "CMAKE_COLOR_MAKEFILE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Enable/Disable color output during build." + } + ], + "type" : "BOOL", + "value" : "ON" + }, + { + "name" : "CMAKE_COMMAND", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to CMake executable." + } + ], + "type" : "INTERNAL", + "value" : "/usr/bin/cmake" + }, + { + "name" : "CMAKE_CPACK_COMMAND", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to cpack program executable." + } + ], + "type" : "INTERNAL", + "value" : "/usr/bin/cpack" + }, + { + "name" : "CMAKE_CTEST_COMMAND", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to ctest program executable." + } + ], + "type" : "INTERNAL", + "value" : "/usr/bin/ctest" + }, + { + "name" : "CMAKE_CXX_COMPILER", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "CXX compiler" + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/c++" + }, + { + "name" : "CMAKE_CXX_COMPILER_AR", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "A wrapper around 'ar' adding the appropriate '--plugin' option for the GCC compiler" + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/gcc-ar-9" + }, + { + "name" : "CMAKE_CXX_COMPILER_RANLIB", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "A wrapper around 'ranlib' adding the appropriate '--plugin' option for the GCC compiler" + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/gcc-ranlib-9" + }, + { + "name" : "CMAKE_CXX_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the CXX compiler during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_CXX_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the CXX compiler during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "-g" + }, + { + "name" : "CMAKE_CXX_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the CXX compiler during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "-Os -DNDEBUG" + }, + { + "name" : "CMAKE_CXX_FLAGS_NONE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the CXX compiler during NONE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_CXX_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the CXX compiler during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "-O3 -DNDEBUG" + }, + { + "name" : "CMAKE_CXX_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the CXX compiler during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "-O2 -g -DNDEBUG" + }, + { + "name" : "CMAKE_C_COMPILER", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "C compiler" + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/cc" + }, + { + "name" : "CMAKE_C_COMPILER_AR", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "A wrapper around 'ar' adding the appropriate '--plugin' option for the GCC compiler" + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/gcc-ar-9" + }, + { + "name" : "CMAKE_C_COMPILER_RANLIB", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "A wrapper around 'ranlib' adding the appropriate '--plugin' option for the GCC compiler" + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/gcc-ranlib-9" + }, + { + "name" : "CMAKE_C_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the C compiler during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_C_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the C compiler during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "-g" + }, + { + "name" : "CMAKE_C_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the C compiler during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "-Os -DNDEBUG" + }, + { + "name" : "CMAKE_C_FLAGS_NONE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the C compiler during NONE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_C_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the C compiler during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "-O3 -DNDEBUG" + }, + { + "name" : "CMAKE_C_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the C compiler during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "-O2 -g -DNDEBUG" + }, + { + "name" : "CMAKE_DLLTOOL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "CMAKE_DLLTOOL-NOTFOUND" + }, + { + "name" : "CMAKE_EXECUTABLE_FORMAT", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Executable file format" + } + ], + "type" : "INTERNAL", + "value" : "ELF" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_NONE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during NONE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXPORT_COMPILE_COMMANDS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Enable/Disable output of compile commands during generation." + } + ], + "type" : "BOOL", + "value" : "OFF" + }, + { + "name" : "CMAKE_EXTRA_GENERATOR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of external makefile project generator." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_GENERATOR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of generator." + } + ], + "type" : "INTERNAL", + "value" : "Unix Makefiles" + }, + { + "name" : "CMAKE_GENERATOR_INSTANCE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Generator instance identifier." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_GENERATOR_PLATFORM", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of generator platform." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_GENERATOR_TOOLSET", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of generator toolset." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_HAVE_LIBC_PTHREAD", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Test CMAKE_HAVE_LIBC_PTHREAD" + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_HAVE_PTHREAD_H", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Have include pthread.h" + } + ], + "type" : "INTERNAL", + "value" : "1" + }, + { + "name" : "CMAKE_HOME_DIRECTORY", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Source directory with the top level CMakeLists.txt file for this project" + } + ], + "type" : "INTERNAL", + "value" : "/home/ben/project/moos-ivp-pi" + }, + { + "name" : "CMAKE_INSTALL_PREFIX", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Install path prefix, prepended onto install directories." + } + ], + "type" : "PATH", + "value" : "/usr/local" + }, + { + "name" : "CMAKE_INSTALL_SO_NO_EXE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Install .so files without execute permission." + } + ], + "type" : "INTERNAL", + "value" : "1" + }, + { + "name" : "CMAKE_LINKER", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/ld" + }, + { + "name" : "CMAKE_MAKE_PROGRAM", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/make" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_NONE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during NONE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_NM", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/nm" + }, + { + "name" : "CMAKE_NUMBER_OF_MAKEFILES", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "number of local generators" + } + ], + "type" : "INTERNAL", + "value" : "12" + }, + { + "name" : "CMAKE_OBJCOPY", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/objcopy" + }, + { + "name" : "CMAKE_OBJDUMP", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/objdump" + }, + { + "name" : "CMAKE_PLATFORM_INFO_INITIALIZED", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Platform information initialized" + } + ], + "type" : "INTERNAL", + "value" : "1" + }, + { + "name" : "CMAKE_PROJECT_DESCRIPTION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "" + }, + { + "name" : "CMAKE_PROJECT_HOMEPAGE_URL", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "" + }, + { + "name" : "CMAKE_PROJECT_NAME", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "IVP_EXTEND" + }, + { + "name" : "CMAKE_RANLIB", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/ranlib" + }, + { + "name" : "CMAKE_READELF", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/readelf" + }, + { + "name" : "CMAKE_ROOT", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to CMake installation." + } + ], + "type" : "INTERNAL", + "value" : "/usr/share/cmake-3.16" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_NONE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during NONE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SKIP_INSTALL_RPATH", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "If set, runtime paths are not added when installing shared libraries, but are added when building." + } + ], + "type" : "BOOL", + "value" : "NO" + }, + { + "name" : "CMAKE_SKIP_RPATH", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "If set, runtime paths are not added when using shared libraries." + } + ], + "type" : "BOOL", + "value" : "NO" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_NONE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during NONE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STRIP", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/strip" + }, + { + "name" : "CMAKE_UNAME", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "uname command" + } + ], + "type" : "INTERNAL", + "value" : "/usr/bin/uname" + }, + { + "name" : "CMAKE_VERBOSE_MAKEFILE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make. This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo." + } + ], + "type" : "BOOL", + "value" : "FALSE" + }, + { + "name" : "DUNE_INCLUDE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to a file." + } + ], + "type" : "PATH", + "value" : "/usr/local/include" + }, + { + "name" : "DUNE_LIB", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to a library." + } + ], + "type" : "FILEPATH", + "value" : "/usr/local/lib/libdune-core.a" + }, + { + "name" : "EXECUTABLE_OUTPUT_PATH", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "" + } + ], + "type" : "PATH", + "value" : "/home/ben/project/moos-ivp-pi/bin" + }, + { + "name" : "FIND_PACKAGE_MESSAGE_DETAILS_MOOS", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Details about finding MOOS" + } + ], + "type" : "INTERNAL", + "value" : "[/home/ben/project/moos-ivp/build/MOOS/MOOSCore/MOOSTargets.cmake][v(10.0)]" + }, + { + "name" : "FIND_PACKAGE_MESSAGE_DETAILS_Threads", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Details about finding Threads" + } + ], + "type" : "INTERNAL", + "value" : "[TRUE][v()]" + }, + { + "name" : "GeographicLib_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "The directory containing a CMake configuration file for GeographicLib." + } + ], + "type" : "PATH", + "value" : "/usr/local/lib/cmake/GeographicLib" + }, + { + "name" : "IVP_EXTEND_BINARY_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "/home/ben/project/moos-ivp-pi/build" + }, + { + "name" : "IVP_EXTEND_SOURCE_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "/home/ben/project/moos-ivp-pi" + }, + { + "name" : "LIBRARY_OUTPUT_DIRECTORY", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "" + } + ], + "type" : "PATH", + "value" : "/home/ben/project/moos-ivp-pi/lib" + }, + { + "name" : "LIBRARY_OUTPUT_PATH", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "" + } + ], + "type" : "PATH", + "value" : "/home/ben/project/moos-ivp-pi/lib" + }, + { + "name" : "MOOSIVP_SOURCE_TREE_BASE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Base directory of the MOOS-IvP source tree" + } + ], + "type" : "PATH", + "value" : "/home/ben/project/moos-ivp" + }, + { + "name" : "MOOS_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "The directory containing a CMake configuration file for MOOS." + } + ], + "type" : "PATH", + "value" : "/home/ben/project/moos-ivp/build/MOOS/MOOSCore" + }, + { + "name" : "RUNTIME_OUTPUT_DIRECTORY", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "" + } + ], + "type" : "PATH", + "value" : "/home/ben/project/moos-ivp-pi/bin" + }, + { + "name" : "THREADS_HAVE_PTHREAD_ARG", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Result of TRY_COMPILE" + } + ], + "type" : "INTERNAL", + "value" : "TRUE" + }, + { + "name" : "WALL_ON", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "tell me about all compiler warnings (-Wall) " + } + ], + "type" : "BOOL", + "value" : "OFF" + } + ], + "kind" : "cache", + "version" : + { + "major" : 2, + "minor" : 0 + } +} diff --git a/build/.cmake/api/v1/reply/cmakeFiles-v1-a2b0be97f994224a37d6.json b/build/.cmake/api/v1/reply/cmakeFiles-v1-a2b0be97f994224a37d6.json new file mode 100644 index 0000000..4a980ad --- /dev/null +++ b/build/.cmake/api/v1/reply/cmakeFiles-v1-a2b0be97f994224a37d6.json @@ -0,0 +1,263 @@ +{ + "inputs" : + [ + { + "path" : "CMakeLists.txt" + }, + { + "isGenerated" : true, + "path" : "build/CMakeFiles/3.16.3/CMakeSystem.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.16/Modules/CMakeSystemSpecificInitialize.cmake" + }, + { + "isGenerated" : true, + "path" : "build/CMakeFiles/3.16.3/CMakeCCompiler.cmake" + }, + { + "isGenerated" : true, + "path" : "build/CMakeFiles/3.16.3/CMakeCXXCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.16/Modules/CMakeSystemSpecificInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.16/Modules/CMakeGenericSystem.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.16/Modules/CMakeInitializeConfigs.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.16/Modules/Platform/Linux.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.16/Modules/Platform/UnixPaths.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.16/Modules/CMakeCInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.16/Modules/CMakeLanguageInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.16/Modules/Compiler/GNU-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.16/Modules/Compiler/GNU.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.16/Modules/Compiler/CMakeCommonCompilerMacros.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.16/Modules/Internal/CMakeCheckCompilerFlag.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.16/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.16/Modules/Platform/Linux-GNU-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.16/Modules/Platform/Linux-GNU.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.16/Modules/CMakeCommonLanguageInclude.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.16/Modules/CMakeCXXInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.16/Modules/CMakeLanguageInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.16/Modules/Compiler/GNU-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.16/Modules/Compiler/GNU.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.16/Modules/Platform/Linux-GNU-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.16/Modules/Platform/Linux-GNU.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.16/Modules/CMakeCommonLanguageInclude.cmake" + }, + { + "isExternal" : true, + "path" : "/home/ben/project/moos-ivp/build/MOOS/MOOSCore/MOOSConfigVersion.cmake" + }, + { + "isExternal" : true, + "path" : "/home/ben/project/moos-ivp/build/MOOS/MOOSCore/MOOSConfig.cmake" + }, + { + "isExternal" : true, + "path" : "/home/ben/project/moos-ivp/build/MOOS/MOOSCore/MOOSTargets.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.16/Modules/FindPackageMessage.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.16/Modules/FindThreads.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.16/Modules/CheckLibraryExists.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.16/Modules/CheckIncludeFile.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.16/Modules/CheckCSourceCompiles.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.16/Modules/FindPackageMessage.cmake" + }, + { + "path" : "src/CMakeLists.txt" + }, + { + "path" : "src/pBoardSupportComm/CMakeLists.txt" + }, + { + "isExternal" : true, + "path" : "/usr/local/lib/cmake/GeographicLib/geographiclib-config-version.cmake" + }, + { + "isExternal" : true, + "path" : "/usr/local/lib/cmake/GeographicLib/geographiclib-config.cmake" + }, + { + "isExternal" : true, + "path" : "/usr/local/lib/cmake/GeographicLib/geographiclib-targets.cmake" + }, + { + "isExternal" : true, + "path" : "/usr/local/lib/cmake/GeographicLib/geographiclib-targets-release.cmake" + }, + { + "path" : "src/pSurfaceSupportComm/CMakeLists.txt" + }, + { + "isExternal" : true, + "path" : "/usr/local/lib/cmake/GeographicLib/geographiclib-config-version.cmake" + }, + { + "isExternal" : true, + "path" : "/usr/local/lib/cmake/GeographicLib/geographiclib-config.cmake" + }, + { + "isExternal" : true, + "path" : "/usr/local/lib/cmake/GeographicLib/geographiclib-targets.cmake" + }, + { + "isExternal" : true, + "path" : "/usr/local/lib/cmake/GeographicLib/geographiclib-targets-release.cmake" + }, + { + "path" : "src/pClientViewer/CMakeLists.txt" + }, + { + "path" : "src/pDataManagement/CMakeLists.txt" + }, + { + "path" : "src/pTaskManagement/CMakeLists.txt" + }, + { + "path" : "src/pTaskSend/CMakeLists.txt" + }, + { + "path" : "src/pMotionControler/CMakeLists.txt" + }, + { + "path" : "src/pEmulator/CMakeLists.txt" + }, + { + "path" : "src/pFaultHandle/CMakeLists.txt" + }, + { + "path" : "src/pStateManagement/CMakeLists.txt" + } + ], + "kind" : "cmakeFiles", + "paths" : + { + "build" : "/home/ben/project/moos-ivp-pi/build", + "source" : "/home/ben/project/moos-ivp-pi" + }, + "version" : + { + "major" : 1, + "minor" : 0 + } +} diff --git a/build/.cmake/api/v1/reply/codemodel-v2-e5f65b12d81cb1175a33.json b/build/.cmake/api/v1/reply/codemodel-v2-e5f65b12d81cb1175a33.json new file mode 100644 index 0000000..893adcd --- /dev/null +++ b/build/.cmake/api/v1/reply/codemodel-v2-e5f65b12d81cb1175a33.json @@ -0,0 +1,305 @@ +{ + "configurations" : + [ + { + "directories" : + [ + { + "build" : ".", + "childIndexes" : + [ + 1 + ], + "minimumCMakeVersion" : + { + "string" : "2.8" + }, + "projectIndex" : 0, + "source" : "." + }, + { + "build" : "src", + "childIndexes" : + [ + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ], + "minimumCMakeVersion" : + { + "string" : "2.8" + }, + "parentIndex" : 0, + "projectIndex" : 0, + "source" : "src" + }, + { + "build" : "src/pBoardSupportComm", + "minimumCMakeVersion" : + { + "string" : "2.8" + }, + "parentIndex" : 1, + "projectIndex" : 0, + "source" : "src/pBoardSupportComm", + "targetIndexes" : + [ + 0 + ] + }, + { + "build" : "src/pSurfaceSupportComm", + "minimumCMakeVersion" : + { + "string" : "2.8" + }, + "parentIndex" : 1, + "projectIndex" : 0, + "source" : "src/pSurfaceSupportComm", + "targetIndexes" : + [ + 7 + ] + }, + { + "build" : "src/pClientViewer", + "minimumCMakeVersion" : + { + "string" : "2.8" + }, + "parentIndex" : 1, + "projectIndex" : 0, + "source" : "src/pClientViewer", + "targetIndexes" : + [ + 1 + ] + }, + { + "build" : "src/pDataManagement", + "minimumCMakeVersion" : + { + "string" : "2.8" + }, + "parentIndex" : 1, + "projectIndex" : 0, + "source" : "src/pDataManagement", + "targetIndexes" : + [ + 2 + ] + }, + { + "build" : "src/pTaskManagement", + "minimumCMakeVersion" : + { + "string" : "2.8" + }, + "parentIndex" : 1, + "projectIndex" : 0, + "source" : "src/pTaskManagement", + "targetIndexes" : + [ + 8 + ] + }, + { + "build" : "src/pTaskSend", + "minimumCMakeVersion" : + { + "string" : "2.8" + }, + "parentIndex" : 1, + "projectIndex" : 0, + "source" : "src/pTaskSend", + "targetIndexes" : + [ + 9 + ] + }, + { + "build" : "src/pMotionControler", + "minimumCMakeVersion" : + { + "string" : "2.8" + }, + "parentIndex" : 1, + "projectIndex" : 0, + "source" : "src/pMotionControler", + "targetIndexes" : + [ + 5 + ] + }, + { + "build" : "src/pEmulator", + "minimumCMakeVersion" : + { + "string" : "2.8" + }, + "parentIndex" : 1, + "projectIndex" : 0, + "source" : "src/pEmulator", + "targetIndexes" : + [ + 3 + ] + }, + { + "build" : "src/pFaultHandle", + "minimumCMakeVersion" : + { + "string" : "2.8" + }, + "parentIndex" : 1, + "projectIndex" : 0, + "source" : "src/pFaultHandle", + "targetIndexes" : + [ + 4 + ] + }, + { + "build" : "src/pStateManagement", + "minimumCMakeVersion" : + { + "string" : "2.8" + }, + "parentIndex" : 1, + "projectIndex" : 0, + "source" : "src/pStateManagement", + "targetIndexes" : + [ + 6 + ] + } + ], + "name" : "None", + "projects" : + [ + { + "directoryIndexes" : + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ], + "name" : "IVP_EXTEND", + "targetIndexes" : + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9 + ] + } + ], + "targets" : + [ + { + "directoryIndex" : 2, + "id" : "pBoardSupportComm::@1146bd68d6ff676d7cdb", + "jsonFile" : "target-pBoardSupportComm-None-6b6714a772e692ce7bda.json", + "name" : "pBoardSupportComm", + "projectIndex" : 0 + }, + { + "directoryIndex" : 4, + "id" : "pClientViewer::@cc500851234cd734e978", + "jsonFile" : "target-pClientViewer-None-637c837c32b7f1c4a3f8.json", + "name" : "pClientViewer", + "projectIndex" : 0 + }, + { + "directoryIndex" : 5, + "id" : "pDataManagement::@034b47bbed8ab925014e", + "jsonFile" : "target-pDataManagement-None-3fb8b0228e67220a29b1.json", + "name" : "pDataManagement", + "projectIndex" : 0 + }, + { + "directoryIndex" : 9, + "id" : "pEmulator::@1b38eb9e6c0705d3ecdb", + "jsonFile" : "target-pEmulator-None-e8b09174b873ffc7a0a4.json", + "name" : "pEmulator", + "projectIndex" : 0 + }, + { + "directoryIndex" : 10, + "id" : "pFaultHandle::@42119e8a9462daeca695", + "jsonFile" : "target-pFaultHandle-None-96d2d6ef9203623ec32c.json", + "name" : "pFaultHandle", + "projectIndex" : 0 + }, + { + "directoryIndex" : 8, + "id" : "pMotionControler::@cc1346ef0ed31955aa90", + "jsonFile" : "target-pMotionControler-None-3f183e81cc43357193c0.json", + "name" : "pMotionControler", + "projectIndex" : 0 + }, + { + "directoryIndex" : 11, + "id" : "pStateManagement::@cdde0d278f39903bd0cc", + "jsonFile" : "target-pStateManagement-None-12c0626db4f6cdfc3816.json", + "name" : "pStateManagement", + "projectIndex" : 0 + }, + { + "directoryIndex" : 3, + "id" : "pSurfaceSupportComm::@af7dafcb6523990d05a0", + "jsonFile" : "target-pSurfaceSupportComm-None-5c1b066d62accb72956a.json", + "name" : "pSurfaceSupportComm", + "projectIndex" : 0 + }, + { + "directoryIndex" : 6, + "id" : "pTaskManagement::@c7868433878d507bf89f", + "jsonFile" : "target-pTaskManagement-None-97473a05e92e62137b49.json", + "name" : "pTaskManagement", + "projectIndex" : 0 + }, + { + "directoryIndex" : 7, + "id" : "pTaskSend::@d8178882102cb10e2e3f", + "jsonFile" : "target-pTaskSend-None-3a4f500e73d7f1e47a5a.json", + "name" : "pTaskSend", + "projectIndex" : 0 + } + ] + } + ], + "kind" : "codemodel", + "paths" : + { + "build" : "/home/ben/project/moos-ivp-pi/build", + "source" : "/home/ben/project/moos-ivp-pi" + }, + "version" : + { + "major" : 2, + "minor" : 0 + } +} diff --git a/build/.cmake/api/v1/reply/index-2023-11-24T08-55-39-0072.json b/build/.cmake/api/v1/reply/index-2023-11-24T08-55-39-0072.json new file mode 100644 index 0000000..27a9d91 --- /dev/null +++ b/build/.cmake/api/v1/reply/index-2023-11-24T08-55-39-0072.json @@ -0,0 +1,116 @@ +{ + "cmake" : + { + "generator" : + { + "name" : "Unix Makefiles" + }, + "paths" : + { + "cmake" : "/usr/bin/cmake", + "cpack" : "/usr/bin/cpack", + "ctest" : "/usr/bin/ctest", + "root" : "/usr/share/cmake-3.16" + }, + "version" : + { + "isDirty" : false, + "major" : 3, + "minor" : 16, + "patch" : 3, + "string" : "3.16.3", + "suffix" : "" + } + }, + "objects" : + [ + { + "jsonFile" : "codemodel-v2-e5f65b12d81cb1175a33.json", + "kind" : "codemodel", + "version" : + { + "major" : 2, + "minor" : 0 + } + }, + { + "jsonFile" : "cache-v2-dd2c937f009d9a652f28.json", + "kind" : "cache", + "version" : + { + "major" : 2, + "minor" : 0 + } + }, + { + "jsonFile" : "cmakeFiles-v1-a2b0be97f994224a37d6.json", + "kind" : "cmakeFiles", + "version" : + { + "major" : 1, + "minor" : 0 + } + } + ], + "reply" : + { + "client-vscode" : + { + "query.json" : + { + "requests" : + [ + { + "kind" : "cache", + "version" : 2 + }, + { + "kind" : "codemodel", + "version" : 2 + }, + { + "kind" : "toolchains", + "version" : 1 + }, + { + "kind" : "cmakeFiles", + "version" : 1 + } + ], + "responses" : + [ + { + "jsonFile" : "cache-v2-dd2c937f009d9a652f28.json", + "kind" : "cache", + "version" : + { + "major" : 2, + "minor" : 0 + } + }, + { + "jsonFile" : "codemodel-v2-e5f65b12d81cb1175a33.json", + "kind" : "codemodel", + "version" : + { + "major" : 2, + "minor" : 0 + } + }, + { + "error" : "unknown request kind 'toolchains'" + }, + { + "jsonFile" : "cmakeFiles-v1-a2b0be97f994224a37d6.json", + "kind" : "cmakeFiles", + "version" : + { + "major" : 1, + "minor" : 0 + } + } + ] + } + } + } +} diff --git a/build/.cmake/api/v1/reply/target-pBoardSupportComm-None-6b6714a772e692ce7bda.json b/build/.cmake/api/v1/reply/target-pBoardSupportComm-None-6b6714a772e692ce7bda.json new file mode 100644 index 0000000..756abbc --- /dev/null +++ b/build/.cmake/api/v1/reply/target-pBoardSupportComm-None-6b6714a772e692ce7bda.json @@ -0,0 +1,378 @@ +{ + "artifacts" : + [ + { + "path" : "/home/ben/project/moos-ivp-pi/bin/pBoardSupportComm" + } + ], + "backtrace" : 1, + "backtraceGraph" : + { + "commands" : + [ + "ADD_EXECUTABLE", + "LINK_DIRECTORIES", + "TARGET_LINK_LIBRARIES", + "INCLUDE_DIRECTORIES", + "include_directories" + ], + "files" : + [ + "src/pBoardSupportComm/CMakeLists.txt", + "CMakeLists.txt", + "src/CMakeLists.txt" + ], + "nodes" : + [ + { + "file" : 0 + }, + { + "command" : 0, + "file" : 0, + "line" : 27, + "parent" : 0 + }, + { + "file" : 1 + }, + { + "command" : 1, + "file" : 1, + "line" : 60, + "parent" : 2 + }, + { + "command" : 2, + "file" : 0, + "line" : 32, + "parent" : 0 + }, + { + "command" : 3, + "file" : 1, + "line" : 57, + "parent" : 2 + }, + { + "file" : 2 + }, + { + "command" : 3, + "file" : 2, + "line" : 13, + "parent" : 6 + }, + { + "command" : 4, + "file" : 0, + "line" : 20, + "parent" : 0 + }, + { + "command" : 4, + "file" : 0, + "line" : 29, + "parent" : 0 + }, + { + "command" : 3, + "file" : 1, + "line" : 32, + "parent" : 2 + } + ] + }, + "compileGroups" : + [ + { + "compileCommandFragments" : + [ + { + "fragment" : " -fPIC -g -Wdeprecated-declarations " + }, + { + "backtrace" : 4, + "fragment" : "-pthread" + }, + { + "fragment" : "-std=gnu++11" + } + ], + "includes" : + [ + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_apputil" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_behaviors" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_behaviors-colregs" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_behaviors-marine" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_bhvutil" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_contacts" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_encounters" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_evalutil" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_genutil" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_geometry" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_helmivp" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ipfview" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ivpbuild" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ivpcore" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ivpsolve" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_logic" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_logutils" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_manifest" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_marine_pid" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_marineview" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_mbutil" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_obstacles" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_polar" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_realm" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ucommand" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ufield" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_zaicview" + }, + { + "backtrace" : 7, + "path" : "/*" + }, + { + "backtrace" : 7, + "path" : "/DUNE" + }, + { + "backtrace" : 8, + "path" : "/home/ben/project/moos-ivp-pi/src/pBoardSupportComm" + }, + { + "backtrace" : 9, + "path" : "/usr/include/jsoncpp" + }, + { + "backtrace" : 10, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/include" + }, + { + "backtrace" : 10, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/App/include" + }, + { + "backtrace" : 10, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Comms/include" + }, + { + "backtrace" : 10, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/DB/include" + }, + { + "backtrace" : 10, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Utils/include" + }, + { + "backtrace" : 10, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Thirdparty/PocoBits/include" + }, + { + "backtrace" : 10, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Thirdparty/getpot/include" + }, + { + "backtrace" : 10, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Thirdparty/AppCasting/include" + } + ], + "language" : "CXX", + "sourceIndexes" : + [ + 0, + 1, + 2 + ] + } + ], + "id" : "pBoardSupportComm::@1146bd68d6ff676d7cdb", + "link" : + { + "commandFragments" : + [ + { + "fragment" : "-fPIC -g -Wdeprecated-declarations", + "role" : "flags" + }, + { + "fragment" : "-rdynamic", + "role" : "flags" + }, + { + "backtrace" : 3, + "fragment" : "-L/home/ben/project/moos-ivp/lib", + "role" : "libraryPath" + }, + { + "fragment" : "-Wl,-rpath,/home/ben/project/moos-ivp/lib:/usr/local/lib", + "role" : "libraries" + }, + { + "backtrace" : 4, + "fragment" : "/home/ben/project/moos-ivp/build/MOOS/MOOSCore/lib/libMOOS.a", + "role" : "libraries" + }, + { + "fragment" : "/usr/local/lib/libdune-core.a", + "role" : "libraries" + }, + { + "backtrace" : 4, + "fragment" : "/usr/local/lib/libGeographicLib.so.26.0.0", + "role" : "libraries" + }, + { + "fragment" : "-lmbutil", + "role" : "libraries" + }, + { + "fragment" : "-lm", + "role" : "libraries" + }, + { + "fragment" : "-lpthread", + "role" : "libraries" + }, + { + "fragment" : "-ljsoncpp", + "role" : "libraries" + }, + { + "fragment" : "-pthread", + "role" : "libraries" + } + ], + "language" : "CXX" + }, + "name" : "pBoardSupportComm", + "nameOnDisk" : "pBoardSupportComm", + "paths" : + { + "build" : "src/pBoardSupportComm", + "source" : "src/pBoardSupportComm" + }, + "sourceGroups" : + [ + { + "name" : "Source Files", + "sourceIndexes" : + [ + 0, + 1, + 2 + ] + } + ], + "sources" : + [ + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "src/pBoardSupportComm/BoardSupportComm.cpp", + "sourceGroupIndex" : 0 + }, + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "src/pBoardSupportComm/BoardSupportComm_Info.cpp", + "sourceGroupIndex" : 0 + }, + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "src/pBoardSupportComm/main.cpp", + "sourceGroupIndex" : 0 + } + ], + "type" : "EXECUTABLE" +} diff --git a/build/.cmake/api/v1/reply/target-pClientViewer-None-637c837c32b7f1c4a3f8.json b/build/.cmake/api/v1/reply/target-pClientViewer-None-637c837c32b7f1c4a3f8.json new file mode 100644 index 0000000..dd09951 --- /dev/null +++ b/build/.cmake/api/v1/reply/target-pClientViewer-None-637c837c32b7f1c4a3f8.json @@ -0,0 +1,389 @@ +{ + "artifacts" : + [ + { + "path" : "/home/ben/project/moos-ivp-pi/bin/pClientViewer" + } + ], + "backtrace" : 1, + "backtraceGraph" : + { + "commands" : + [ + "ADD_EXECUTABLE", + "LINK_DIRECTORIES", + "link_directories", + "TARGET_LINK_LIBRARIES", + "INCLUDE_DIRECTORIES", + "include_directories" + ], + "files" : + [ + "src/pClientViewer/CMakeLists.txt", + "CMakeLists.txt", + "src/CMakeLists.txt" + ], + "nodes" : + [ + { + "file" : 0 + }, + { + "command" : 0, + "file" : 0, + "line" : 32, + "parent" : 0 + }, + { + "file" : 1 + }, + { + "command" : 1, + "file" : 1, + "line" : 60, + "parent" : 2 + }, + { + "command" : 2, + "file" : 0, + "line" : 30, + "parent" : 0 + }, + { + "command" : 3, + "file" : 0, + "line" : 34, + "parent" : 0 + }, + { + "command" : 4, + "file" : 1, + "line" : 57, + "parent" : 2 + }, + { + "file" : 2 + }, + { + "command" : 4, + "file" : 2, + "line" : 13, + "parent" : 7 + }, + { + "command" : 5, + "file" : 0, + "line" : 25, + "parent" : 0 + }, + { + "command" : 5, + "file" : 0, + "line" : 29, + "parent" : 0 + }, + { + "command" : 4, + "file" : 1, + "line" : 32, + "parent" : 2 + } + ] + }, + "compileGroups" : + [ + { + "compileCommandFragments" : + [ + { + "fragment" : " -fPIC -g -Wdeprecated-declarations " + }, + { + "backtrace" : 5, + "fragment" : "-pthread" + }, + { + "fragment" : "-std=gnu++11" + } + ], + "includes" : + [ + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_apputil" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_behaviors" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_behaviors-colregs" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_behaviors-marine" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_bhvutil" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_contacts" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_encounters" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_evalutil" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_genutil" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_geometry" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_helmivp" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ipfview" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ivpbuild" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ivpcore" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ivpsolve" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_logic" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_logutils" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_manifest" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_marine_pid" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_marineview" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_mbutil" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_obstacles" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_polar" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_realm" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ucommand" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ufield" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_zaicview" + }, + { + "backtrace" : 8, + "path" : "/*" + }, + { + "backtrace" : 8, + "path" : "/DUNE" + }, + { + "backtrace" : 9, + "path" : "/home/ben/project/moos-ivp-pi/src/pClientViewer" + }, + { + "backtrace" : 10, + "path" : "/usr/include/jsoncpp" + }, + { + "backtrace" : 11, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/include" + }, + { + "backtrace" : 11, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/App/include" + }, + { + "backtrace" : 11, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Comms/include" + }, + { + "backtrace" : 11, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/DB/include" + }, + { + "backtrace" : 11, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Utils/include" + }, + { + "backtrace" : 11, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Thirdparty/PocoBits/include" + }, + { + "backtrace" : 11, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Thirdparty/getpot/include" + }, + { + "backtrace" : 11, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Thirdparty/AppCasting/include" + } + ], + "language" : "CXX", + "sourceIndexes" : + [ + 0, + 1, + 2 + ] + } + ], + "id" : "pClientViewer::@cc500851234cd734e978", + "link" : + { + "commandFragments" : + [ + { + "fragment" : "-fPIC -g -Wdeprecated-declarations", + "role" : "flags" + }, + { + "fragment" : "-rdynamic", + "role" : "flags" + }, + { + "backtrace" : 3, + "fragment" : "-L/home/ben/project/moos-ivp/lib", + "role" : "libraryPath" + }, + { + "backtrace" : 4, + "fragment" : "-L/usr/local/lib", + "role" : "libraryPath" + }, + { + "fragment" : "-Wl,-rpath,/home/ben/project/moos-ivp/lib:/usr/local/lib", + "role" : "libraries" + }, + { + "backtrace" : 5, + "fragment" : "/home/ben/project/moos-ivp/build/MOOS/MOOSCore/lib/libMOOS.a", + "role" : "libraries" + }, + { + "fragment" : "-ldl", + "role" : "libraries" + }, + { + "fragment" : "/usr/local/lib/libdune-core.a", + "role" : "libraries" + }, + { + "fragment" : "-lmbutil", + "role" : "libraries" + }, + { + "fragment" : "-lm", + "role" : "libraries" + }, + { + "fragment" : "-lpthread", + "role" : "libraries" + }, + { + "fragment" : "-ljsoncpp", + "role" : "libraries" + }, + { + "fragment" : "-pthread", + "role" : "libraries" + } + ], + "language" : "CXX" + }, + "name" : "pClientViewer", + "nameOnDisk" : "pClientViewer", + "paths" : + { + "build" : "src/pClientViewer", + "source" : "src/pClientViewer" + }, + "sourceGroups" : + [ + { + "name" : "Source Files", + "sourceIndexes" : + [ + 0, + 1, + 2 + ] + } + ], + "sources" : + [ + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "src/pClientViewer/ClientViewer.cpp", + "sourceGroupIndex" : 0 + }, + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "src/pClientViewer/ClientViewer_Info.cpp", + "sourceGroupIndex" : 0 + }, + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "src/pClientViewer/main.cpp", + "sourceGroupIndex" : 0 + } + ], + "type" : "EXECUTABLE" +} diff --git a/build/.cmake/api/v1/reply/target-pDataManagement-None-3fb8b0228e67220a29b1.json b/build/.cmake/api/v1/reply/target-pDataManagement-None-3fb8b0228e67220a29b1.json new file mode 100644 index 0000000..11dfadf --- /dev/null +++ b/build/.cmake/api/v1/reply/target-pDataManagement-None-3fb8b0228e67220a29b1.json @@ -0,0 +1,389 @@ +{ + "artifacts" : + [ + { + "path" : "/home/ben/project/moos-ivp-pi/bin/pDataManagement" + } + ], + "backtrace" : 1, + "backtraceGraph" : + { + "commands" : + [ + "ADD_EXECUTABLE", + "LINK_DIRECTORIES", + "link_directories", + "TARGET_LINK_LIBRARIES", + "INCLUDE_DIRECTORIES", + "include_directories" + ], + "files" : + [ + "src/pDataManagement/CMakeLists.txt", + "CMakeLists.txt", + "src/CMakeLists.txt" + ], + "nodes" : + [ + { + "file" : 0 + }, + { + "command" : 0, + "file" : 0, + "line" : 27, + "parent" : 0 + }, + { + "file" : 1 + }, + { + "command" : 1, + "file" : 1, + "line" : 60, + "parent" : 2 + }, + { + "command" : 2, + "file" : 0, + "line" : 25, + "parent" : 0 + }, + { + "command" : 3, + "file" : 0, + "line" : 28, + "parent" : 0 + }, + { + "command" : 4, + "file" : 1, + "line" : 57, + "parent" : 2 + }, + { + "file" : 2 + }, + { + "command" : 4, + "file" : 2, + "line" : 13, + "parent" : 7 + }, + { + "command" : 5, + "file" : 0, + "line" : 20, + "parent" : 0 + }, + { + "command" : 5, + "file" : 0, + "line" : 24, + "parent" : 0 + }, + { + "command" : 4, + "file" : 1, + "line" : 32, + "parent" : 2 + } + ] + }, + "compileGroups" : + [ + { + "compileCommandFragments" : + [ + { + "fragment" : " -fPIC -g -Wdeprecated-declarations " + }, + { + "backtrace" : 5, + "fragment" : "-pthread" + }, + { + "fragment" : "-std=gnu++11" + } + ], + "includes" : + [ + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_apputil" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_behaviors" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_behaviors-colregs" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_behaviors-marine" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_bhvutil" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_contacts" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_encounters" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_evalutil" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_genutil" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_geometry" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_helmivp" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ipfview" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ivpbuild" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ivpcore" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ivpsolve" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_logic" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_logutils" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_manifest" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_marine_pid" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_marineview" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_mbutil" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_obstacles" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_polar" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_realm" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ucommand" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ufield" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_zaicview" + }, + { + "backtrace" : 8, + "path" : "/*" + }, + { + "backtrace" : 8, + "path" : "/DUNE" + }, + { + "backtrace" : 9, + "path" : "/home/ben/project/moos-ivp-pi/src/pDataManagement" + }, + { + "backtrace" : 10, + "path" : "/usr/include/jsoncpp" + }, + { + "backtrace" : 11, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/include" + }, + { + "backtrace" : 11, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/App/include" + }, + { + "backtrace" : 11, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Comms/include" + }, + { + "backtrace" : 11, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/DB/include" + }, + { + "backtrace" : 11, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Utils/include" + }, + { + "backtrace" : 11, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Thirdparty/PocoBits/include" + }, + { + "backtrace" : 11, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Thirdparty/getpot/include" + }, + { + "backtrace" : 11, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Thirdparty/AppCasting/include" + } + ], + "language" : "CXX", + "sourceIndexes" : + [ + 0, + 1, + 2 + ] + } + ], + "id" : "pDataManagement::@034b47bbed8ab925014e", + "link" : + { + "commandFragments" : + [ + { + "fragment" : "-fPIC -g -Wdeprecated-declarations", + "role" : "flags" + }, + { + "fragment" : "-rdynamic", + "role" : "flags" + }, + { + "backtrace" : 3, + "fragment" : "-L/home/ben/project/moos-ivp/lib", + "role" : "libraryPath" + }, + { + "backtrace" : 4, + "fragment" : "-L/usr/local/lib", + "role" : "libraryPath" + }, + { + "fragment" : "-Wl,-rpath,/home/ben/project/moos-ivp/lib:/usr/local/lib", + "role" : "libraries" + }, + { + "backtrace" : 5, + "fragment" : "/home/ben/project/moos-ivp/build/MOOS/MOOSCore/lib/libMOOS.a", + "role" : "libraries" + }, + { + "fragment" : "-ldl", + "role" : "libraries" + }, + { + "fragment" : "/usr/local/lib/libdune-core.a", + "role" : "libraries" + }, + { + "fragment" : "-lmbutil", + "role" : "libraries" + }, + { + "fragment" : "-lm", + "role" : "libraries" + }, + { + "fragment" : "-lpthread", + "role" : "libraries" + }, + { + "fragment" : "-ljsoncpp", + "role" : "libraries" + }, + { + "fragment" : "-pthread", + "role" : "libraries" + } + ], + "language" : "CXX" + }, + "name" : "pDataManagement", + "nameOnDisk" : "pDataManagement", + "paths" : + { + "build" : "src/pDataManagement", + "source" : "src/pDataManagement" + }, + "sourceGroups" : + [ + { + "name" : "Source Files", + "sourceIndexes" : + [ + 0, + 1, + 2 + ] + } + ], + "sources" : + [ + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "src/pDataManagement/DataManagement.cpp", + "sourceGroupIndex" : 0 + }, + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "src/pDataManagement/DataManagement_Info.cpp", + "sourceGroupIndex" : 0 + }, + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "src/pDataManagement/main.cpp", + "sourceGroupIndex" : 0 + } + ], + "type" : "EXECUTABLE" +} diff --git a/build/.cmake/api/v1/reply/target-pEmulator-None-e8b09174b873ffc7a0a4.json b/build/.cmake/api/v1/reply/target-pEmulator-None-e8b09174b873ffc7a0a4.json new file mode 100644 index 0000000..8550782 --- /dev/null +++ b/build/.cmake/api/v1/reply/target-pEmulator-None-e8b09174b873ffc7a0a4.json @@ -0,0 +1,374 @@ +{ + "artifacts" : + [ + { + "path" : "/home/ben/project/moos-ivp-pi/bin/pEmulator" + } + ], + "backtrace" : 1, + "backtraceGraph" : + { + "commands" : + [ + "ADD_EXECUTABLE", + "LINK_DIRECTORIES", + "TARGET_LINK_LIBRARIES", + "INCLUDE_DIRECTORIES" + ], + "files" : + [ + "src/pEmulator/CMakeLists.txt", + "CMakeLists.txt", + "src/CMakeLists.txt" + ], + "nodes" : + [ + { + "file" : 0 + }, + { + "command" : 0, + "file" : 0, + "line" : 9, + "parent" : 0 + }, + { + "file" : 1 + }, + { + "command" : 1, + "file" : 1, + "line" : 60, + "parent" : 2 + }, + { + "command" : 2, + "file" : 0, + "line" : 11, + "parent" : 0 + }, + { + "command" : 3, + "file" : 1, + "line" : 57, + "parent" : 2 + }, + { + "file" : 2 + }, + { + "command" : 3, + "file" : 2, + "line" : 13, + "parent" : 6 + }, + { + "command" : 3, + "file" : 1, + "line" : 32, + "parent" : 2 + } + ] + }, + "compileGroups" : + [ + { + "compileCommandFragments" : + [ + { + "fragment" : " -fPIC -g -Wdeprecated-declarations " + }, + { + "backtrace" : 4, + "fragment" : "-pthread" + }, + { + "fragment" : "-std=gnu++11" + } + ], + "includes" : + [ + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_apputil" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_behaviors" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_behaviors-colregs" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_behaviors-marine" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_bhvutil" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_contacts" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_encounters" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_evalutil" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_genutil" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_geometry" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_helmivp" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ipfview" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ivpbuild" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ivpcore" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ivpsolve" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_logic" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_logutils" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_manifest" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_marine_pid" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_marineview" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_mbutil" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_obstacles" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_polar" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_realm" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ucommand" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ufield" + }, + { + "backtrace" : 5, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_zaicview" + }, + { + "backtrace" : 7, + "path" : "/*" + }, + { + "backtrace" : 7, + "path" : "/DUNE" + }, + { + "backtrace" : 8, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/include" + }, + { + "backtrace" : 8, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/App/include" + }, + { + "backtrace" : 8, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Comms/include" + }, + { + "backtrace" : 8, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/DB/include" + }, + { + "backtrace" : 8, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Utils/include" + }, + { + "backtrace" : 8, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Thirdparty/PocoBits/include" + }, + { + "backtrace" : 8, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Thirdparty/getpot/include" + }, + { + "backtrace" : 8, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Thirdparty/AppCasting/include" + } + ], + "language" : "CXX", + "sourceIndexes" : + [ + 0, + 2, + 4 + ] + } + ], + "id" : "pEmulator::@1b38eb9e6c0705d3ecdb", + "link" : + { + "commandFragments" : + [ + { + "fragment" : "-fPIC -g -Wdeprecated-declarations", + "role" : "flags" + }, + { + "fragment" : "-rdynamic", + "role" : "flags" + }, + { + "backtrace" : 3, + "fragment" : "-L/home/ben/project/moos-ivp/lib", + "role" : "libraryPath" + }, + { + "fragment" : "-Wl,-rpath,/home/ben/project/moos-ivp/lib", + "role" : "libraries" + }, + { + "backtrace" : 4, + "fragment" : "/home/ben/project/moos-ivp/build/MOOS/MOOSCore/lib/libMOOS.a", + "role" : "libraries" + }, + { + "fragment" : "-lcontacts", + "role" : "libraries" + }, + { + "fragment" : "-lgeometry", + "role" : "libraries" + }, + { + "fragment" : "-lapputil", + "role" : "libraries" + }, + { + "fragment" : "-lmbutil", + "role" : "libraries" + }, + { + "fragment" : "-lm", + "role" : "libraries" + }, + { + "fragment" : "-lpthread", + "role" : "libraries" + }, + { + "fragment" : "-pthread", + "role" : "libraries" + } + ], + "language" : "CXX" + }, + "name" : "pEmulator", + "nameOnDisk" : "pEmulator", + "paths" : + { + "build" : "src/pEmulator", + "source" : "src/pEmulator" + }, + "sourceGroups" : + [ + { + "name" : "Source Files", + "sourceIndexes" : + [ + 0, + 2, + 4 + ] + }, + { + "name" : "Header Files", + "sourceIndexes" : + [ + 1, + 3 + ] + } + ], + "sources" : + [ + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "src/pEmulator/Emulator.cpp", + "sourceGroupIndex" : 0 + }, + { + "backtrace" : 1, + "path" : "src/pEmulator/Emulator.hpp", + "sourceGroupIndex" : 1 + }, + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "src/pEmulator/_150server.cpp", + "sourceGroupIndex" : 0 + }, + { + "backtrace" : 1, + "path" : "src/pEmulator/_150server.hpp", + "sourceGroupIndex" : 1 + }, + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "src/pEmulator/main.cpp", + "sourceGroupIndex" : 0 + } + ], + "type" : "EXECUTABLE" +} diff --git a/build/.cmake/api/v1/reply/target-pFaultHandle-None-96d2d6ef9203623ec32c.json b/build/.cmake/api/v1/reply/target-pFaultHandle-None-96d2d6ef9203623ec32c.json new file mode 100644 index 0000000..96376c7 --- /dev/null +++ b/build/.cmake/api/v1/reply/target-pFaultHandle-None-96d2d6ef9203623ec32c.json @@ -0,0 +1,387 @@ +{ + "artifacts" : + [ + { + "path" : "/home/ben/project/moos-ivp-pi/bin/pFaultHandle" + } + ], + "backtrace" : 1, + "backtraceGraph" : + { + "commands" : + [ + "ADD_EXECUTABLE", + "LINK_DIRECTORIES", + "link_directories", + "TARGET_LINK_LIBRARIES", + "INCLUDE_DIRECTORIES", + "include_directories" + ], + "files" : + [ + "src/pFaultHandle/CMakeLists.txt", + "CMakeLists.txt", + "src/CMakeLists.txt" + ], + "nodes" : + [ + { + "file" : 0 + }, + { + "command" : 0, + "file" : 0, + "line" : 21, + "parent" : 0 + }, + { + "file" : 1 + }, + { + "command" : 1, + "file" : 1, + "line" : 60, + "parent" : 2 + }, + { + "command" : 2, + "file" : 0, + "line" : 19, + "parent" : 0 + }, + { + "command" : 3, + "file" : 0, + "line" : 23, + "parent" : 0 + }, + { + "command" : 4, + "file" : 1, + "line" : 57, + "parent" : 2 + }, + { + "file" : 2 + }, + { + "command" : 4, + "file" : 2, + "line" : 13, + "parent" : 7 + }, + { + "command" : 5, + "file" : 0, + "line" : 18, + "parent" : 0 + }, + { + "command" : 4, + "file" : 1, + "line" : 32, + "parent" : 2 + } + ] + }, + "compileGroups" : + [ + { + "compileCommandFragments" : + [ + { + "fragment" : " -fPIC -g -Wdeprecated-declarations " + }, + { + "backtrace" : 5, + "fragment" : "-pthread" + }, + { + "fragment" : "-std=gnu++11" + } + ], + "includes" : + [ + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_apputil" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_behaviors" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_behaviors-colregs" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_behaviors-marine" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_bhvutil" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_contacts" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_encounters" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_evalutil" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_genutil" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_geometry" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_helmivp" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ipfview" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ivpbuild" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ivpcore" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ivpsolve" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_logic" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_logutils" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_manifest" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_marine_pid" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_marineview" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_mbutil" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_obstacles" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_polar" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_realm" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ucommand" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ufield" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_zaicview" + }, + { + "backtrace" : 8, + "path" : "/*" + }, + { + "backtrace" : 8, + "path" : "/DUNE" + }, + { + "backtrace" : 9, + "path" : "/usr/local/include/jsoncpp" + }, + { + "backtrace" : 10, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/include" + }, + { + "backtrace" : 10, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/App/include" + }, + { + "backtrace" : 10, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Comms/include" + }, + { + "backtrace" : 10, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/DB/include" + }, + { + "backtrace" : 10, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Utils/include" + }, + { + "backtrace" : 10, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Thirdparty/PocoBits/include" + }, + { + "backtrace" : 10, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Thirdparty/getpot/include" + }, + { + "backtrace" : 10, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Thirdparty/AppCasting/include" + } + ], + "language" : "CXX", + "sourceIndexes" : + [ + 0, + 1, + 2 + ] + } + ], + "id" : "pFaultHandle::@42119e8a9462daeca695", + "link" : + { + "commandFragments" : + [ + { + "fragment" : "-fPIC -g -Wdeprecated-declarations", + "role" : "flags" + }, + { + "fragment" : "-rdynamic", + "role" : "flags" + }, + { + "backtrace" : 3, + "fragment" : "-L/home/ben/project/moos-ivp/lib", + "role" : "libraryPath" + }, + { + "backtrace" : 4, + "fragment" : "-L/usr/local/lib", + "role" : "libraryPath" + }, + { + "fragment" : "-Wl,-rpath,/home/ben/project/moos-ivp/lib:/usr/local/lib", + "role" : "libraries" + }, + { + "backtrace" : 5, + "fragment" : "/home/ben/project/moos-ivp/build/MOOS/MOOSCore/lib/libMOOS.a", + "role" : "libraries" + }, + { + "fragment" : "-ldl", + "role" : "libraries" + }, + { + "fragment" : "-lmbutil", + "role" : "libraries" + }, + { + "fragment" : "-lpthread", + "role" : "libraries" + }, + { + "fragment" : "-ljsoncpp", + "role" : "libraries" + }, + { + "fragment" : "-pthread", + "role" : "libraries" + }, + { + "fragment" : "-lm", + "role" : "libraries" + } + ], + "language" : "CXX" + }, + "name" : "pFaultHandle", + "nameOnDisk" : "pFaultHandle", + "paths" : + { + "build" : "src/pFaultHandle", + "source" : "src/pFaultHandle" + }, + "sourceGroups" : + [ + { + "name" : "Source Files", + "sourceIndexes" : + [ + 0, + 1, + 2 + ] + }, + { + "name" : "Header Files", + "sourceIndexes" : + [ + 3 + ] + } + ], + "sources" : + [ + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "src/pFaultHandle/FaultHandle.cpp", + "sourceGroupIndex" : 0 + }, + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "src/pFaultHandle/FaultHandle_Info.cpp", + "sourceGroupIndex" : 0 + }, + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "src/pFaultHandle/main.cpp", + "sourceGroupIndex" : 0 + }, + { + "backtrace" : 1, + "path" : "src/pFaultHandle/FaultHandle.h", + "sourceGroupIndex" : 1 + } + ], + "type" : "EXECUTABLE" +} diff --git a/build/.cmake/api/v1/reply/target-pMotionControler-None-3f183e81cc43357193c0.json b/build/.cmake/api/v1/reply/target-pMotionControler-None-3f183e81cc43357193c0.json new file mode 100644 index 0000000..cc0d1be --- /dev/null +++ b/build/.cmake/api/v1/reply/target-pMotionControler-None-3f183e81cc43357193c0.json @@ -0,0 +1,407 @@ +{ + "artifacts" : + [ + { + "path" : "/home/ben/project/moos-ivp-pi/bin/pMotionControler" + } + ], + "backtrace" : 1, + "backtraceGraph" : + { + "commands" : + [ + "ADD_EXECUTABLE", + "LINK_DIRECTORIES", + "link_directories", + "TARGET_LINK_LIBRARIES", + "INCLUDE_DIRECTORIES", + "include_directories" + ], + "files" : + [ + "src/pMotionControler/CMakeLists.txt", + "CMakeLists.txt", + "src/CMakeLists.txt" + ], + "nodes" : + [ + { + "file" : 0 + }, + { + "command" : 0, + "file" : 0, + "line" : 11, + "parent" : 0 + }, + { + "file" : 1 + }, + { + "command" : 1, + "file" : 1, + "line" : 60, + "parent" : 2 + }, + { + "command" : 2, + "file" : 0, + "line" : 9, + "parent" : 0 + }, + { + "command" : 3, + "file" : 0, + "line" : 14, + "parent" : 0 + }, + { + "command" : 4, + "file" : 1, + "line" : 57, + "parent" : 2 + }, + { + "file" : 2 + }, + { + "command" : 4, + "file" : 2, + "line" : 13, + "parent" : 7 + }, + { + "command" : 5, + "file" : 0, + "line" : 8, + "parent" : 0 + }, + { + "command" : 4, + "file" : 1, + "line" : 32, + "parent" : 2 + } + ] + }, + "compileGroups" : + [ + { + "compileCommandFragments" : + [ + { + "fragment" : " -fPIC -g -Wdeprecated-declarations " + }, + { + "backtrace" : 5, + "fragment" : "-pthread" + }, + { + "fragment" : "-std=gnu++11" + } + ], + "includes" : + [ + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_apputil" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_behaviors" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_behaviors-colregs" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_behaviors-marine" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_bhvutil" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_contacts" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_encounters" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_evalutil" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_genutil" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_geometry" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_helmivp" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ipfview" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ivpbuild" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ivpcore" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ivpsolve" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_logic" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_logutils" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_manifest" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_marine_pid" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_marineview" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_mbutil" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_obstacles" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_polar" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_realm" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ucommand" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ufield" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_zaicview" + }, + { + "backtrace" : 8, + "path" : "/*" + }, + { + "backtrace" : 8, + "path" : "/DUNE" + }, + { + "backtrace" : 9, + "path" : "/usr/include/jsoncpp" + }, + { + "backtrace" : 10, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/include" + }, + { + "backtrace" : 10, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/App/include" + }, + { + "backtrace" : 10, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Comms/include" + }, + { + "backtrace" : 10, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/DB/include" + }, + { + "backtrace" : 10, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Utils/include" + }, + { + "backtrace" : 10, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Thirdparty/PocoBits/include" + }, + { + "backtrace" : 10, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Thirdparty/getpot/include" + }, + { + "backtrace" : 10, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Thirdparty/AppCasting/include" + } + ], + "language" : "CXX", + "sourceIndexes" : + [ + 0, + 2, + 4, + 5 + ] + } + ], + "id" : "pMotionControler::@cc1346ef0ed31955aa90", + "link" : + { + "commandFragments" : + [ + { + "fragment" : "-fPIC -g -Wdeprecated-declarations", + "role" : "flags" + }, + { + "fragment" : "-rdynamic", + "role" : "flags" + }, + { + "backtrace" : 3, + "fragment" : "-L/home/ben/project/moos-ivp/lib", + "role" : "libraryPath" + }, + { + "backtrace" : 4, + "fragment" : "-L/usr/local/lib", + "role" : "libraryPath" + }, + { + "fragment" : "-Wl,-rpath,/home/ben/project/moos-ivp/lib:/usr/local/lib", + "role" : "libraries" + }, + { + "backtrace" : 5, + "fragment" : "/home/ben/project/moos-ivp/build/MOOS/MOOSCore/lib/libMOOS.a", + "role" : "libraries" + }, + { + "fragment" : "-lgeometry", + "role" : "libraries" + }, + { + "fragment" : "-lmbutil", + "role" : "libraries" + }, + { + "fragment" : "-lm", + "role" : "libraries" + }, + { + "fragment" : "-lpthread", + "role" : "libraries" + }, + { + "fragment" : "-ljsoncpp", + "role" : "libraries" + }, + { + "fragment" : "-pthread", + "role" : "libraries" + } + ], + "language" : "CXX" + }, + "name" : "pMotionControler", + "nameOnDisk" : "pMotionControler", + "paths" : + { + "build" : "src/pMotionControler", + "source" : "src/pMotionControler" + }, + "sourceGroups" : + [ + { + "name" : "Source Files", + "sourceIndexes" : + [ + 0, + 2, + 4, + 5 + ] + }, + { + "name" : "Header Files", + "sourceIndexes" : + [ + 1, + 3, + 6 + ] + } + ], + "sources" : + [ + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "src/pMotionControler/Controler.cpp", + "sourceGroupIndex" : 0 + }, + { + "backtrace" : 1, + "path" : "src/pMotionControler/Controler.hpp", + "sourceGroupIndex" : 1 + }, + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "src/pMotionControler/MotionControler.cpp", + "sourceGroupIndex" : 0 + }, + { + "backtrace" : 1, + "path" : "src/pMotionControler/MotionControler.hpp", + "sourceGroupIndex" : 1 + }, + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "src/pMotionControler/main.cpp", + "sourceGroupIndex" : 0 + }, + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "src/pMotionControler/pidControl.cpp", + "sourceGroupIndex" : 0 + }, + { + "backtrace" : 1, + "path" : "src/pMotionControler/pidControl.hpp", + "sourceGroupIndex" : 1 + } + ], + "type" : "EXECUTABLE" +} diff --git a/build/.cmake/api/v1/reply/target-pStateManagement-None-12c0626db4f6cdfc3816.json b/build/.cmake/api/v1/reply/target-pStateManagement-None-12c0626db4f6cdfc3816.json new file mode 100644 index 0000000..e241be6 --- /dev/null +++ b/build/.cmake/api/v1/reply/target-pStateManagement-None-12c0626db4f6cdfc3816.json @@ -0,0 +1,389 @@ +{ + "artifacts" : + [ + { + "path" : "/home/ben/project/moos-ivp-pi/bin/pStateManagement" + } + ], + "backtrace" : 1, + "backtraceGraph" : + { + "commands" : + [ + "ADD_EXECUTABLE", + "LINK_DIRECTORIES", + "link_directories", + "TARGET_LINK_LIBRARIES", + "INCLUDE_DIRECTORIES", + "include_directories" + ], + "files" : + [ + "src/pStateManagement/CMakeLists.txt", + "CMakeLists.txt", + "src/CMakeLists.txt" + ], + "nodes" : + [ + { + "file" : 0 + }, + { + "command" : 0, + "file" : 0, + "line" : 23, + "parent" : 0 + }, + { + "file" : 1 + }, + { + "command" : 1, + "file" : 1, + "line" : 60, + "parent" : 2 + }, + { + "command" : 2, + "file" : 0, + "line" : 21, + "parent" : 0 + }, + { + "command" : 3, + "file" : 0, + "line" : 25, + "parent" : 0 + }, + { + "command" : 4, + "file" : 1, + "line" : 57, + "parent" : 2 + }, + { + "file" : 2 + }, + { + "command" : 4, + "file" : 2, + "line" : 13, + "parent" : 7 + }, + { + "command" : 5, + "file" : 0, + "line" : 16, + "parent" : 0 + }, + { + "command" : 5, + "file" : 0, + "line" : 20, + "parent" : 0 + }, + { + "command" : 4, + "file" : 1, + "line" : 32, + "parent" : 2 + } + ] + }, + "compileGroups" : + [ + { + "compileCommandFragments" : + [ + { + "fragment" : " -fPIC -g -Wdeprecated-declarations " + }, + { + "backtrace" : 5, + "fragment" : "-pthread" + }, + { + "fragment" : "-std=gnu++11" + } + ], + "includes" : + [ + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_apputil" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_behaviors" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_behaviors-colregs" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_behaviors-marine" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_bhvutil" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_contacts" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_encounters" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_evalutil" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_genutil" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_geometry" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_helmivp" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ipfview" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ivpbuild" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ivpcore" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ivpsolve" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_logic" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_logutils" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_manifest" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_marine_pid" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_marineview" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_mbutil" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_obstacles" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_polar" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_realm" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ucommand" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ufield" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_zaicview" + }, + { + "backtrace" : 8, + "path" : "/*" + }, + { + "backtrace" : 8, + "path" : "/DUNE" + }, + { + "backtrace" : 9, + "path" : "/home/ben/project/moos-ivp-pi/src/pStateManagement" + }, + { + "backtrace" : 10, + "path" : "/usr/include/jsoncpp" + }, + { + "backtrace" : 11, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/include" + }, + { + "backtrace" : 11, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/App/include" + }, + { + "backtrace" : 11, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Comms/include" + }, + { + "backtrace" : 11, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/DB/include" + }, + { + "backtrace" : 11, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Utils/include" + }, + { + "backtrace" : 11, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Thirdparty/PocoBits/include" + }, + { + "backtrace" : 11, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Thirdparty/getpot/include" + }, + { + "backtrace" : 11, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Thirdparty/AppCasting/include" + } + ], + "language" : "CXX", + "sourceIndexes" : + [ + 0, + 1, + 2 + ] + } + ], + "id" : "pStateManagement::@cdde0d278f39903bd0cc", + "link" : + { + "commandFragments" : + [ + { + "fragment" : "-fPIC -g -Wdeprecated-declarations", + "role" : "flags" + }, + { + "fragment" : "-rdynamic", + "role" : "flags" + }, + { + "backtrace" : 3, + "fragment" : "-L/home/ben/project/moos-ivp/lib", + "role" : "libraryPath" + }, + { + "backtrace" : 4, + "fragment" : "-L/usr/local/lib", + "role" : "libraryPath" + }, + { + "fragment" : "-Wl,-rpath,/home/ben/project/moos-ivp/lib:/usr/local/lib", + "role" : "libraries" + }, + { + "backtrace" : 5, + "fragment" : "/home/ben/project/moos-ivp/build/MOOS/MOOSCore/lib/libMOOS.a", + "role" : "libraries" + }, + { + "fragment" : "-ldl", + "role" : "libraries" + }, + { + "fragment" : "/usr/local/lib/libdune-core.a", + "role" : "libraries" + }, + { + "fragment" : "-lmbutil", + "role" : "libraries" + }, + { + "fragment" : "-lm", + "role" : "libraries" + }, + { + "fragment" : "-lpthread", + "role" : "libraries" + }, + { + "fragment" : "-ljsoncpp", + "role" : "libraries" + }, + { + "fragment" : "-pthread", + "role" : "libraries" + } + ], + "language" : "CXX" + }, + "name" : "pStateManagement", + "nameOnDisk" : "pStateManagement", + "paths" : + { + "build" : "src/pStateManagement", + "source" : "src/pStateManagement" + }, + "sourceGroups" : + [ + { + "name" : "Source Files", + "sourceIndexes" : + [ + 0, + 1, + 2 + ] + } + ], + "sources" : + [ + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "src/pStateManagement/StateManagement.cpp", + "sourceGroupIndex" : 0 + }, + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "src/pStateManagement/StateManagement_Info.cpp", + "sourceGroupIndex" : 0 + }, + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "src/pStateManagement/main.cpp", + "sourceGroupIndex" : 0 + } + ], + "type" : "EXECUTABLE" +} diff --git a/build/.cmake/api/v1/reply/target-pSurfaceSupportComm-None-5c1b066d62accb72956a.json b/build/.cmake/api/v1/reply/target-pSurfaceSupportComm-None-5c1b066d62accb72956a.json new file mode 100644 index 0000000..d31e804 --- /dev/null +++ b/build/.cmake/api/v1/reply/target-pSurfaceSupportComm-None-5c1b066d62accb72956a.json @@ -0,0 +1,384 @@ +{ + "artifacts" : + [ + { + "path" : "/home/ben/project/moos-ivp-pi/bin/pSurfaceSupportComm" + } + ], + "backtrace" : 1, + "backtraceGraph" : + { + "commands" : + [ + "ADD_EXECUTABLE", + "LINK_DIRECTORIES", + "link_directories", + "TARGET_LINK_LIBRARIES", + "INCLUDE_DIRECTORIES", + "include_directories" + ], + "files" : + [ + "src/pSurfaceSupportComm/CMakeLists.txt", + "CMakeLists.txt", + "src/CMakeLists.txt" + ], + "nodes" : + [ + { + "file" : 0 + }, + { + "command" : 0, + "file" : 0, + "line" : 33, + "parent" : 0 + }, + { + "file" : 1 + }, + { + "command" : 1, + "file" : 1, + "line" : 60, + "parent" : 2 + }, + { + "command" : 2, + "file" : 0, + "line" : 28, + "parent" : 0 + }, + { + "command" : 3, + "file" : 0, + "line" : 35, + "parent" : 0 + }, + { + "command" : 4, + "file" : 1, + "line" : 57, + "parent" : 2 + }, + { + "file" : 2 + }, + { + "command" : 4, + "file" : 2, + "line" : 13, + "parent" : 7 + }, + { + "command" : 5, + "file" : 0, + "line" : 27, + "parent" : 0 + }, + { + "command" : 4, + "file" : 1, + "line" : 32, + "parent" : 2 + } + ] + }, + "compileGroups" : + [ + { + "compileCommandFragments" : + [ + { + "fragment" : " -fPIC -g -Wdeprecated-declarations " + }, + { + "backtrace" : 5, + "fragment" : "-pthread" + }, + { + "fragment" : "-std=gnu++11" + } + ], + "includes" : + [ + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_apputil" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_behaviors" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_behaviors-colregs" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_behaviors-marine" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_bhvutil" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_contacts" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_encounters" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_evalutil" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_genutil" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_geometry" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_helmivp" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ipfview" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ivpbuild" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ivpcore" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ivpsolve" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_logic" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_logutils" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_manifest" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_marine_pid" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_marineview" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_mbutil" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_obstacles" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_polar" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_realm" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ucommand" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ufield" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_zaicview" + }, + { + "backtrace" : 8, + "path" : "/*" + }, + { + "backtrace" : 8, + "path" : "/DUNE" + }, + { + "backtrace" : 9, + "path" : "/usr/include/jsoncpp" + }, + { + "backtrace" : 10, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/include" + }, + { + "backtrace" : 10, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/App/include" + }, + { + "backtrace" : 10, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Comms/include" + }, + { + "backtrace" : 10, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/DB/include" + }, + { + "backtrace" : 10, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Utils/include" + }, + { + "backtrace" : 10, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Thirdparty/PocoBits/include" + }, + { + "backtrace" : 10, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Thirdparty/getpot/include" + }, + { + "backtrace" : 10, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Thirdparty/AppCasting/include" + } + ], + "language" : "CXX", + "sourceIndexes" : + [ + 0, + 1, + 2 + ] + } + ], + "id" : "pSurfaceSupportComm::@af7dafcb6523990d05a0", + "link" : + { + "commandFragments" : + [ + { + "fragment" : "-fPIC -g -Wdeprecated-declarations", + "role" : "flags" + }, + { + "fragment" : "-rdynamic", + "role" : "flags" + }, + { + "backtrace" : 3, + "fragment" : "-L/home/ben/project/moos-ivp/lib", + "role" : "libraryPath" + }, + { + "backtrace" : 4, + "fragment" : "-L/usr/local/lib", + "role" : "libraryPath" + }, + { + "fragment" : "-Wl,-rpath,/home/ben/project/moos-ivp/lib:/usr/local/lib", + "role" : "libraries" + }, + { + "backtrace" : 5, + "fragment" : "/home/ben/project/moos-ivp/build/MOOS/MOOSCore/lib/libMOOS.a", + "role" : "libraries" + }, + { + "fragment" : "-ldl", + "role" : "libraries" + }, + { + "fragment" : "/usr/local/lib/libdune-core.a", + "role" : "libraries" + }, + { + "backtrace" : 5, + "fragment" : "/usr/local/lib/libGeographicLib.so.26.0.0", + "role" : "libraries" + }, + { + "fragment" : "-lmbutil", + "role" : "libraries" + }, + { + "fragment" : "-lm", + "role" : "libraries" + }, + { + "fragment" : "-lpthread", + "role" : "libraries" + }, + { + "fragment" : "-ljsoncpp", + "role" : "libraries" + }, + { + "fragment" : "-pthread", + "role" : "libraries" + } + ], + "language" : "CXX" + }, + "name" : "pSurfaceSupportComm", + "nameOnDisk" : "pSurfaceSupportComm", + "paths" : + { + "build" : "src/pSurfaceSupportComm", + "source" : "src/pSurfaceSupportComm" + }, + "sourceGroups" : + [ + { + "name" : "Source Files", + "sourceIndexes" : + [ + 0, + 1, + 2 + ] + } + ], + "sources" : + [ + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "src/pSurfaceSupportComm/SurfaceSupportComm.cpp", + "sourceGroupIndex" : 0 + }, + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "src/pSurfaceSupportComm/SurfaceSupportComm_Info.cpp", + "sourceGroupIndex" : 0 + }, + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "src/pSurfaceSupportComm/main.cpp", + "sourceGroupIndex" : 0 + } + ], + "type" : "EXECUTABLE" +} diff --git a/build/.cmake/api/v1/reply/target-pTaskManagement-None-97473a05e92e62137b49.json b/build/.cmake/api/v1/reply/target-pTaskManagement-None-97473a05e92e62137b49.json new file mode 100644 index 0000000..02cd455 --- /dev/null +++ b/build/.cmake/api/v1/reply/target-pTaskManagement-None-97473a05e92e62137b49.json @@ -0,0 +1,375 @@ +{ + "artifacts" : + [ + { + "path" : "/home/ben/project/moos-ivp-pi/bin/pTaskManagement" + } + ], + "backtrace" : 1, + "backtraceGraph" : + { + "commands" : + [ + "ADD_EXECUTABLE", + "LINK_DIRECTORIES", + "link_directories", + "TARGET_LINK_LIBRARIES", + "INCLUDE_DIRECTORIES", + "include_directories" + ], + "files" : + [ + "src/pTaskManagement/CMakeLists.txt", + "CMakeLists.txt", + "src/CMakeLists.txt" + ], + "nodes" : + [ + { + "file" : 0 + }, + { + "command" : 0, + "file" : 0, + "line" : 17, + "parent" : 0 + }, + { + "file" : 1 + }, + { + "command" : 1, + "file" : 1, + "line" : 60, + "parent" : 2 + }, + { + "command" : 2, + "file" : 0, + "line" : 14, + "parent" : 0 + }, + { + "command" : 3, + "file" : 0, + "line" : 21, + "parent" : 0 + }, + { + "command" : 4, + "file" : 1, + "line" : 57, + "parent" : 2 + }, + { + "file" : 2 + }, + { + "command" : 4, + "file" : 2, + "line" : 13, + "parent" : 7 + }, + { + "command" : 5, + "file" : 0, + "line" : 13, + "parent" : 0 + }, + { + "command" : 4, + "file" : 1, + "line" : 32, + "parent" : 2 + } + ] + }, + "compileGroups" : + [ + { + "compileCommandFragments" : + [ + { + "fragment" : " -fPIC -g -Wdeprecated-declarations " + }, + { + "backtrace" : 5, + "fragment" : "-pthread" + }, + { + "fragment" : "-std=gnu++11" + } + ], + "includes" : + [ + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_apputil" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_behaviors" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_behaviors-colregs" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_behaviors-marine" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_bhvutil" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_contacts" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_encounters" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_evalutil" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_genutil" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_geometry" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_helmivp" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ipfview" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ivpbuild" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ivpcore" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ivpsolve" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_logic" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_logutils" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_manifest" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_marine_pid" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_marineview" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_mbutil" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_obstacles" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_polar" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_realm" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ucommand" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ufield" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_zaicview" + }, + { + "backtrace" : 8, + "path" : "/*" + }, + { + "backtrace" : 8, + "path" : "/DUNE" + }, + { + "backtrace" : 9, + "path" : "/usr/include/jsoncpp" + }, + { + "backtrace" : 10, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/include" + }, + { + "backtrace" : 10, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/App/include" + }, + { + "backtrace" : 10, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Comms/include" + }, + { + "backtrace" : 10, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/DB/include" + }, + { + "backtrace" : 10, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Utils/include" + }, + { + "backtrace" : 10, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Thirdparty/PocoBits/include" + }, + { + "backtrace" : 10, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Thirdparty/getpot/include" + }, + { + "backtrace" : 10, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Thirdparty/AppCasting/include" + } + ], + "language" : "CXX", + "sourceIndexes" : + [ + 0, + 2 + ] + } + ], + "id" : "pTaskManagement::@c7868433878d507bf89f", + "link" : + { + "commandFragments" : + [ + { + "fragment" : "-fPIC -g -Wdeprecated-declarations", + "role" : "flags" + }, + { + "fragment" : "-rdynamic", + "role" : "flags" + }, + { + "backtrace" : 3, + "fragment" : "-L/home/ben/project/moos-ivp/lib", + "role" : "libraryPath" + }, + { + "backtrace" : 4, + "fragment" : "-L/usr/local/lib", + "role" : "libraryPath" + }, + { + "fragment" : "-Wl,-rpath,/home/ben/project/moos-ivp/lib:/usr/local/lib", + "role" : "libraries" + }, + { + "backtrace" : 5, + "fragment" : "/home/ben/project/moos-ivp/build/MOOS/MOOSCore/lib/libMOOS.a", + "role" : "libraries" + }, + { + "fragment" : "-lmbutil", + "role" : "libraries" + }, + { + "fragment" : "-lm", + "role" : "libraries" + }, + { + "fragment" : "-lpthread", + "role" : "libraries" + }, + { + "fragment" : "-ljsoncpp", + "role" : "libraries" + }, + { + "fragment" : "-pthread", + "role" : "libraries" + } + ], + "language" : "CXX" + }, + "name" : "pTaskManagement", + "nameOnDisk" : "pTaskManagement", + "paths" : + { + "build" : "src/pTaskManagement", + "source" : "src/pTaskManagement" + }, + "sourceGroups" : + [ + { + "name" : "Source Files", + "sourceIndexes" : + [ + 0, + 2 + ] + }, + { + "name" : "Header Files", + "sourceIndexes" : + [ + 1 + ] + } + ], + "sources" : + [ + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "src/pTaskManagement/TaskManger.cpp", + "sourceGroupIndex" : 0 + }, + { + "backtrace" : 1, + "path" : "src/pTaskManagement/TaskManger.h", + "sourceGroupIndex" : 1 + }, + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "src/pTaskManagement/TaskMangerMain.cpp", + "sourceGroupIndex" : 0 + } + ], + "type" : "EXECUTABLE" +} diff --git a/build/.cmake/api/v1/reply/target-pTaskSend-None-3a4f500e73d7f1e47a5a.json b/build/.cmake/api/v1/reply/target-pTaskSend-None-3a4f500e73d7f1e47a5a.json new file mode 100644 index 0000000..ee59814 --- /dev/null +++ b/build/.cmake/api/v1/reply/target-pTaskSend-None-3a4f500e73d7f1e47a5a.json @@ -0,0 +1,437 @@ +{ + "artifacts" : + [ + { + "path" : "/home/ben/project/moos-ivp-pi/bin/pTaskSend" + } + ], + "backtrace" : 1, + "backtraceGraph" : + { + "commands" : + [ + "ADD_EXECUTABLE", + "LINK_DIRECTORIES", + "link_directories", + "TARGET_LINK_LIBRARIES", + "INCLUDE_DIRECTORIES", + "include_directories" + ], + "files" : + [ + "src/pTaskSend/CMakeLists.txt", + "CMakeLists.txt", + "src/CMakeLists.txt" + ], + "nodes" : + [ + { + "file" : 0 + }, + { + "command" : 0, + "file" : 0, + "line" : 21, + "parent" : 0 + }, + { + "file" : 1 + }, + { + "command" : 1, + "file" : 1, + "line" : 60, + "parent" : 2 + }, + { + "command" : 2, + "file" : 0, + "line" : 19, + "parent" : 0 + }, + { + "command" : 3, + "file" : 0, + "line" : 23, + "parent" : 0 + }, + { + "command" : 4, + "file" : 1, + "line" : 57, + "parent" : 2 + }, + { + "file" : 2 + }, + { + "command" : 4, + "file" : 2, + "line" : 13, + "parent" : 7 + }, + { + "command" : 5, + "file" : 0, + "line" : 14, + "parent" : 0 + }, + { + "command" : 5, + "file" : 0, + "line" : 18, + "parent" : 0 + }, + { + "command" : 4, + "file" : 1, + "line" : 32, + "parent" : 2 + } + ] + }, + "compileGroups" : + [ + { + "compileCommandFragments" : + [ + { + "fragment" : " -fPIC -g -Wdeprecated-declarations " + }, + { + "backtrace" : 5, + "fragment" : "-pthread" + }, + { + "fragment" : "-std=gnu++11" + } + ], + "includes" : + [ + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_apputil" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_behaviors" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_behaviors-colregs" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_behaviors-marine" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_bhvutil" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_contacts" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_encounters" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_evalutil" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_genutil" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_geometry" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_helmivp" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ipfview" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ivpbuild" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ivpcore" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ivpsolve" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_logic" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_logutils" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_manifest" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_marine_pid" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_marineview" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_mbutil" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_obstacles" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_polar" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_realm" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ucommand" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_ufield" + }, + { + "backtrace" : 6, + "path" : "/home/ben/project/moos-ivp/ivp/src/lib_zaicview" + }, + { + "backtrace" : 8, + "path" : "/*" + }, + { + "backtrace" : 8, + "path" : "/DUNE" + }, + { + "backtrace" : 9, + "path" : "/home/ben/project/moos-ivp-pi/src/pTaskSend" + }, + { + "backtrace" : 10, + "path" : "/usr/include/jsoncpp" + }, + { + "backtrace" : 11, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/include" + }, + { + "backtrace" : 11, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/App/include" + }, + { + "backtrace" : 11, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Comms/include" + }, + { + "backtrace" : 11, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/DB/include" + }, + { + "backtrace" : 11, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Utils/include" + }, + { + "backtrace" : 11, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Thirdparty/PocoBits/include" + }, + { + "backtrace" : 11, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Thirdparty/getpot/include" + }, + { + "backtrace" : 11, + "isSystem" : true, + "path" : "/home/ben/project/moos-ivp/MOOS/MOOSCore/Core/libMOOS/Thirdparty/AppCasting/include" + } + ], + "language" : "CXX", + "sourceIndexes" : + [ + 0, + 1, + 2 + ] + } + ], + "id" : "pTaskSend::@d8178882102cb10e2e3f", + "link" : + { + "commandFragments" : + [ + { + "fragment" : "-fPIC -g -Wdeprecated-declarations", + "role" : "flags" + }, + { + "fragment" : "-rdynamic", + "role" : "flags" + }, + { + "backtrace" : 3, + "fragment" : "-L/home/ben/project/moos-ivp/lib", + "role" : "libraryPath" + }, + { + "backtrace" : 4, + "fragment" : "-L/usr/local/lib", + "role" : "libraryPath" + }, + { + "fragment" : "-Wl,-rpath,/home/ben/project/moos-ivp/lib:/usr/local/lib", + "role" : "libraries" + }, + { + "backtrace" : 5, + "fragment" : "/home/ben/project/moos-ivp/build/MOOS/MOOSCore/lib/libMOOS.a", + "role" : "libraries" + }, + { + "fragment" : "-ldl", + "role" : "libraries" + }, + { + "fragment" : "/usr/local/lib/libdune-core.a", + "role" : "libraries" + }, + { + "fragment" : "-lmbutil", + "role" : "libraries" + }, + { + "fragment" : "-lm", + "role" : "libraries" + }, + { + "fragment" : "-lpthread", + "role" : "libraries" + }, + { + "fragment" : "-lfltk", + "role" : "libraries" + }, + { + "fragment" : "-lfltk_gl", + "role" : "libraries" + }, + { + "fragment" : "-ldl", + "role" : "libraries" + }, + { + "fragment" : "-ltiff", + "role" : "libraries" + }, + { + "fragment" : "-ljsoncpp", + "role" : "libraries" + }, + { + "fragment" : "-pthread", + "role" : "libraries" + }, + { + "fragment" : "/usr/local/lib/libdune-core.a", + "role" : "libraries" + }, + { + "fragment" : "-lmbutil", + "role" : "libraries" + }, + { + "fragment" : "-lpthread", + "role" : "libraries" + }, + { + "fragment" : "-lfltk", + "role" : "libraries" + }, + { + "fragment" : "-lfltk_gl", + "role" : "libraries" + }, + { + "fragment" : "-lm", + "role" : "libraries" + }, + { + "fragment" : "-ltiff", + "role" : "libraries" + }, + { + "fragment" : "-ljsoncpp", + "role" : "libraries" + } + ], + "language" : "CXX" + }, + "name" : "pTaskSend", + "nameOnDisk" : "pTaskSend", + "paths" : + { + "build" : "src/pTaskSend", + "source" : "src/pTaskSend" + }, + "sourceGroups" : + [ + { + "name" : "Source Files", + "sourceIndexes" : + [ + 0, + 1, + 2 + ] + } + ], + "sources" : + [ + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "src/pTaskSend/TaskSend.cpp", + "sourceGroupIndex" : 0 + }, + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "src/pTaskSend/TaskSendMain.cpp", + "sourceGroupIndex" : 0 + }, + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "src/pTaskSend/display.cpp", + "sourceGroupIndex" : 0 + } + ], + "type" : "EXECUTABLE" +} diff --git a/clean.sh b/clean.sh new file mode 100755 index 0000000..a1892b1 --- /dev/null +++ b/clean.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +rm -rf build/* +rm -rf lib/* +rm -rf bin/p* +rm -f .DS_Store +rm -f missions/*/.LastOpenedMOOSLogDirectory + +find . -name '.DS_Store' -print -exec rm -rfv {} \; +find . -name '*~' -print -exec rm -rfv {} \; +find . -name '#*' -print -exec rm -rfv {} \; +find . -name '*.moos++' -print -exec rm -rfv {} \; + +find . -name 'MOOSLog*' -print -exec rm -rfv {} \; + diff --git a/launch/.LastOpenedMOOSLogDirectory b/launch/.LastOpenedMOOSLogDirectory new file mode 100644 index 0000000..6bef422 --- /dev/null +++ b/launch/.LastOpenedMOOSLogDirectory @@ -0,0 +1 @@ +LastOpenedLoggingDirectory=./MOOSLog_13_11_2023_____15_52_07 diff --git a/launch/alpha.bhv b/launch/alpha.bhv new file mode 100644 index 0000000..7a727f1 --- /dev/null +++ b/launch/alpha.bhv @@ -0,0 +1,181 @@ +//-------- FILE: alpha.bhv ------------- +initialize RUN = false +initialize TaskNum=t1 +initialize SendTask=false +//--------------模式判断------------------------ +set MODE = ACTIVE{ + RUN=true +} INACTIVE + +set MODE = T1{ + MODE=ACTIVE + TaskNum = t1 +} + + +//----------路径点任务---------------------------- +Behavior = BHV_Waypoint +{ + name = waypt_survey + pwt = 100 //优先权重 + condition = MODE==T1 + + //endflag = START=false + endflag = END_WayPoint=true + + configflag = CRUISE_SPD = $[SPEED] + //configflag = OSPOS = $[OSX],$[OSY] + + activeflag = INFO=$[OWNSHIP] + activeflag = INFO=$[BHVNAME] + activeflag = INFO=$[BHVTYPE] + + //cycleflag = CINFO=$[OSX],$[OSY] + + wptflag = CurrentPointComplete=true + wptflag = PREV=$(PX),$(PY) + wptflag = NEXT=$(NX),$(NY) + wptflag = TEST=$(X),$(Y) + wptflag = OSPOS=$(OSX),$(OSY) + //wptflag_on_start = true + + + updates = WPT_UPDATE + //perpetual = true + + templating = spawn + + // speed_alt = 1.2 + //use_alt_speed = true + lead = 8 + lead_damper = 1 + lead_to_start = false + speed = 1 // meters per second + capture_line = true + capture_radius = 5.0 + slip_radius = 15.0 + efficiency_measure = all + + polygon = 60,-40 + order = normal + //repeat = 3 + + visual_hints = nextpt_color=yellow + visual_hints = nextpt_vertex_size=8 + visual_hints = nextpt_lcolor=gray70 + visual_hints = vertex_color=dodger_blue, edge_color=white + visual_hints = vertex_size=5, edge_size=1 +} + + +//--------------定深任务------------------ +Behavior=BHV_ConstantDepth +{ + name = const_depth + pwt = 100 + //condition = DEPLOY = true + condition = MODE==T1 + duration = no-time-limit + updates = DEPTH_UPDATE + depth = 0 +} + +//--------------定向任务-------------------- + +Behavior=BHV_ConstantHeading +{ + name = const_heading + pwt = 100 + //condition = START_TURN = true + //condition = DEPLOY = true + condition = MODE==T3 + perpetual = true + + activeflag = TURN = started + + //endflag = TURN = done + //endflag = RETURN = true + //endflag = START_TURN = false + endflag = START=false + + heading = 225 + complete_thresh = 5 + duration = no-time-limit + } + +//--------------定速任务-------------------- +Behavior=BHV_ConstantSpeed +{ + name = const_speed + pwt = 1000 + condition = MODE==T1 + perpetual = true + updates = SPEED_UPDATE + //endflag = START=false + + speed = 5 + + duration = no-time-limit + //peakwidth = 0.5 + //basewidth = 0.5 + +} +//----------------安全模式----------------------- +//----------------计时器--------------------- +Behavior = BHV_Timer +{ + name = mtime + condition = MODE==T1 + pwt = 100 + templating = spawn + //duration_status = MSTATUS + //duration = 10 + endflag = TIME_OUT=true + + updates = TIMER_UPDATES + + //perpetual = true +} +//-------------最大深度限制-------------------------- +Behavior = BHV_MaxDepth +{ + name = maxdepth + pwt = 200 + condition = MODE==ACTIVE + updates = MAXDEEP_UPDATES + max_depth = 20 + tolerance = 0 + duration = no-time-limit +} +//--------------安全区域设置----------------------- + + Behavior = BHV_OpRegion + { + // General Behavior Parameters + // --------------------------- + name = op_region // example + pwt = 300 // default + condition = MODE==TN + updates = OPREGION_UPDATES // example + + // Parameters specific to this behavior + // ------------------------------------ + max_time = 20 // default (seconds) + max_depth = 25 // default (meters) + min_altitude = 0 // default (meters) + reset_var = OPREGION_RESET // example + trigger_entry_time = 1 // default (seconds) + trigger_exit_time = 0.5 // default (seconds) + + polygon = pts={-80,-00:-30,-175:150,-100:95,25} + + breached_altitude_flag = TaskFault = AltitudeOut + breached_depth_flag = TaskFault = DepthOut + breached_poly_flag = TaskFault = RegionOut + breached_time_flag = TaskFault = TimeOut + + visual_hints = vertex_color = brown // default + visual_hints = vertex_size = 3 // default + visual_hints = edge_color = aqua // default + visual_hints = edge_size = 1 // default + } \ No newline at end of file diff --git a/launch/alpha.moos b/launch/alpha.moos new file mode 100644 index 0000000..48e572d --- /dev/null +++ b/launch/alpha.moos @@ -0,0 +1,149 @@ + +ServerHost = localhost +ServerPort = 9000 +Community = zxb +MOOSTimeWarp = 1 + +// Forest Lake +//这两个参数没有pMarineViewer就会闪退 +LatOrigin = 43.825300 +LongOrigin = -70.330400 + +//------------------------------------------ +// Antler configuration block +ProcessConfig = ANTLER +{ + MSBetweenLaunches = 200 + + Run = MOOSDB @ NewConsole = false + //Run = pLogger @ NewConsole = false + Run = pMarineViewer @ NewConsole = false + Run = pRealm @ NewConsole = false + Run = pShare @ NewConsole = false +} +ProcessConfig = pShare +{ + AppTick = 2 + CommsTick = 2 + + input = route = localhost:8085 + output = src_name=APPCAST_REQ, route=10.25.0.230:8081 + + //输出有两个端口,8081和8082,选择用1或者2 + //发送消息看以下格式 + //output = src_name=Y, dest_name=B, route=host:port + + output = src_name=uMission_action_cmd,route=10.25.0.230:8081 +} + +ProcessConfig = pLogger +{ + AppTick = 8 + CommsTick = 8 + + AsyncLog = true + + // For variables that are published in a bundle on their first post, + // explicitly declare their logging request + //Log = IVPHELM_LIFE_EVENT @ 0 NOSYNC + //Log = REPORT @ 0 NOSYNC + //Log = BHV_SETTINGS @ 0 NOSYNC + Log = OPREGION_RESET @ 0 NOSYNC + + LogAuxSrc = true + WildCardLogging = true + WildCardOmitPattern = *_STATUS + WildCardOmitPattern = DB_VARSUMMARY + WildCardOmitPattern = DB_RWSUMMARY + WildCardExclusionLog = true +} +//------------------------------------------ +// pMarineViewer config block + +ProcessConfig = pMarineViewer +{ + AppTick = 4 + CommsTick = 4 + + tiff_file = forrest19.tif + //tiff_file = MIT_SP.tif + vehicles_name_mode = names+depth //+shortmode + + + set_pan_x = -90 + set_pan_y = -280 + zoom = 0.65 + vehicle_shape_scale = 1.5 + hash_delta = 50 + hash_shade = 0.22 + hash_viewable = true + + trails_point_size = 1 + + //op_vertex = x=-83, y=-47, lwidth=1,lcolor=yellow,looped=true,group=moa + //op_vertex = x=-46.4, y=-129.2, lwidth=1,lcolor=yellow,looped=true,group=moa + //op_vertex = x=94.6, y=-62.2, lwidth=1,lcolor=yellow,looped=true,group=moa + //op_vertex = x=58, y=20, lwidth=1,lcolor=yellow,looped=true,group=moa + + // Appcast configuration + appcast_height = 75 + appcast_width = 30 + appcast_viewable = true + appcast_color_scheme = indigo + nodes_font_size = xlarge + procs_font_size = xlarge + appcast_font_size = large + + // datum_viewable = true + // datum_size = 18 + // gui_size = small + + // left_context[survey-point] = DEPLOY=true + // left_context[survey-point] = MOOS_MANUAL_OVERRIDE=false + // left_context[survey-point] = RETURN=false + + right_context[return] = DEPLOY=true + right_context[return] = MOOS_MANUAL_OVERRIDE=false + right_context[return] = RETURN=false + + scope = RETURN + scope = WPT_STAT + scope = VIEW_SEGLIST + scope = VIEW_POINT + scope = VIEW_POLYGON + scope = MVIEWER_LCLICK + scope = MVIEWER_RCLICK + + //button_one = START # START=true + button_one = START # uMission_action_cmd={"taskName":"east_waypt_survey","action":"start"} + //button_one = MOOS_MANUAL_OVERRIDE=false + button_two = STOP # uMission_action_cmd={"taskName":"east_waypt_survey","action":"stop"} + //button_two = MOOS_MANUAL_OVERRIDE=true + button_three = FaultClear # ClearFalut = true + button_four = SendSecurityZone # SendSaftRules = true + + + action = MENU_KEY=deploy # DEPLOY = true # RETURN = false + action+ = MENU_KEY=deploy # MOOS_MANUAL_OVERRIDE=false + action = RETURN=true + action = UPDATES_RETURN=speed=1.4 + cmd = label=DEPLOY, var=DEPLOY, sval=true, receivers=all:$(VNAMES) + cmd = label=DEPLOY, var=MOOS_MANUAL_OVERRIDE, sval=false, receivers=all:$(VNAMES) + cmd = label=DEPLOY, var=AVOID, sval=true, receivers=all:$(VNAMES) + cmd = label=DEPLOY, var=RETURN, sval=false, receivers=all:$(VNAMES) + cmd = label=DEPLOY, var=STATION_KEEP, sval=false, receivers=all:$(VNAMES) + + cmd = label=RETURN, var=RETURN, sval=true, receivers=all:$(VNAMES) + cmd = label=RETURN, var=STATION_KEEP, sval=false, receivers=all:$(VNAMES) + + cmd = label=PERMUTE, var=UTS_FORWARD, dval=0, receivers=shore + + cmd = label=STATION, var=STATION_KEEP, sval=true, receivers=all:$(VNAMES), color=pink + + cmd = label=LOITER-FAST, var=UP_LOITER, sval=speed=2.8, receivers=all:$(VNAMES) + cmd = label=LOITER-SLOW, var=UP_LOITER, sval=speed=1.4, receivers=all:$(VNAMES) + + cmd = label=LOITER-CLOCKWISE-TRUE, var=UP_LOITER, sval=clockwise=true, receivers=all:$(VNAMES) + cmd = label=LOITER-CLOCKWISE-FALSE, var=UP_LOITER, sval=clockwise=false, receivers=all:$(VNAMES) + cmd = label=LOITER-CLOCKWISE-BEST, var=UP_LOITER, sval=clockwise=false, receivers=all:$(VNAMES) +} diff --git a/launch/launch.moos b/launch/launch.moos new file mode 100644 index 0000000..5d5f7e8 --- /dev/null +++ b/launch/launch.moos @@ -0,0 +1,324 @@ +//====================================== +//1. 在phare配置块里面添加需要的变量和调试端端口配置 +//2. Our define process中加入自定义程序 +//3. For test process 中加入配合调试的程序 + +ServerHost = localhost +ServerPort = 9000 +Simulator = true + +Community = pi + +MOOSTimeWarp = 1 + +LatOrigin = 43.825300 +LongOrigin = -70.330400 +AltOrigin = 0 + +VehicleName = lauv-150 + +LogEnable = false +LogDir = /home/jhl/moos-ivp-pi/moos-ivp-pi-word/log/ +AuvDataLog = auvData.mdat +MissionHistoryLog = missionHistory.txt +ClientCommandLog = clientCommand.txt +FaultLog = faultLog.txt +MotionControlLog = motionControl.txt + + +llaOriginPath = /home/jhl/moos-ivp-pi/moos-ivp-pi-word/setting/Origin.json + +//------------------------------------------ +// Antler configuration block +ProcessConfig = ANTLER +{ + MSBetweenLaunches = 200 + //============MOOS process========================= + Run = MOOSDB @ NewConsole = false + Run = pHelmIvP @ NewConsole = false + Run = pNodeReporter @ NewConsole = false + Run = uProcessWatch @ NewConsole = false + Run = pRealm @ NewConsole = false + Run = pShare @ NewConsole = false + Run = pMarineViewer @ NewConsole = false + //===========Our define process==================== + Run = pBoardSupportComm @ NewConsole = false + Run = pTaskManagement @ NewConsole = false + Run = pMotionControler @ NewConsole = false + Run = pSurfaceSupportComm @ NewConsole = false + Run = pDataManagement @ NewConsole = false + Run = pFaultHandle @ NewConsole = false + Run = pStateManagement @ NewConsole = false + //===============For test process=================== + Run = pEmulator @ NewConsole = false + //Run = uSimMarine @ NewConsole = false + //Run = pMarinePID @ NewConsole = false + +} + +ProcessConfig = pMarineViewer +{ + AppTick = 4 + CommsTick = 4 + + tiff_file = forrest19.tif + //tiff_file = MIT_SP.tif + vehicles_name_mode = names+depth //+shortmode + + + set_pan_x = -90 + set_pan_y = -280 + zoom = 0.65 + vehicle_shape_scale = 1.5 + hash_delta = 50 + hash_shade = 0.22 + hash_viewable = true + + trails_point_size = 1 + + //op_vertex = x=-83, y=-47, lwidth=1,lcolor=yellow,looped=true,group=moa + //op_vertex = x=-46.4, y=-129.2, lwidth=1,lcolor=yellow,looped=true,group=moa + //op_vertex = x=94.6, y=-62.2, lwidth=1,lcolor=yellow,looped=true,group=moa + //op_vertex = x=58, y=20, lwidth=1,lcolor=yellow,looped=true,group=moa + + // Appcast configuration + appcast_height = 75 + appcast_width = 30 + appcast_viewable = true + appcast_color_scheme = indigo + nodes_font_size = xlarge + procs_font_size = xlarge + appcast_font_size = large + + // datum_viewable = true + // datum_size = 18 + // gui_size = small + + // left_context[survey-point] = DEPLOY=true + // left_context[survey-point] = MOOS_MANUAL_OVERRIDE=false + // left_context[survey-point] = RETURN=false + + right_context[return] = DEPLOY=true + right_context[return] = MOOS_MANUAL_OVERRIDE=false + right_context[return] = RETURN=false + + scope = RETURN + scope = WPT_STAT + scope = VIEW_SEGLIST + scope = VIEW_POINT + scope = VIEW_POLYGON + scope = MVIEWER_LCLICK + scope = MVIEWER_RCLICK + + //button_one = START # START=true + button_one = START # uMission_action_cmd={"taskName":"east_waypt_survey","action":"start"} + //button_one = MOOS_MANUAL_OVERRIDE=false + button_two = STOP # uMission_action_cmd={"taskName":"east_waypt_survey","action":"stop"} + //button_two = MOOS_MANUAL_OVERRIDE=true + //button_three = FaultClear # ClearFalut = true + //button_four = SendSecurityZone # SendSaftRules = true + + + action = MENU_KEY=deploy # DEPLOY = true # RETURN = false + action+ = MENU_KEY=deploy # MOOS_MANUAL_OVERRIDE=false + action = RETURN=true + action = UPDATES_RETURN=speed=1.4 + cmd = label=DEPLOY, var=DEPLOY, sval=true, receivers=all:$(VNAMES) + cmd = label=DEPLOY, var=MOOS_MANUAL_OVERRIDE, sval=false, receivers=all:$(VNAMES) + cmd = label=DEPLOY, var=AVOID, sval=true, receivers=all:$(VNAMES) + cmd = label=DEPLOY, var=RETURN, sval=false, receivers=all:$(VNAMES) + cmd = label=DEPLOY, var=STATION_KEEP, sval=false, receivers=all:$(VNAMES) + + cmd = label=RETURN, var=RETURN, sval=true, receivers=all:$(VNAMES) + cmd = label=RETURN, var=STATION_KEEP, sval=false, receivers=all:$(VNAMES) + + cmd = label=PERMUTE, var=UTS_FORWARD, dval=0, receivers=shore + + cmd = label=STATION, var=STATION_KEEP, sval=true, receivers=all:$(VNAMES), color=pink + + cmd = label=LOITER-FAST, var=UP_LOITER, sval=speed=2.8, receivers=all:$(VNAMES) + cmd = label=LOITER-SLOW, var=UP_LOITER, sval=speed=1.4, receivers=all:$(VNAMES) + + cmd = label=LOITER-CLOCKWISE-TRUE, var=UP_LOITER, sval=clockwise=true, receivers=all:$(VNAMES) + cmd = label=LOITER-CLOCKWISE-FALSE, var=UP_LOITER, sval=clockwise=false, receivers=all:$(VNAMES) + cmd = label=LOITER-CLOCKWISE-BEST, var=UP_LOITER, sval=clockwise=false, receivers=all:$(VNAMES) +} + +ProcessConfig = pHelmIvP +{ + AppTick = 4 + CommsTick = 4 + + behaviors = alpha.bhv + domain = course:0:359:360 + domain = speed:0:10:101 + domain = depth:0:100:101 + + park_on_allstop = false + //park_on_allstop = true + +} +ProcessConfig = uProcessWatch +{ + AppTick = 4 + CommsTick = 4 + + watch_all = true + nowatch = uPokeDB* + nowatch = uQueryDB* + nowatch = uXMS* + nowatch = uMAC* + nowatch = pShare* + nowatch = pRealm* + nowatch = pNodeReporter* +} + +ProcessConfig = pNodeReporter +{ + AppTick = 2 + CommsTick = 2 + + platform_type = UUV + platform_color = red + platform_length = 4 +} + + +ProcessConfig = pShare +{ + AppTick = 2 + CommsTick = 2 + //UUV 信息 + output = src_name = NODE_REPORT*, route = 10.25.0.160:8085 + output = src_name = NODE_REPORT*, route = 10.25.0.248:8085 + output = src_name = NODE_REPORT*, route = 10.25.0.165:8085 + //App 信息 + output = src_name = APPCAST*, route = 10.25.0.160:8085 + output = src_name = APPCAST*, route = 10.25.0.165:8085 + output = src_name = APPCAST*, route = 10.25.0.248:8085 + //路径点信息 + output = src_name = VIEW*, route = 10.25.0.160:8085 + output = src_name = VIEW*, route = 10.25.0.165:8085 + output = src_name = VIEW*, route = 10.25.0.248:8085 + //调试端输入端口 + input = route = localhost:8081 + input = route = localhost:8082 + input = route = localhost:8083 +} + +ProcessConfig = pTaskManagement +{ + AppTick = 8 + CommsTick = 8 + planConfigPath = /home/zjk/Desktop/project/moos-ivp-pi/setting/PlanConfigure.json +} + +ProcessConfig = pBoardSupportComm +{ + AppTick = 5 + CommsTick = 5 +} + +ProcessConfig = uSimMarine +{ + AppTick = 10 + CommsTick = 10 + + START_X = 0 + START_Y = 0 + START_SPEED = 0 + START_HEADING = 180 + + PREFIX = NAV +} + +ProcessConfig = pMarinePID +{ + AppTick = 20 + CommsTick = 20 + + VERBOSE = true + DEPTH_CONTROL = false + + // Yaw PID controller + YAW_PID_KP = 0.5 + YAW_PID_KD = 0.0 + YAW_PID_KI = 0.0 + YAW_PID_INTEGRAL_LIMIT = 0.07 + + // Speed PID controller + SPEED_PID_KP = 1.0 + SPEED_PID_KD = 0.0 + SPEED_PID_KI = 0.0 + SPEED_PID_INTEGRAL_LIMIT = 0.07 + + //MAXIMUMS + MAXRUDDER = 100 + MAXTHRUST = 100 + + // A non-zero SPEED_FACTOR overrides use of SPEED_PID + // Will set DESIRED_THRUST = DESIRED_SPEED * SPEED_FACTOR + SPEED_FACTOR = 20 + +} + +ProcessConfig = pMotionControler +{ + AppTick = 5 + CommsTick = 5 + tardy_nav_thresh = 2.0 + tardy_helm_thresh = 2.0 + + cheak_stalensee = true + delta_freqency = 5 + + config_file = /home/jhl/moos-ivp-pi/moos-ivp-pi-word/setting/ControlParam.json +} + +ProcessConfig = pEmulator +{ + AppTick = 5 + CommsTick = 5 + matlab_host = 10.25.0.137 + matlab_port = 8085 + local_port = 8080 + prefix = NAV + + start_x = 10 + start_y = 9 + start_z = 1 + start_heading = 30 +} + +ProcessConfig = pDataManagement +{ + AppTick = 4 + CommsTick = 4 +} + +ProcessConfig = pLogger +{ + AppTick = 8 + CommsTick = 8 + + AsyncLog = true + FileTimeStamp = true + + // For variables that are published in a bundle on their first post, + // explicitly declare their logging request + Log = IVPHELM_LIFE_EVENT @ 0 NOSYNC + Log = REPORT @ 0 NOSYNC + + LogAuxSrc = true + WildCardLogging = true + WildCardOmitPattern = *_STATUS + WildCardOmitPattern = DB_VARSUMMARY + WildCardOmitPattern = DB_RWSUMMARY + WildCardExclusionLog = true +} +ProcessConfig = pFaultHandle +{ + AppTick = 4 + CommsTick = 4 +} + diff --git a/launch/launch_local.moos b/launch/launch_local.moos new file mode 100644 index 0000000..2d914e1 --- /dev/null +++ b/launch/launch_local.moos @@ -0,0 +1,328 @@ +//====================================== +//1. 在phare配置块里面添加需要的变量和调试端端口配置 +//2. Our define process中加入自定义程序 +//3. For test process 中加入配合调试的程序 + +ServerHost = localhost +ServerPort = 9000 +Simulator = true + +Community = pi + +MOOSTimeWarp = 1 + +LatOrigin = 43.825300 +LongOrigin = -70.330400 +AltOrigin = 0 + +VehicleName = lauv-150 + +LogEnable = true +//LogDir = /home/jhl/moos-ivp-pi/moos-ivp-pi-word/log/ +LogDir = /home/ben/project/moos-ivp-pi/log/ +AuvDataLog = auvData.mdat +MissionHistoryLog = missionHistory.txt +ClientCommandLog = clientCommand.txt +FaultLog = faultLog.txt +MotionControlLog = motionControl.txt + +//llaOriginPath = /home/jhl/moos-ivp-pi/moos-ivp-pi-word/setting/Origin.json +llaOriginPath = /home/ben/project/moos-ivp-pi/setting/Origin.json + +//------------------------------------------ +// Antler configuration block +ProcessConfig = ANTLER +{ + MSBetweenLaunches = 200 + //============MOOS process========================= + Run = MOOSDB @ NewConsole = false + Run = pHelmIvP @ NewConsole = false + Run = pNodeReporter @ NewConsole = false + Run = uProcessWatch @ NewConsole = false + Run = pRealm @ NewConsole = false + //Run = pShare @ NewConsole = false + Run = pMarineViewer @ NewConsole = false + //===========Our define process==================== + Run = pBoardSupportComm @ NewConsole = false + Run = pTaskManagement @ NewConsole = false + //Run = pMotionControler @ NewConsole = false + Run = pSurfaceSupportComm @ NewConsole = false + Run = pDataManagement @ NewConsole = false + Run = pFaultHandle @ NewConsole = false + Run = pStateManagement @ NewConsole = false + //===============For test process=================== + //Run = pEmulator @ NewConsole = false + Run = uSimMarine @ NewConsole = false + Run = pMarinePID @ NewConsole = false + +} + +ProcessConfig = pMarineViewer +{ + AppTick = 4 + CommsTick = 4 + + tiff_file = forrest19.tif + //tiff_file = MIT_SP.tif + vehicles_name_mode = names+depth //+shortmode + + + set_pan_x = -90 + set_pan_y = -280 + zoom = 0.65 + vehicle_shape_scale = 1.5 + hash_delta = 50 + hash_shade = 0.22 + hash_viewable = true + + trails_point_size = 1 + + //op_vertex = x=-83, y=-47, lwidth=1,lcolor=yellow,looped=true,group=moa + //op_vertex = x=-46.4, y=-129.2, lwidth=1,lcolor=yellow,looped=true,group=moa + //op_vertex = x=94.6, y=-62.2, lwidth=1,lcolor=yellow,looped=true,group=moa + //op_vertex = x=58, y=20, lwidth=1,lcolor=yellow,looped=true,group=moa + + // Appcast configuration + appcast_height = 75 + appcast_width = 30 + appcast_viewable = true + appcast_color_scheme = indigo + nodes_font_size = xlarge + procs_font_size = xlarge + appcast_font_size = large + + // datum_viewable = true + // datum_size = 18 + // gui_size = small + + // left_context[survey-point] = DEPLOY=true + // left_context[survey-point] = MOOS_MANUAL_OVERRIDE=false + // left_context[survey-point] = RETURN=false + + right_context[return] = DEPLOY=true + right_context[return] = MOOS_MANUAL_OVERRIDE=false + right_context[return] = RETURN=false + + scope = RETURN + scope = WPT_STAT + scope = VIEW_SEGLIST + scope = VIEW_POINT + scope = VIEW_POLYGON + scope = MVIEWER_LCLICK + scope = MVIEWER_RCLICK + + //button_one = START # START=true + button_one = START # uMission_action_cmd={"taskName":"east_waypt_survey","action":"start"} + //button_one = MOOS_MANUAL_OVERRIDE=false + button_two = STOP # uMission_action_cmd={"taskName":"east_waypt_survey","action":"stop"} + //button_two = MOOS_MANUAL_OVERRIDE=true + //button_three = FaultClear # ClearFalut = true + //button_four = SendSecurityZone # SendSaftRules = true + + + action = MENU_KEY=deploy # DEPLOY = true # RETURN = false + action+ = MENU_KEY=deploy # MOOS_MANUAL_OVERRIDE=false + action = RETURN=true + action = UPDATES_RETURN=speed=1.4 + cmd = label=DEPLOY, var=DEPLOY, sval=true, receivers=all:$(VNAMES) + cmd = label=DEPLOY, var=MOOS_MANUAL_OVERRIDE, sval=false, receivers=all:$(VNAMES) + cmd = label=DEPLOY, var=AVOID, sval=true, receivers=all:$(VNAMES) + cmd = label=DEPLOY, var=RETURN, sval=false, receivers=all:$(VNAMES) + cmd = label=DEPLOY, var=STATION_KEEP, sval=false, receivers=all:$(VNAMES) + + cmd = label=RETURN, var=RETURN, sval=true, receivers=all:$(VNAMES) + cmd = label=RETURN, var=STATION_KEEP, sval=false, receivers=all:$(VNAMES) + + cmd = label=PERMUTE, var=UTS_FORWARD, dval=0, receivers=shore + + cmd = label=STATION, var=STATION_KEEP, sval=true, receivers=all:$(VNAMES), color=pink + + cmd = label=LOITER-FAST, var=UP_LOITER, sval=speed=2.8, receivers=all:$(VNAMES) + cmd = label=LOITER-SLOW, var=UP_LOITER, sval=speed=1.4, receivers=all:$(VNAMES) + + cmd = label=LOITER-CLOCKWISE-TRUE, var=UP_LOITER, sval=clockwise=true, receivers=all:$(VNAMES) + cmd = label=LOITER-CLOCKWISE-FALSE, var=UP_LOITER, sval=clockwise=false, receivers=all:$(VNAMES) + cmd = label=LOITER-CLOCKWISE-BEST, var=UP_LOITER, sval=clockwise=false, receivers=all:$(VNAMES) +} + +ProcessConfig = pHelmIvP +{ + AppTick = 4 + CommsTick = 4 + + behaviors = alpha.bhv + domain = course:0:359:360 + domain = speed:0:10:101 + domain = depth:0:100:101 + + park_on_allstop = false + //park_on_allstop = true + +} +ProcessConfig = uProcessWatch +{ + AppTick = 4 + CommsTick = 4 + + watch_all = true + nowatch = uPokeDB* + nowatch = uQueryDB* + nowatch = uXMS* + nowatch = uMAC* + nowatch = pShare* + nowatch = pRealm* + nowatch = pNodeReporter* +} + +ProcessConfig = pNodeReporter +{ + AppTick = 2 + CommsTick = 2 + + platform_type = UUV + platform_color = red + platform_length = 4 +} + + +ProcessConfig = pShare +{ + AppTick = 2 + CommsTick = 2 + //UUV 信息 + output = src_name = NODE_REPORT*, route = 10.25.0.160:8085 + output = src_name = NODE_REPORT*, route = 10.25.0.248:8085 + output = src_name = NODE_REPORT*, route = 10.25.0.165:8085 + //App 信息 + output = src_name = APPCAST*, route = 10.25.0.160:8085 + output = src_name = APPCAST*, route = 10.25.0.165:8085 + output = src_name = APPCAST*, route = 10.25.0.248:8085 + //路径点信息 + output = src_name = VIEW*, route = 10.25.0.160:8085 + output = src_name = VIEW*, route = 10.25.0.165:8085 + output = src_name = VIEW*, route = 10.25.0.248:8085 + //调试端输入端口 + input = route = localhost:8081 + input = route = localhost:8082 + input = route = localhost:8083 +} + +ProcessConfig = pTaskManagement +{ + AppTick = 8 + CommsTick = 8 + //planConfigPath = /home/zjk/Desktop/project/moos-ivp-pi/setting/PlanConfigure.json + planConfigPath = /home/ben/project/moos-ivp-pi/setting/PlanConfigure.json + +} + +ProcessConfig = pBoardSupportComm +{ + AppTick = 5 + CommsTick = 5 +} + +ProcessConfig = uSimMarine +{ + AppTick = 10 + CommsTick = 10 + + START_X = 0 + START_Y = 0 + START_SPEED = 0 + START_HEADING = 180 + + PREFIX = NAV +} + +ProcessConfig = pMarinePID +{ + AppTick = 20 + CommsTick = 20 + + VERBOSE = true + DEPTH_CONTROL = false + + // Yaw PID controller + YAW_PID_KP = 0.5 + YAW_PID_KD = 0.0 + YAW_PID_KI = 0.0 + YAW_PID_INTEGRAL_LIMIT = 0.07 + + // Speed PID controller + SPEED_PID_KP = 1.0 + SPEED_PID_KD = 0.0 + SPEED_PID_KI = 0.0 + SPEED_PID_INTEGRAL_LIMIT = 0.07 + + //MAXIMUMS + MAXRUDDER = 100 + MAXTHRUST = 100 + + // A non-zero SPEED_FACTOR overrides use of SPEED_PID + // Will set DESIRED_THRUST = DESIRED_SPEED * SPEED_FACTOR + SPEED_FACTOR = 20 + +} + +ProcessConfig = pMotionControler +{ + AppTick = 5 + CommsTick = 5 + tardy_nav_thresh = 2.0 + tardy_helm_thresh = 2.0 + + cheak_stalensee = true + delta_freqency = 5 + + //config_file = /home/jhl/moos-ivp-pi/moos-ivp-pi-word/setting/ControlParam.json + config_file = /home/ben/project/moos-ivp-pi/setting/ControlParam.json +} + +ProcessConfig = pEmulator +{ + AppTick = 5 + CommsTick = 5 + matlab_host = 10.25.0.137 + matlab_port = 8085 + local_port = 8080 + prefix = NAV + + start_x = 10 + start_y = 9 + start_z = 1 + start_heading = 30 +} + +ProcessConfig = pDataManagement +{ + AppTick = 4 + CommsTick = 4 +} + +ProcessConfig = pLogger +{ + AppTick = 8 + CommsTick = 8 + + AsyncLog = true + FileTimeStamp = true + + // For variables that are published in a bundle on their first post, + // explicitly declare their logging request + Log = IVPHELM_LIFE_EVENT @ 0 NOSYNC + Log = REPORT @ 0 NOSYNC + + LogAuxSrc = true + WildCardLogging = true + WildCardOmitPattern = *_STATUS + WildCardOmitPattern = DB_VARSUMMARY + WildCardOmitPattern = DB_RWSUMMARY + WildCardExclusionLog = true +} +ProcessConfig = pFaultHandle +{ + AppTick = 4 + CommsTick = 4 +} + diff --git a/log/lauv-150/2023-11-24/165341/auvData.mdat b/log/lauv-150/2023-11-24/165341/auvData.mdat new file mode 100644 index 0000000..103a9da --- /dev/null +++ b/log/lauv-150/2023-11-24/165341/auvData.mdat @@ -0,0 +1,62 @@ +stamp,mode,refLon,refLat,refAlt,curLon,curLat,curAlt,north,east,depth,roll,pitch,yaw,insVX,insVY,insVZ,dvlVX,dvlVY,dvlVZ,height,thrust,light,load,dvl,iridium,batteryVol,batteryLev,batteryTemp +1700816027.452301,255,-90.330399,50.825298,0.000000,-70.330399,43.825298,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,180.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816028.453864,255,-90.330399,50.825298,0.000000,-70.330399,43.825298,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,180.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816029.455264,255,-90.330399,50.825298,0.000000,-70.330399,43.825298,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,180.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816030.456581,255,-90.330399,50.825298,0.000000,-70.330399,43.825298,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,180.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816031.457907,255,-90.330399,50.825298,0.000000,-70.330399,43.825298,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,180.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816032.459370,255,-90.330399,50.825298,0.000000,-70.330399,43.825298,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,180.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816033.461214,255,-90.330399,50.825298,0.000000,-70.330406,43.825291,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,221.265686,-0.015959,0.001138,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816034.463172,255,-90.330399,50.825298,0.000000,-70.330421,43.825283,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,256.499908,-0.013856,-0.015647,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816035.464781,255,-90.330399,50.825298,0.000000,-70.330452,43.825283,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,279.698303,0.005554,-0.023349,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816036.466592,255,-90.330399,50.825298,0.000000,-70.330482,43.825291,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,294.955994,-0.001521,0.025955,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816037.468631,255,-90.330399,50.825298,0.000000,-70.330513,43.825302,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,305.117188,-0.024714,-0.011832,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816038.470937,255,-90.330399,50.825298,0.000000,-70.330536,43.825317,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,311.726898,-0.027891,0.004797,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816039.472921,255,-90.330399,50.825298,0.000000,-70.330566,43.825333,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,316.019745,0.001756,-0.028847,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816040.475010,255,-90.330399,50.825298,0.000000,-70.330589,43.825356,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,319.103973,-0.000783,0.029190,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816041.477071,255,-90.330399,50.825298,0.000000,-70.330612,43.825375,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,321.166321,0.025067,-0.015554,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816042.479474,255,-90.330399,50.825298,0.000000,-70.330635,43.825394,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,322.507629,-0.011150,-0.027528,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816043.481484,255,-90.330399,50.825298,0.000000,-70.330658,43.825417,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,323.379303,-0.028673,-0.008119,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816044.483527,255,-90.330399,50.825298,0.000000,-70.330681,43.825436,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,323.946442,-0.028419,0.009295,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816045.485677,255,-90.330399,50.825298,0.000000,-70.330704,43.825459,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.315002,-0.022853,0.019281,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816046.487692,255,-90.330399,50.825298,0.000000,-70.330727,43.825481,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.554688,-0.017366,0.024340,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816047.489423,255,-90.330399,50.825298,0.000000,-70.330750,43.825500,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.710480,-0.013240,0.026920,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816048.491376,255,-90.330399,50.825298,0.000000,-70.330772,43.825523,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.811707,-0.010326,0.028167,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816049.493341,255,-90.330399,50.825298,0.000000,-70.330795,43.825546,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.877563,-0.008367,0.028810,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816050.495084,255,-90.330399,50.825298,0.000000,-70.330818,43.825569,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.920380,-0.007071,0.029155,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816051.496895,255,-90.330399,50.825298,0.000000,-70.330841,43.825588,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.948242,-0.006221,0.029348,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816052.499007,255,-90.330399,50.825298,0.000000,-70.330856,43.825611,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.966370,-0.005665,0.029460,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816053.500951,255,-90.330399,50.825298,0.000000,-70.330879,43.825634,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.978119,-0.005302,0.029528,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816054.502858,255,-90.330399,50.825298,0.000000,-70.330902,43.825657,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.985779,-0.005067,0.029569,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816055.504794,255,-90.330399,50.825298,0.000000,-70.330925,43.825676,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.990753,-0.004912,0.029595,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816056.506864,255,-90.330399,50.825298,0.000000,-70.330948,43.825699,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.993988,-0.004813,0.029611,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816057.508876,255,-90.330399,50.825298,0.000000,-70.330971,43.825722,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.996094,-0.004748,0.029622,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816058.510177,255,-90.330399,50.825298,0.000000,-70.330994,43.825745,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.997467,-0.004705,0.029629,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816059.511894,255,-90.330399,50.825298,0.000000,-70.331017,43.825764,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.998352,-0.004678,0.029633,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816060.513713,255,-90.330399,50.825298,0.000000,-70.331032,43.825787,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.998932,-0.004660,0.029636,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816061.515361,255,-90.330399,50.825298,0.000000,-70.331055,43.825809,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.999298,-0.004648,0.029638,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816062.517724,255,-90.330399,50.825298,0.000000,-70.331078,43.825832,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.999542,-0.004641,0.029639,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816063.519399,255,-90.330399,50.825298,0.000000,-70.331100,43.825851,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.999695,-0.004636,0.029640,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816064.521321,255,-90.330399,50.825298,0.000000,-70.331123,43.825874,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.999817,-0.004633,0.029640,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816065.523155,255,-90.330399,50.825298,0.000000,-70.331146,43.825897,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.999878,-0.004630,0.029641,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816066.525113,255,-90.330399,50.825298,0.000000,-70.331169,43.825920,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.999908,-0.004629,0.029641,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816067.527088,255,-90.330399,50.825298,0.000000,-70.331192,43.825939,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.999939,-0.004628,0.029641,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816068.528931,255,-90.330399,50.825298,0.000000,-70.331207,43.825962,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.999969,-0.004628,0.029641,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816069.530942,255,-90.330399,50.825298,0.000000,-70.331230,43.825985,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.999969,-0.004628,0.029641,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816070.533259,255,-90.330399,50.825298,0.000000,-70.331253,43.826008,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,325.000000,-0.004627,0.029641,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816071.535545,255,-90.330399,50.825298,0.000000,-70.331276,43.826027,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,325.000000,-0.004627,0.029641,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816072.537694,255,-90.330399,50.825298,0.000000,-70.331299,43.826050,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,325.000000,-0.004627,0.029641,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816073.539486,255,-90.330399,50.825298,0.000000,-70.331322,43.826073,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,325.000000,-0.004627,0.029641,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816074.541668,255,-90.330399,50.825298,0.000000,-70.331345,43.826096,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,325.000000,-0.004627,0.029641,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816075.543549,255,-90.330399,50.825298,0.000000,-70.331367,43.826115,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,325.000000,-0.004627,0.029641,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816076.545451,255,-90.330399,50.825298,0.000000,-70.331383,43.826138,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,325.000000,-0.004627,0.029641,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816077.546880,255,-90.330399,50.825298,0.000000,-70.331406,43.826157,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,325.000000,-0.004627,0.029641,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816078.548941,255,-90.330399,50.825298,0.000000,-70.331429,43.826180,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,325.000000,-0.004627,0.029641,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816079.550498,255,-90.330399,50.825298,0.000000,-70.331451,43.826202,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,325.000000,-0.004627,0.029641,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816080.552557,255,-90.330399,50.825298,0.000000,-70.331474,43.826225,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,325.000000,-0.004627,0.029641,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816081.554820,255,-90.330399,50.825298,0.000000,-70.331497,43.826244,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,325.000000,-0.004627,0.029641,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816082.556979,255,-90.330399,50.825298,0.000000,-70.331512,43.826267,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,325.000000,-0.004627,0.029641,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816083.559367,255,-90.330399,50.825298,0.000000,-70.331535,43.826290,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,325.193695,0.000103,0.029900,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816084.561927,255,-90.330399,50.825298,0.000000,-70.331558,43.826313,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,325.475800,0.008774,0.028584,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816085.564134,255,-90.330399,50.825298,0.000000,-70.331581,43.826332,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,325.659149,0.014102,0.026479,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816086.565876,255,-90.330399,50.825298,0.000000,-70.331604,43.826355,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,325.758423,0.016744,0.024288,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816087.567839,255,-90.330399,50.825298,0.000000,-70.331619,43.826389,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,352.651459,0.019075,0.039317,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 diff --git a/log/lauv-150/2023-11-24/165341/clientCommand.txt b/log/lauv-150/2023-11-24/165341/clientCommand.txt new file mode 100644 index 0000000..292fc99 --- /dev/null +++ b/log/lauv-150/2023-11-24/165341/clientCommand.txt @@ -0,0 +1 @@ +PlanControl:1700816031.985205,east_waypt_survey,start diff --git a/log/lauv-150/2023-11-24/165341/faultLog.txt b/log/lauv-150/2023-11-24/165341/faultLog.txt new file mode 100644 index 0000000..5c5785a --- /dev/null +++ b/log/lauv-150/2023-11-24/165341/faultLog.txt @@ -0,0 +1 @@ +stamp,level,type,id,first,source diff --git a/log/lauv-150/2023-11-24/165341/missionHistory.txt b/log/lauv-150/2023-11-24/165341/missionHistory.txt new file mode 100644 index 0000000..4e5d21b --- /dev/null +++ b/log/lauv-150/2023-11-24/165341/missionHistory.txt @@ -0,0 +1,451 @@ +stamp,state,taskName,destName,errorCode +1700816032.208877,3,east_waypt_survey,,0 +1700816032.209008,3,east_waypt_survey,,0 +1700816032.459245,3,east_waypt_survey,station_1,0 +1700816032.459485,3,east_waypt_survey,station_1,0 +1700816032.709793,3,east_waypt_survey,station_1,0 +1700816032.709916,3,east_waypt_survey,station_1,0 +1700816032.960172,3,east_waypt_survey,station_1,0 +1700816032.960243,3,east_waypt_survey,station_1,0 +1700816033.210579,3,east_waypt_survey,station_1,0 +1700816033.210741,3,east_waypt_survey,station_1,0 +1700816033.461092,3,east_waypt_survey,station_1,0 +1700816033.461268,3,east_waypt_survey,station_1,0 +1700816033.711654,3,east_waypt_survey,station_1,0 +1700816033.711850,3,east_waypt_survey,station_1,0 +1700816033.962186,3,east_waypt_survey,station_1,0 +1700816033.962254,3,east_waypt_survey,station_1,0 +1700816034.212517,3,east_waypt_survey,station_1,0 +1700816034.212695,3,east_waypt_survey,station_1,0 +1700816034.463044,3,east_waypt_survey,station_1,0 +1700816034.463241,3,east_waypt_survey,station_1,0 +1700816034.754383,3,east_waypt_survey,station_1,0 +1700816034.754540,3,east_waypt_survey,station_1,0 +1700816034.963804,3,east_waypt_survey,station_1,0 +1700816034.963877,3,east_waypt_survey,station_1,0 +1700816035.214206,3,east_waypt_survey,station_1,0 +1700816035.214365,3,east_waypt_survey,station_1,0 +1700816035.464652,3,east_waypt_survey,station_1,0 +1700816035.464841,3,east_waypt_survey,station_1,0 +1700816035.715239,3,east_waypt_survey,station_1,0 +1700816035.715382,3,east_waypt_survey,station_1,0 +1700816035.965593,3,east_waypt_survey,station_1,0 +1700816035.965625,3,east_waypt_survey,station_1,0 +1700816036.215854,3,east_waypt_survey,station_1,0 +1700816036.216009,3,east_waypt_survey,station_1,0 +1700816036.466402,3,east_waypt_survey,station_1,0 +1700816036.466688,3,east_waypt_survey,station_1,0 +1700816036.717018,3,east_waypt_survey,station_1,0 +1700816036.717189,3,east_waypt_survey,station_1,0 +1700816036.967522,3,east_waypt_survey,station_1,0 +1700816036.967596,3,east_waypt_survey,station_1,0 +1700816037.217925,3,east_waypt_survey,station_1,0 +1700816037.218168,3,east_waypt_survey,station_1,0 +1700816037.468499,3,east_waypt_survey,station_1,0 +1700816037.468715,3,east_waypt_survey,station_1,0 +1700816037.719129,3,east_waypt_survey,station_1,0 +1700816037.719314,3,east_waypt_survey,station_1,0 +1700816037.969713,3,east_waypt_survey,station_1,0 +1700816037.969809,3,east_waypt_survey,station_1,0 +1700816038.220210,3,east_waypt_survey,station_1,0 +1700816038.220398,3,east_waypt_survey,station_1,0 +1700816038.470784,3,east_waypt_survey,station_1,0 +1700816038.471023,3,east_waypt_survey,station_1,0 +1700816038.721386,3,east_waypt_survey,station_1,0 +1700816038.721547,3,east_waypt_survey,station_1,0 +1700816038.971869,3,east_waypt_survey,station_1,0 +1700816038.971938,3,east_waypt_survey,station_1,0 +1700816039.222234,3,east_waypt_survey,station_1,0 +1700816039.222428,3,east_waypt_survey,station_1,0 +1700816039.472795,3,east_waypt_survey,station_1,0 +1700816039.472981,3,east_waypt_survey,station_1,0 +1700816039.723322,3,east_waypt_survey,station_1,0 +1700816039.723522,3,east_waypt_survey,station_1,0 +1700816039.973940,3,east_waypt_survey,station_1,0 +1700816039.974023,3,east_waypt_survey,station_1,0 +1700816040.224345,3,east_waypt_survey,station_1,0 +1700816040.224512,3,east_waypt_survey,station_1,0 +1700816040.474886,3,east_waypt_survey,station_1,0 +1700816040.475065,3,east_waypt_survey,station_1,0 +1700816040.725486,3,east_waypt_survey,station_1,0 +1700816040.725653,3,east_waypt_survey,station_1,0 +1700816040.975918,3,east_waypt_survey,station_1,0 +1700816040.975992,3,east_waypt_survey,station_1,0 +1700816041.226343,3,east_waypt_survey,station_1,0 +1700816041.226548,3,east_waypt_survey,station_1,0 +1700816041.476948,3,east_waypt_survey,station_1,0 +1700816041.477126,3,east_waypt_survey,station_1,0 +1700816041.727650,3,east_waypt_survey,station_1,0 +1700816041.727854,3,east_waypt_survey,station_1,0 +1700816041.978300,3,east_waypt_survey,station_1,0 +1700816041.978374,3,east_waypt_survey,station_1,0 +1700816042.228716,3,east_waypt_survey,station_1,0 +1700816042.228943,3,east_waypt_survey,station_1,0 +1700816042.479307,3,east_waypt_survey,station_1,0 +1700816042.479555,3,east_waypt_survey,station_1,0 +1700816042.729978,3,east_waypt_survey,station_1,0 +1700816042.730143,3,east_waypt_survey,station_1,0 +1700816042.980438,3,east_waypt_survey,station_1,0 +1700816042.980515,3,east_waypt_survey,station_1,0 +1700816043.230907,3,east_waypt_survey,station_1,0 +1700816043.231108,3,east_waypt_survey,station_1,0 +1700816043.481364,3,east_waypt_survey,station_1,0 +1700816043.481544,3,east_waypt_survey,station_1,0 +1700816043.731938,3,east_waypt_survey,station_1,0 +1700816043.732125,3,east_waypt_survey,station_1,0 +1700816043.982541,3,east_waypt_survey,station_1,0 +1700816043.982620,3,east_waypt_survey,station_1,0 +1700816044.232929,3,east_waypt_survey,station_1,0 +1700816044.233097,3,east_waypt_survey,station_1,0 +1700816044.483370,3,east_waypt_survey,station_1,0 +1700816044.483591,3,east_waypt_survey,station_1,0 +1700816044.733981,3,east_waypt_survey,station_1,0 +1700816044.734152,3,east_waypt_survey,station_1,0 +1700816044.984458,3,east_waypt_survey,station_1,0 +1700816044.984537,3,east_waypt_survey,station_1,0 +1700816045.234943,3,east_waypt_survey,station_1,0 +1700816045.235157,3,east_waypt_survey,station_1,0 +1700816045.485551,3,east_waypt_survey,station_1,0 +1700816045.485731,3,east_waypt_survey,station_1,0 +1700816045.736048,3,east_waypt_survey,station_1,0 +1700816045.736220,3,east_waypt_survey,station_1,0 +1700816045.986640,3,east_waypt_survey,station_1,0 +1700816045.986722,3,east_waypt_survey,station_1,0 +1700816046.237011,3,east_waypt_survey,station_1,0 +1700816046.237198,3,east_waypt_survey,station_1,0 +1700816046.487511,3,east_waypt_survey,station_1,0 +1700816046.487786,3,east_waypt_survey,station_1,0 +1700816046.738158,3,east_waypt_survey,station_1,0 +1700816046.738411,3,east_waypt_survey,station_1,0 +1700816047.054477,3,east_waypt_survey,station_1,0 +1700816047.054549,3,east_waypt_survey,station_1,0 +1700816047.238882,3,east_waypt_survey,station_1,0 +1700816047.239170,3,east_waypt_survey,station_1,0 +1700816047.489367,3,east_waypt_survey,station_1,0 +1700816047.489444,3,east_waypt_survey,station_1,0 +1700816047.739852,3,east_waypt_survey,station_1,0 +1700816047.740061,3,east_waypt_survey,station_1,0 +1700816047.990340,3,east_waypt_survey,station_1,0 +1700816047.990433,3,east_waypt_survey,station_1,0 +1700816048.240757,3,east_waypt_survey,station_1,0 +1700816048.240978,3,east_waypt_survey,station_1,0 +1700816048.491253,3,east_waypt_survey,station_1,0 +1700816048.491563,3,east_waypt_survey,station_1,0 +1700816048.741912,3,east_waypt_survey,station_1,0 +1700816048.742069,3,east_waypt_survey,station_1,0 +1700816048.992343,3,east_waypt_survey,station_1,0 +1700816048.992425,3,east_waypt_survey,station_1,0 +1700816049.242746,3,east_waypt_survey,station_1,0 +1700816049.242989,3,east_waypt_survey,station_1,0 +1700816049.493253,3,east_waypt_survey,station_1,0 +1700816049.493425,3,east_waypt_survey,station_1,0 +1700816049.743751,3,east_waypt_survey,station_1,0 +1700816049.743908,3,east_waypt_survey,station_1,0 +1700816049.994182,3,east_waypt_survey,station_1,0 +1700816049.994249,3,east_waypt_survey,station_1,0 +1700816050.244547,3,east_waypt_survey,station_1,0 +1700816050.244707,3,east_waypt_survey,station_1,0 +1700816050.494967,3,east_waypt_survey,station_1,0 +1700816050.495234,3,east_waypt_survey,station_1,0 +1700816050.745558,3,east_waypt_survey,station_1,0 +1700816050.745706,3,east_waypt_survey,station_1,0 +1700816050.995970,3,east_waypt_survey,station_1,0 +1700816050.996041,3,east_waypt_survey,station_1,0 +1700816051.246296,3,east_waypt_survey,station_1,0 +1700816051.246457,3,east_waypt_survey,station_1,0 +1700816051.496800,3,east_waypt_survey,station_1,0 +1700816051.496984,3,east_waypt_survey,station_1,0 +1700816051.747485,3,east_waypt_survey,station_1,0 +1700816051.747684,3,east_waypt_survey,station_1,0 +1700816051.998093,3,east_waypt_survey,station_1,0 +1700816051.998172,3,east_waypt_survey,station_1,0 +1700816052.248486,3,east_waypt_survey,station_1,0 +1700816052.248648,3,east_waypt_survey,station_1,0 +1700816052.498913,3,east_waypt_survey,station_1,0 +1700816052.499089,3,east_waypt_survey,station_1,0 +1700816052.749516,3,east_waypt_survey,station_1,0 +1700816052.749737,3,east_waypt_survey,station_1,0 +1700816053.000036,3,east_waypt_survey,station_1,0 +1700816053.000094,3,east_waypt_survey,station_1,0 +1700816053.250365,3,east_waypt_survey,station_1,0 +1700816053.250569,3,east_waypt_survey,station_1,0 +1700816053.500852,3,east_waypt_survey,station_1,0 +1700816053.501036,3,east_waypt_survey,station_1,0 +1700816053.751387,3,east_waypt_survey,station_1,0 +1700816053.751649,3,east_waypt_survey,station_1,0 +1700816054.001928,3,east_waypt_survey,station_1,0 +1700816054.001993,3,east_waypt_survey,station_1,0 +1700816054.252292,3,east_waypt_survey,station_1,0 +1700816054.252497,3,east_waypt_survey,station_1,0 +1700816054.502743,3,east_waypt_survey,station_1,0 +1700816054.502990,3,east_waypt_survey,station_1,0 +1700816054.753304,3,east_waypt_survey,station_1,0 +1700816054.753525,3,east_waypt_survey,station_1,0 +1700816055.003813,3,east_waypt_survey,station_1,0 +1700816055.003984,3,east_waypt_survey,station_1,0 +1700816055.254289,3,east_waypt_survey,station_1,0 +1700816055.254440,3,east_waypt_survey,station_1,0 +1700816055.504703,3,east_waypt_survey,station_1,0 +1700816055.504925,3,east_waypt_survey,station_1,0 +1700816055.755324,3,east_waypt_survey,station_1,0 +1700816055.755552,3,east_waypt_survey,station_1,0 +1700816056.005919,3,east_waypt_survey,station_1,0 +1700816056.005997,3,east_waypt_survey,station_1,0 +1700816056.256307,3,east_waypt_survey,station_1,0 +1700816056.256495,3,east_waypt_survey,station_1,0 +1700816056.506764,3,east_waypt_survey,station_1,0 +1700816056.506959,3,east_waypt_survey,station_1,0 +1700816056.757382,3,east_waypt_survey,station_1,0 +1700816056.757587,3,east_waypt_survey,station_1,0 +1700816057.007940,3,east_waypt_survey,station_1,0 +1700816057.008013,3,east_waypt_survey,station_1,0 +1700816057.258317,3,east_waypt_survey,station_1,0 +1700816057.258483,3,east_waypt_survey,station_1,0 +1700816057.508776,3,east_waypt_survey,station_1,0 +1700816057.508963,3,east_waypt_survey,station_1,0 +1700816057.759254,3,east_waypt_survey,station_1,0 +1700816057.759323,3,east_waypt_survey,station_1,0 +1700816058.009523,3,east_waypt_survey,station_1,0 +1700816058.009551,3,east_waypt_survey,station_1,0 +1700816058.259725,3,east_waypt_survey,station_1,0 +1700816058.259837,3,east_waypt_survey,station_1,0 +1700816058.510085,3,east_waypt_survey,station_1,0 +1700816058.510260,3,east_waypt_survey,station_1,0 +1700816058.760570,3,east_waypt_survey,station_1,0 +1700816058.760716,3,east_waypt_survey,station_1,0 +1700816059.010990,3,east_waypt_survey,station_1,0 +1700816059.011060,3,east_waypt_survey,station_1,0 +1700816059.261289,3,east_waypt_survey,station_1,0 +1700816059.261392,3,east_waypt_survey,station_1,0 +1700816059.511785,3,east_waypt_survey,station_1,0 +1700816059.511984,3,east_waypt_survey,station_1,0 +1700816059.762472,3,east_waypt_survey,station_1,0 +1700816059.762658,3,east_waypt_survey,station_1,0 +1700816060.012899,3,east_waypt_survey,station_1,0 +1700816060.012937,3,east_waypt_survey,station_1,0 +1700816060.263156,3,east_waypt_survey,station_1,0 +1700816060.263229,3,east_waypt_survey,station_1,0 +1700816060.513611,3,east_waypt_survey,station_1,0 +1700816060.513801,3,east_waypt_survey,station_1,0 +1700816060.764103,3,east_waypt_survey,station_1,0 +1700816060.764267,3,east_waypt_survey,station_1,0 +1700816061.014479,3,east_waypt_survey,station_1,0 +1700816061.014516,3,east_waypt_survey,station_1,0 +1700816061.264817,3,east_waypt_survey,station_1,0 +1700816061.264998,3,east_waypt_survey,station_1,0 +1700816061.515269,3,east_waypt_survey,station_1,0 +1700816061.515450,3,east_waypt_survey,station_1,0 +1700816061.769275,3,east_waypt_survey,station_1,0 +1700816061.769454,3,east_waypt_survey,station_1,0 +1700816062.016738,3,east_waypt_survey,station_1,0 +1700816062.016827,3,east_waypt_survey,station_1,0 +1700816062.267092,3,east_waypt_survey,station_1,0 +1700816062.267242,3,east_waypt_survey,station_1,0 +1700816062.517593,3,east_waypt_survey,station_1,0 +1700816062.517864,3,east_waypt_survey,station_1,0 +1700816062.768102,3,east_waypt_survey,station_1,0 +1700816062.768196,3,east_waypt_survey,station_1,0 +1700816063.018409,3,east_waypt_survey,station_1,0 +1700816063.018473,3,east_waypt_survey,station_1,0 +1700816063.268769,3,east_waypt_survey,station_1,0 +1700816063.268964,3,east_waypt_survey,station_1,0 +1700816063.519306,3,east_waypt_survey,station_1,0 +1700816063.519526,3,east_waypt_survey,station_1,0 +1700816063.769963,3,east_waypt_survey,station_1,0 +1700816063.770164,3,east_waypt_survey,station_1,0 +1700816064.020422,3,east_waypt_survey,station_1,0 +1700816064.020491,3,east_waypt_survey,station_1,0 +1700816064.270789,3,east_waypt_survey,station_1,0 +1700816064.270964,3,east_waypt_survey,station_1,0 +1700816064.521208,3,east_waypt_survey,station_1,0 +1700816064.521436,3,east_waypt_survey,station_1,0 +1700816064.771714,3,east_waypt_survey,station_1,0 +1700816064.771889,3,east_waypt_survey,station_1,0 +1700816065.022263,3,east_waypt_survey,station_1,0 +1700816065.022339,3,east_waypt_survey,station_1,0 +1700816065.272659,3,east_waypt_survey,station_1,0 +1700816065.272835,3,east_waypt_survey,station_1,0 +1700816065.523070,3,east_waypt_survey,station_1,0 +1700816065.523252,3,east_waypt_survey,station_1,0 +1700816065.773637,3,east_waypt_survey,station_1,0 +1700816065.773834,3,east_waypt_survey,station_1,0 +1700816066.024163,3,east_waypt_survey,station_1,0 +1700816066.024268,3,east_waypt_survey,station_1,0 +1700816066.274558,3,east_waypt_survey,station_1,0 +1700816066.274759,3,east_waypt_survey,station_1,0 +1700816066.525020,3,east_waypt_survey,station_1,0 +1700816066.525197,3,east_waypt_survey,station_1,0 +1700816066.775556,3,east_waypt_survey,station_1,0 +1700816066.775723,3,east_waypt_survey,station_1,0 +1700816067.026024,3,east_waypt_survey,station_1,0 +1700816067.026094,3,east_waypt_survey,station_1,0 +1700816067.276391,3,east_waypt_survey,station_1,0 +1700816067.276593,3,east_waypt_survey,station_1,0 +1700816067.526983,3,east_waypt_survey,station_1,0 +1700816067.527183,3,east_waypt_survey,station_1,0 +1700816067.777592,3,east_waypt_survey,station_1,0 +1700816067.777725,3,east_waypt_survey,station_1,0 +1700816068.027991,3,east_waypt_survey,station_1,0 +1700816068.028067,3,east_waypt_survey,station_1,0 +1700816068.278403,3,east_waypt_survey,station_1,0 +1700816068.278567,3,east_waypt_survey,station_1,0 +1700816068.528826,3,east_waypt_survey,station_1,0 +1700816068.529028,3,east_waypt_survey,station_1,0 +1700816068.779418,3,east_waypt_survey,station_1,0 +1700816068.779642,3,east_waypt_survey,station_1,0 +1700816069.029914,3,east_waypt_survey,station_1,0 +1700816069.029989,3,east_waypt_survey,station_1,0 +1700816069.280328,3,east_waypt_survey,station_1,0 +1700816069.280494,3,east_waypt_survey,station_1,0 +1700816069.530804,3,east_waypt_survey,station_1,0 +1700816069.531105,3,east_waypt_survey,station_1,0 +1700816069.781601,3,east_waypt_survey,station_1,0 +1700816069.781778,3,east_waypt_survey,station_1,0 +1700816070.032084,3,east_waypt_survey,station_1,0 +1700816070.032158,3,east_waypt_survey,station_1,0 +1700816070.282557,3,east_waypt_survey,station_1,0 +1700816070.282786,3,east_waypt_survey,station_1,0 +1700816070.533129,3,east_waypt_survey,station_1,0 +1700816070.533378,3,east_waypt_survey,station_1,0 +1700816070.783728,3,east_waypt_survey,station_1,0 +1700816070.783942,3,east_waypt_survey,station_1,0 +1700816071.034389,3,east_waypt_survey,station_1,0 +1700816071.034498,3,east_waypt_survey,station_1,0 +1700816071.284860,3,east_waypt_survey,station_1,0 +1700816071.285056,3,east_waypt_survey,station_1,0 +1700816071.535430,3,east_waypt_survey,station_1,0 +1700816071.535629,3,east_waypt_survey,station_1,0 +1700816071.786117,3,east_waypt_survey,station_1,0 +1700816071.786292,3,east_waypt_survey,station_1,0 +1700816072.036619,3,east_waypt_survey,station_1,0 +1700816072.036699,3,east_waypt_survey,station_1,0 +1700816072.287171,3,east_waypt_survey,station_1,0 +1700816072.287379,3,east_waypt_survey,station_1,0 +1700816072.537650,3,east_waypt_survey,station_1,0 +1700816072.537727,3,east_waypt_survey,station_1,0 +1700816072.787998,3,east_waypt_survey,station_1,0 +1700816072.788181,3,east_waypt_survey,station_1,0 +1700816073.038418,3,east_waypt_survey,station_1,0 +1700816073.038465,3,east_waypt_survey,station_1,0 +1700816073.288763,3,east_waypt_survey,station_1,0 +1700816073.288948,3,east_waypt_survey,station_1,0 +1700816073.539371,3,east_waypt_survey,station_1,0 +1700816073.539574,3,east_waypt_survey,station_1,0 +1700816073.790044,3,east_waypt_survey,station_1,0 +1700816073.790238,3,east_waypt_survey,station_1,0 +1700816074.040513,3,east_waypt_survey,station_1,0 +1700816074.040586,3,east_waypt_survey,station_1,0 +1700816074.291023,3,east_waypt_survey,station_1,0 +1700816074.291200,3,east_waypt_survey,station_1,0 +1700816074.541573,3,east_waypt_survey,station_1,0 +1700816074.541748,3,east_waypt_survey,station_1,0 +1700816074.792051,3,east_waypt_survey,station_1,0 +1700816074.792227,3,east_waypt_survey,station_1,0 +1700816075.042626,3,east_waypt_survey,station_1,0 +1700816075.042698,3,east_waypt_survey,station_1,0 +1700816075.292997,3,east_waypt_survey,station_1,0 +1700816075.293180,3,east_waypt_survey,station_1,0 +1700816075.543440,3,east_waypt_survey,station_1,0 +1700816075.543635,3,east_waypt_survey,station_1,0 +1700816075.794077,3,east_waypt_survey,station_1,0 +1700816075.794245,3,east_waypt_survey,station_1,0 +1700816076.044511,3,east_waypt_survey,station_1,0 +1700816076.044574,3,east_waypt_survey,station_1,0 +1700816076.294973,3,east_waypt_survey,station_1,0 +1700816076.295133,3,east_waypt_survey,station_1,0 +1700816076.545408,3,east_waypt_survey,station_1,0 +1700816076.545478,3,east_waypt_survey,station_1,0 +1700816076.795700,3,east_waypt_survey,station_1,0 +1700816076.795807,3,east_waypt_survey,station_1,0 +1700816077.046128,3,east_waypt_survey,station_1,0 +1700816077.046194,3,east_waypt_survey,station_1,0 +1700816077.296430,3,east_waypt_survey,station_1,0 +1700816077.296524,3,east_waypt_survey,station_1,0 +1700816077.546815,3,east_waypt_survey,station_1,0 +1700816077.546952,3,east_waypt_survey,station_1,0 +1700816077.797365,3,east_waypt_survey,station_1,0 +1700816077.797547,3,east_waypt_survey,station_1,0 +1700816078.047834,3,east_waypt_survey,station_1,0 +1700816078.047913,3,east_waypt_survey,station_1,0 +1700816078.298332,3,east_waypt_survey,station_1,0 +1700816078.298519,3,east_waypt_survey,station_1,0 +1700816078.548836,3,east_waypt_survey,station_1,0 +1700816078.549071,3,east_waypt_survey,station_1,0 +1700816078.799363,3,east_waypt_survey,station_1,0 +1700816078.799483,3,east_waypt_survey,station_1,0 +1700816079.049739,3,east_waypt_survey,station_1,0 +1700816079.049805,3,east_waypt_survey,station_1,0 +1700816079.300014,3,east_waypt_survey,station_1,0 +1700816079.300100,3,east_waypt_survey,station_1,0 +1700816079.550389,3,east_waypt_survey,station_1,0 +1700816079.550616,3,east_waypt_survey,station_1,0 +1700816079.800986,3,east_waypt_survey,station_1,0 +1700816079.801166,3,east_waypt_survey,station_1,0 +1700816080.051514,3,east_waypt_survey,station_1,0 +1700816080.051594,3,east_waypt_survey,station_1,0 +1700816080.301932,3,east_waypt_survey,station_1,0 +1700816080.302114,3,east_waypt_survey,station_1,0 +1700816080.552418,3,east_waypt_survey,station_1,0 +1700816080.552715,3,east_waypt_survey,station_1,0 +1700816080.803106,3,east_waypt_survey,station_1,0 +1700816080.803303,3,east_waypt_survey,station_1,0 +1700816081.053588,3,east_waypt_survey,station_1,0 +1700816081.053657,3,east_waypt_survey,station_1,0 +1700816081.304038,3,east_waypt_survey,station_1,0 +1700816081.304277,3,east_waypt_survey,station_1,0 +1700816081.554711,3,east_waypt_survey,station_1,0 +1700816081.554910,3,east_waypt_survey,station_1,0 +1700816081.805324,3,east_waypt_survey,station_1,0 +1700816081.805528,3,east_waypt_survey,station_1,0 +1700816082.055838,3,east_waypt_survey,station_1,0 +1700816082.055917,3,east_waypt_survey,station_1,0 +1700816082.306331,3,east_waypt_survey,station_1,0 +1700816082.306531,3,east_waypt_survey,station_1,0 +1700816082.556876,3,east_waypt_survey,station_1,0 +1700816082.557070,3,east_waypt_survey,station_1,0 +1700816082.807561,3,east_waypt_survey,station_1,0 +1700816082.807743,3,east_waypt_survey,station_1,0 +1700816083.058154,3,east_waypt_survey,station_1,0 +1700816083.058260,3,east_waypt_survey,station_1,0 +1700816083.308611,3,east_waypt_survey,station_1,0 +1700816083.308806,3,east_waypt_survey,station_1,0 +1700816083.559237,3,east_waypt_survey,station_1,0 +1700816083.559519,3,east_waypt_survey,station_1,0 +1700816083.810050,3,east_waypt_survey,station_1,0 +1700816083.810269,3,east_waypt_survey,station_1,0 +1700816084.060612,3,east_waypt_survey,station_1,0 +1700816084.060716,3,east_waypt_survey,station_1,0 +1700816084.311167,3,east_waypt_survey,station_1,0 +1700816084.311391,3,east_waypt_survey,station_1,0 +1700816084.561819,3,east_waypt_survey,station_1,0 +1700816084.562016,3,east_waypt_survey,station_1,0 +1700816084.812393,3,east_waypt_survey,station_1,0 +1700816084.812579,3,east_waypt_survey,station_1,0 +1700816085.063035,3,east_waypt_survey,station_1,0 +1700816085.063119,3,east_waypt_survey,station_1,0 +1700816085.313567,3,east_waypt_survey,station_1,0 +1700816085.313751,3,east_waypt_survey,station_1,0 +1700816085.564039,3,east_waypt_survey,station_1,0 +1700816085.564216,3,east_waypt_survey,station_1,0 +1700816085.814542,3,east_waypt_survey,station_1,0 +1700816085.814643,3,east_waypt_survey,station_1,0 +1700816086.064897,3,east_waypt_survey,station_2,0 +1700816086.064967,3,east_waypt_survey,station_2,0 +1700816086.315306,3,east_waypt_survey,station_2,0 +1700816086.315453,3,east_waypt_survey,station_2,0 +1700816086.565798,3,east_waypt_survey,station_2,0 +1700816086.565946,3,east_waypt_survey,station_2,0 +1700816086.816338,3,east_waypt_survey,station_2,0 +1700816086.816560,3,east_waypt_survey,station_2,0 +1700816087.066878,3,east_waypt_survey,station_2,0 +1700816087.066960,3,east_waypt_survey,station_2,0 +1700816087.317274,3,east_waypt_survey,station_2,0 +1700816087.317479,3,east_waypt_survey,station_2,0 +1700816087.567740,3,east_waypt_survey,station_2,0 +1700816087.567928,3,east_waypt_survey,station_2,0 +1700816087.818408,3,east_waypt_survey,station_2,0 +1700816087.818599,3,east_waypt_survey,station_2,0 +1700816088.069017,3,east_waypt_survey,station_2,0 +1700816088.069118,3,east_waypt_survey,station_2,0 +1700816088.319436,3,east_waypt_survey,station_2,0 +1700816088.319644,3,east_waypt_survey,station_2,0 diff --git a/log/lauv-150/2023-11-24/165341/motionControl.txt b/log/lauv-150/2023-11-24/165341/motionControl.txt new file mode 100644 index 0000000..4273a7d --- /dev/null +++ b/log/lauv-150/2023-11-24/165341/motionControl.txt @@ -0,0 +1,676 @@ +stamp,desired_heading,desired_speed,desired_depth +1700816021.444746,0.000000,0.000000,0.000000 +1700816021.444781,0.000000,0.000000,0.000000 +1700816021.444789,0.000000,0.000000,0.000000 +1700816021.444797,0.000000,0.000000,0.000000 +1700816021.444805,0.000000,0.000000,0.000000 +1700816021.444812,0.000000,0.000000,0.000000 +1700816032.459279,0.000000,0.000000,10.000000 +1700816032.459291,0.000000,3.000000,10.000000 +1700816032.459300,321.000000,3.000000,10.000000 +1700816032.709816,321.000000,3.000000,10.000000 +1700816032.709824,321.000000,3.000000,10.000000 +1700816032.709829,321.000000,3.000000,10.000000 +1700816032.960202,321.000000,3.000000,10.000000 +1700816032.960213,321.000000,3.000000,10.000000 +1700816032.960222,322.000000,3.000000,10.000000 +1700816033.210611,322.000000,3.000000,10.000000 +1700816033.210622,322.000000,3.000000,10.000000 +1700816033.210631,322.000000,3.000000,10.000000 +1700816033.461126,322.000000,3.000000,10.000000 +1700816033.461137,322.000000,3.000000,10.000000 +1700816033.461145,322.000000,3.000000,10.000000 +1700816033.711696,322.000000,3.000000,10.000000 +1700816033.711714,322.000000,3.000000,10.000000 +1700816033.711728,322.000000,3.000000,10.000000 +1700816033.962214,322.000000,3.000000,10.000000 +1700816033.962225,322.000000,3.000000,10.000000 +1700816033.962233,322.000000,3.000000,10.000000 +1700816034.212545,322.000000,3.000000,10.000000 +1700816034.212556,322.000000,3.000000,10.000000 +1700816034.212564,322.000000,3.000000,10.000000 +1700816034.463077,322.000000,3.000000,10.000000 +1700816034.463088,322.000000,3.000000,10.000000 +1700816034.463099,323.000000,3.000000,10.000000 +1700816034.754414,323.000000,3.000000,10.000000 +1700816034.754425,323.000000,3.000000,10.000000 +1700816034.754432,323.000000,3.000000,10.000000 +1700816034.963834,323.000000,3.000000,10.000000 +1700816034.963846,323.000000,3.000000,10.000000 +1700816034.963855,323.000000,3.000000,10.000000 +1700816035.214238,323.000000,3.000000,10.000000 +1700816035.214248,323.000000,3.000000,10.000000 +1700816035.214257,323.000000,3.000000,10.000000 +1700816035.464690,323.000000,3.000000,10.000000 +1700816035.464702,323.000000,3.000000,10.000000 +1700816035.464711,323.000000,3.000000,10.000000 +1700816035.715286,323.000000,3.000000,10.000000 +1700816035.715290,323.000000,3.000000,10.000000 +1700816035.715294,323.000000,3.000000,10.000000 +1700816035.965608,323.000000,3.000000,10.000000 +1700816035.965612,323.000000,3.000000,10.000000 +1700816035.965616,324.000000,3.000000,10.000000 +1700816036.215881,324.000000,3.000000,10.000000 +1700816036.215892,324.000000,3.000000,10.000000 +1700816036.215901,324.000000,3.000000,10.000000 +1700816036.466451,324.000000,3.000000,10.000000 +1700816036.466468,324.000000,3.000000,10.000000 +1700816036.466481,324.000000,3.000000,10.000000 +1700816036.717051,324.000000,3.000000,10.000000 +1700816036.717063,324.000000,3.000000,10.000000 +1700816036.717072,324.000000,3.000000,10.000000 +1700816036.967553,324.000000,3.000000,10.000000 +1700816036.967565,324.000000,3.000000,10.000000 +1700816036.967574,324.000000,3.000000,10.000000 +1700816037.217969,324.000000,3.000000,10.000000 +1700816037.217989,324.000000,3.000000,10.000000 +1700816037.218004,324.000000,3.000000,10.000000 +1700816037.468538,324.000000,3.000000,10.000000 +1700816037.468549,324.000000,3.000000,10.000000 +1700816037.468559,324.000000,3.000000,10.000000 +1700816037.719160,324.000000,3.000000,10.000000 +1700816037.719170,324.000000,3.000000,10.000000 +1700816037.719179,324.000000,3.000000,10.000000 +1700816037.969751,324.000000,3.000000,10.000000 +1700816037.969767,324.000000,3.000000,10.000000 +1700816037.969779,324.000000,3.000000,10.000000 +1700816038.220244,324.000000,3.000000,10.000000 +1700816038.220255,324.000000,3.000000,10.000000 +1700816038.220263,324.000000,3.000000,10.000000 +1700816038.470819,324.000000,3.000000,10.000000 +1700816038.470830,324.000000,3.000000,10.000000 +1700816038.470838,324.000000,3.000000,10.000000 +1700816038.721418,324.000000,3.000000,10.000000 +1700816038.721428,324.000000,3.000000,10.000000 +1700816038.721436,324.000000,3.000000,10.000000 +1700816038.971899,324.000000,3.000000,10.000000 +1700816038.971909,324.000000,3.000000,10.000000 +1700816038.971917,324.000000,3.000000,10.000000 +1700816039.222275,324.000000,3.000000,10.000000 +1700816039.222287,324.000000,3.000000,10.000000 +1700816039.222296,324.000000,3.000000,10.000000 +1700816039.472829,324.000000,3.000000,10.000000 +1700816039.472841,324.000000,3.000000,10.000000 +1700816039.472850,325.000000,3.000000,10.000000 +1700816039.723354,325.000000,3.000000,10.000000 +1700816039.723364,325.000000,3.000000,10.000000 +1700816039.723372,325.000000,3.000000,10.000000 +1700816039.973979,325.000000,3.000000,10.000000 +1700816039.973991,325.000000,3.000000,10.000000 +1700816039.974000,325.000000,3.000000,10.000000 +1700816040.224378,325.000000,3.000000,10.000000 +1700816040.224390,325.000000,3.000000,10.000000 +1700816040.224399,325.000000,3.000000,10.000000 +1700816040.474922,325.000000,3.000000,10.000000 +1700816040.474932,325.000000,3.000000,10.000000 +1700816040.474941,325.000000,3.000000,10.000000 +1700816040.725522,325.000000,3.000000,10.000000 +1700816040.725533,325.000000,3.000000,10.000000 +1700816040.725541,325.000000,3.000000,10.000000 +1700816040.975952,325.000000,3.000000,10.000000 +1700816040.975964,325.000000,3.000000,10.000000 +1700816040.975972,325.000000,3.000000,10.000000 +1700816041.226379,325.000000,3.000000,10.000000 +1700816041.226390,325.000000,3.000000,10.000000 +1700816041.226399,325.000000,3.000000,10.000000 +1700816041.476987,325.000000,3.000000,10.000000 +1700816041.476997,325.000000,3.000000,10.000000 +1700816041.477006,325.000000,3.000000,10.000000 +1700816041.727688,325.000000,3.000000,10.000000 +1700816041.727699,325.000000,3.000000,10.000000 +1700816041.727710,325.000000,3.000000,10.000000 +1700816041.978334,325.000000,3.000000,10.000000 +1700816041.978345,325.000000,3.000000,10.000000 +1700816041.978353,325.000000,3.000000,10.000000 +1700816042.228754,325.000000,3.000000,10.000000 +1700816042.228771,325.000000,3.000000,10.000000 +1700816042.228785,325.000000,3.000000,10.000000 +1700816042.479341,325.000000,3.000000,10.000000 +1700816042.479352,325.000000,3.000000,10.000000 +1700816042.479361,325.000000,3.000000,10.000000 +1700816042.730012,325.000000,3.000000,10.000000 +1700816042.730023,325.000000,3.000000,10.000000 +1700816042.730031,325.000000,3.000000,10.000000 +1700816042.980473,325.000000,3.000000,10.000000 +1700816042.980484,325.000000,3.000000,10.000000 +1700816042.980493,325.000000,3.000000,10.000000 +1700816043.230942,325.000000,3.000000,10.000000 +1700816043.230954,325.000000,3.000000,10.000000 +1700816043.230963,325.000000,3.000000,10.000000 +1700816043.481395,325.000000,3.000000,10.000000 +1700816043.481406,325.000000,3.000000,10.000000 +1700816043.481416,325.000000,3.000000,10.000000 +1700816043.731979,325.000000,3.000000,10.000000 +1700816043.731991,325.000000,3.000000,10.000000 +1700816043.732001,325.000000,3.000000,10.000000 +1700816043.982577,325.000000,3.000000,10.000000 +1700816043.982589,325.000000,3.000000,10.000000 +1700816043.982598,325.000000,3.000000,10.000000 +1700816044.232961,325.000000,3.000000,10.000000 +1700816044.232973,325.000000,3.000000,10.000000 +1700816044.232982,325.000000,3.000000,10.000000 +1700816044.483407,325.000000,3.000000,10.000000 +1700816044.483419,325.000000,3.000000,10.000000 +1700816044.483428,325.000000,3.000000,10.000000 +1700816044.734015,325.000000,3.000000,10.000000 +1700816044.734026,325.000000,3.000000,10.000000 +1700816044.734035,325.000000,3.000000,10.000000 +1700816044.984496,325.000000,3.000000,10.000000 +1700816044.984507,325.000000,3.000000,10.000000 +1700816044.984516,325.000000,3.000000,10.000000 +1700816045.234981,325.000000,3.000000,10.000000 +1700816045.234992,325.000000,3.000000,10.000000 +1700816045.235001,325.000000,3.000000,10.000000 +1700816045.485591,325.000000,3.000000,10.000000 +1700816045.485602,325.000000,3.000000,10.000000 +1700816045.485611,325.000000,3.000000,10.000000 +1700816045.736084,325.000000,3.000000,10.000000 +1700816045.736096,325.000000,3.000000,10.000000 +1700816045.736105,325.000000,3.000000,10.000000 +1700816045.986680,325.000000,3.000000,10.000000 +1700816045.986692,325.000000,3.000000,10.000000 +1700816045.986700,325.000000,3.000000,10.000000 +1700816046.237046,325.000000,3.000000,10.000000 +1700816046.237058,325.000000,3.000000,10.000000 +1700816046.237068,325.000000,3.000000,10.000000 +1700816046.487552,325.000000,3.000000,10.000000 +1700816046.487568,325.000000,3.000000,10.000000 +1700816046.487583,325.000000,3.000000,10.000000 +1700816046.738198,325.000000,3.000000,10.000000 +1700816046.738214,325.000000,3.000000,10.000000 +1700816046.738229,325.000000,3.000000,10.000000 +1700816047.054509,325.000000,3.000000,10.000000 +1700816047.054520,325.000000,3.000000,10.000000 +1700816047.054529,325.000000,3.000000,10.000000 +1700816047.238931,325.000000,3.000000,10.000000 +1700816047.238947,325.000000,3.000000,10.000000 +1700816047.238959,325.000000,3.000000,10.000000 +1700816047.489383,325.000000,3.000000,10.000000 +1700816047.489391,325.000000,3.000000,10.000000 +1700816047.489395,325.000000,3.000000,10.000000 +1700816047.739886,325.000000,3.000000,10.000000 +1700816047.739897,325.000000,3.000000,10.000000 +1700816047.739906,325.000000,3.000000,10.000000 +1700816047.990371,325.000000,3.000000,10.000000 +1700816047.990386,325.000000,3.000000,10.000000 +1700816047.990399,325.000000,3.000000,10.000000 +1700816048.240792,325.000000,3.000000,10.000000 +1700816048.240807,325.000000,3.000000,10.000000 +1700816048.240821,325.000000,3.000000,10.000000 +1700816048.491485,325.000000,3.000000,10.000000 +1700816048.491507,325.000000,3.000000,10.000000 +1700816048.491523,325.000000,3.000000,10.000000 +1700816048.741943,325.000000,3.000000,10.000000 +1700816048.741954,325.000000,3.000000,10.000000 +1700816048.741962,325.000000,3.000000,10.000000 +1700816048.992371,325.000000,3.000000,10.000000 +1700816048.992382,325.000000,3.000000,10.000000 +1700816048.992395,325.000000,3.000000,10.000000 +1700816049.242791,325.000000,3.000000,10.000000 +1700816049.242808,325.000000,3.000000,10.000000 +1700816049.242821,325.000000,3.000000,10.000000 +1700816049.493388,325.000000,3.000000,10.000000 +1700816049.493397,325.000000,3.000000,10.000000 +1700816049.493405,325.000000,3.000000,10.000000 +1700816049.743781,325.000000,3.000000,10.000000 +1700816049.743792,325.000000,3.000000,10.000000 +1700816049.743800,325.000000,3.000000,10.000000 +1700816049.994209,325.000000,3.000000,10.000000 +1700816049.994220,325.000000,3.000000,10.000000 +1700816049.994229,325.000000,3.000000,10.000000 +1700816050.244578,325.000000,3.000000,10.000000 +1700816050.244588,325.000000,3.000000,10.000000 +1700816050.244597,325.000000,3.000000,10.000000 +1700816050.495164,325.000000,3.000000,10.000000 +1700816050.495180,325.000000,3.000000,10.000000 +1700816050.495196,325.000000,3.000000,10.000000 +1700816050.745586,325.000000,3.000000,10.000000 +1700816050.745597,325.000000,3.000000,10.000000 +1700816050.745606,325.000000,3.000000,10.000000 +1700816050.995997,325.000000,3.000000,10.000000 +1700816050.996009,325.000000,3.000000,10.000000 +1700816050.996019,325.000000,3.000000,10.000000 +1700816051.246328,325.000000,3.000000,10.000000 +1700816051.246338,325.000000,3.000000,10.000000 +1700816051.246347,325.000000,3.000000,10.000000 +1700816051.496943,325.000000,3.000000,10.000000 +1700816051.496953,325.000000,3.000000,10.000000 +1700816051.496962,325.000000,3.000000,10.000000 +1700816051.747521,325.000000,3.000000,10.000000 +1700816051.747532,325.000000,3.000000,10.000000 +1700816051.747541,325.000000,3.000000,10.000000 +1700816051.998130,325.000000,3.000000,10.000000 +1700816051.998141,325.000000,3.000000,10.000000 +1700816051.998150,325.000000,3.000000,10.000000 +1700816052.248522,325.000000,3.000000,10.000000 +1700816052.248532,325.000000,3.000000,10.000000 +1700816052.248541,325.000000,3.000000,10.000000 +1700816052.499053,325.000000,3.000000,10.000000 +1700816052.499062,325.000000,3.000000,10.000000 +1700816052.499070,325.000000,3.000000,10.000000 +1700816052.749564,325.000000,3.000000,10.000000 +1700816052.749580,325.000000,3.000000,10.000000 +1700816052.749592,325.000000,3.000000,10.000000 +1700816053.000062,325.000000,3.000000,10.000000 +1700816053.000071,325.000000,3.000000,10.000000 +1700816053.000078,325.000000,3.000000,10.000000 +1700816053.250410,325.000000,3.000000,10.000000 +1700816053.250420,325.000000,3.000000,10.000000 +1700816053.250428,325.000000,3.000000,10.000000 +1700816053.500998,325.000000,3.000000,10.000000 +1700816053.501008,325.000000,3.000000,10.000000 +1700816053.501016,325.000000,3.000000,10.000000 +1700816053.751424,325.000000,3.000000,10.000000 +1700816053.751444,325.000000,3.000000,10.000000 +1700816053.751453,325.000000,3.000000,10.000000 +1700816054.001954,325.000000,3.000000,10.000000 +1700816054.001965,325.000000,3.000000,10.000000 +1700816054.001973,325.000000,3.000000,10.000000 +1700816054.252330,325.000000,3.000000,10.000000 +1700816054.252342,325.000000,3.000000,10.000000 +1700816054.252351,325.000000,3.000000,10.000000 +1700816054.502925,325.000000,3.000000,10.000000 +1700816054.502941,325.000000,3.000000,10.000000 +1700816054.502956,325.000000,3.000000,10.000000 +1700816054.753346,325.000000,3.000000,10.000000 +1700816054.753361,325.000000,3.000000,10.000000 +1700816054.753374,325.000000,3.000000,10.000000 +1700816055.003856,325.000000,3.000000,10.000000 +1700816055.003931,325.000000,3.000000,10.000000 +1700816055.003947,325.000000,3.000000,10.000000 +1700816055.254319,325.000000,3.000000,10.000000 +1700816055.254331,325.000000,3.000000,10.000000 +1700816055.254339,325.000000,3.000000,10.000000 +1700816055.504859,325.000000,3.000000,10.000000 +1700816055.504875,325.000000,3.000000,10.000000 +1700816055.504890,325.000000,3.000000,10.000000 +1700816055.755360,325.000000,3.000000,10.000000 +1700816055.755370,325.000000,3.000000,10.000000 +1700816055.755387,325.000000,3.000000,10.000000 +1700816056.005954,325.000000,3.000000,10.000000 +1700816056.005966,325.000000,3.000000,10.000000 +1700816056.005975,325.000000,3.000000,10.000000 +1700816056.256343,325.000000,3.000000,10.000000 +1700816056.256353,325.000000,3.000000,10.000000 +1700816056.256361,325.000000,3.000000,10.000000 +1700816056.506913,325.000000,3.000000,10.000000 +1700816056.506923,325.000000,3.000000,10.000000 +1700816056.506931,325.000000,3.000000,10.000000 +1700816056.757424,325.000000,3.000000,10.000000 +1700816056.757436,325.000000,3.000000,10.000000 +1700816056.757446,325.000000,3.000000,10.000000 +1700816057.007974,325.000000,3.000000,10.000000 +1700816057.007985,325.000000,3.000000,10.000000 +1700816057.007993,325.000000,3.000000,10.000000 +1700816057.258352,325.000000,3.000000,10.000000 +1700816057.258363,325.000000,3.000000,10.000000 +1700816057.258371,325.000000,3.000000,10.000000 +1700816057.508925,325.000000,3.000000,10.000000 +1700816057.508935,325.000000,3.000000,10.000000 +1700816057.508943,325.000000,3.000000,10.000000 +1700816057.759269,325.000000,3.000000,10.000000 +1700816057.759273,325.000000,3.000000,10.000000 +1700816057.759275,325.000000,3.000000,10.000000 +1700816058.009537,325.000000,3.000000,10.000000 +1700816058.009541,325.000000,3.000000,10.000000 +1700816058.009544,325.000000,3.000000,10.000000 +1700816058.259747,325.000000,3.000000,10.000000 +1700816058.259752,325.000000,3.000000,10.000000 +1700816058.259755,325.000000,3.000000,10.000000 +1700816058.510224,325.000000,3.000000,10.000000 +1700816058.510234,325.000000,3.000000,10.000000 +1700816058.510241,325.000000,3.000000,10.000000 +1700816058.760601,325.000000,3.000000,10.000000 +1700816058.760611,325.000000,3.000000,10.000000 +1700816058.760619,325.000000,3.000000,10.000000 +1700816059.011020,325.000000,3.000000,10.000000 +1700816059.011031,325.000000,3.000000,10.000000 +1700816059.011040,325.000000,3.000000,10.000000 +1700816059.261311,325.000000,3.000000,10.000000 +1700816059.261316,325.000000,3.000000,10.000000 +1700816059.261319,325.000000,3.000000,10.000000 +1700816059.511945,325.000000,3.000000,10.000000 +1700816059.511955,325.000000,3.000000,10.000000 +1700816059.511963,325.000000,3.000000,10.000000 +1700816059.762508,325.000000,3.000000,10.000000 +1700816059.762518,325.000000,3.000000,10.000000 +1700816059.762527,325.000000,3.000000,10.000000 +1700816060.012919,325.000000,3.000000,10.000000 +1700816060.012924,325.000000,3.000000,10.000000 +1700816060.012928,325.000000,3.000000,10.000000 +1700816060.263175,325.000000,3.000000,10.000000 +1700816060.263179,325.000000,3.000000,10.000000 +1700816060.263182,325.000000,3.000000,10.000000 +1700816060.513762,325.000000,3.000000,10.000000 +1700816060.513772,325.000000,3.000000,10.000000 +1700816060.513780,325.000000,3.000000,10.000000 +1700816060.764138,325.000000,3.000000,10.000000 +1700816060.764148,325.000000,3.000000,10.000000 +1700816060.764158,325.000000,3.000000,10.000000 +1700816061.014497,325.000000,3.000000,10.000000 +1700816061.014502,325.000000,3.000000,10.000000 +1700816061.014506,325.000000,3.000000,10.000000 +1700816061.264854,325.000000,3.000000,10.000000 +1700816061.264866,325.000000,3.000000,10.000000 +1700816061.264875,325.000000,3.000000,10.000000 +1700816061.515412,325.000000,3.000000,10.000000 +1700816061.515421,325.000000,3.000000,10.000000 +1700816061.515430,325.000000,3.000000,10.000000 +1700816061.769312,325.000000,3.000000,10.000000 +1700816061.769323,325.000000,3.000000,10.000000 +1700816061.769333,325.000000,3.000000,10.000000 +1700816062.016774,325.000000,3.000000,10.000000 +1700816062.016785,325.000000,3.000000,10.000000 +1700816062.016805,325.000000,3.000000,10.000000 +1700816062.267121,325.000000,3.000000,10.000000 +1700816062.267131,325.000000,3.000000,10.000000 +1700816062.267138,325.000000,3.000000,10.000000 +1700816062.517793,325.000000,3.000000,10.000000 +1700816062.517811,325.000000,3.000000,10.000000 +1700816062.517827,325.000000,3.000000,10.000000 +1700816062.768133,325.000000,3.000000,10.000000 +1700816062.768138,325.000000,3.000000,10.000000 +1700816062.768142,325.000000,3.000000,10.000000 +1700816063.018435,325.000000,3.000000,10.000000 +1700816063.018445,325.000000,3.000000,10.000000 +1700816063.018453,325.000000,3.000000,10.000000 +1700816063.268807,325.000000,3.000000,10.000000 +1700816063.268822,325.000000,3.000000,10.000000 +1700816063.268835,325.000000,3.000000,10.000000 +1700816063.519471,325.000000,3.000000,10.000000 +1700816063.519489,325.000000,3.000000,10.000000 +1700816063.519500,325.000000,3.000000,10.000000 +1700816063.769996,325.000000,3.000000,10.000000 +1700816063.770007,325.000000,3.000000,10.000000 +1700816063.770016,325.000000,3.000000,10.000000 +1700816064.020453,325.000000,3.000000,10.000000 +1700816064.020464,325.000000,3.000000,10.000000 +1700816064.020471,325.000000,3.000000,10.000000 +1700816064.270827,325.000000,3.000000,10.000000 +1700816064.270839,325.000000,3.000000,10.000000 +1700816064.270848,325.000000,3.000000,10.000000 +1700816064.521371,325.000000,3.000000,10.000000 +1700816064.521383,325.000000,3.000000,10.000000 +1700816064.521401,325.000000,3.000000,10.000000 +1700816064.771743,325.000000,3.000000,10.000000 +1700816064.771754,325.000000,3.000000,10.000000 +1700816064.771762,325.000000,3.000000,10.000000 +1700816065.022295,325.000000,3.000000,10.000000 +1700816065.022306,325.000000,3.000000,10.000000 +1700816065.022314,325.000000,3.000000,10.000000 +1700816065.272688,325.000000,3.000000,10.000000 +1700816065.272698,325.000000,3.000000,10.000000 +1700816065.272706,325.000000,3.000000,10.000000 +1700816065.523202,325.000000,3.000000,10.000000 +1700816065.523211,325.000000,3.000000,10.000000 +1700816065.523219,325.000000,3.000000,10.000000 +1700816065.773670,325.000000,3.000000,10.000000 +1700816065.773682,325.000000,3.000000,10.000000 +1700816065.773691,325.000000,3.000000,10.000000 +1700816066.024199,325.000000,3.000000,10.000000 +1700816066.024218,325.000000,3.000000,10.000000 +1700816066.024233,325.000000,3.000000,10.000000 +1700816066.274590,325.000000,3.000000,10.000000 +1700816066.274601,325.000000,3.000000,10.000000 +1700816066.274609,325.000000,3.000000,10.000000 +1700816066.525160,325.000000,3.000000,10.000000 +1700816066.525170,325.000000,3.000000,10.000000 +1700816066.525178,325.000000,3.000000,10.000000 +1700816066.775592,325.000000,3.000000,10.000000 +1700816066.775603,325.000000,3.000000,10.000000 +1700816066.775611,325.000000,3.000000,10.000000 +1700816067.026055,325.000000,3.000000,10.000000 +1700816067.026065,325.000000,3.000000,10.000000 +1700816067.026073,325.000000,3.000000,10.000000 +1700816067.276427,325.000000,3.000000,10.000000 +1700816067.276439,325.000000,3.000000,10.000000 +1700816067.276448,325.000000,3.000000,10.000000 +1700816067.527138,325.000000,3.000000,10.000000 +1700816067.527147,325.000000,3.000000,10.000000 +1700816067.527156,325.000000,3.000000,10.000000 +1700816067.777615,325.000000,3.000000,10.000000 +1700816067.777622,325.000000,3.000000,10.000000 +1700816067.777629,325.000000,3.000000,10.000000 +1700816068.028024,325.000000,3.000000,10.000000 +1700816068.028036,325.000000,3.000000,10.000000 +1700816068.028044,325.000000,3.000000,10.000000 +1700816068.278438,325.000000,3.000000,10.000000 +1700816068.278449,325.000000,3.000000,10.000000 +1700816068.278457,325.000000,3.000000,10.000000 +1700816068.528976,325.000000,3.000000,10.000000 +1700816068.528985,325.000000,3.000000,10.000000 +1700816068.528997,325.000000,3.000000,10.000000 +1700816068.779475,325.000000,3.000000,10.000000 +1700816068.779494,325.000000,3.000000,10.000000 +1700816068.779508,325.000000,3.000000,10.000000 +1700816069.029946,325.000000,3.000000,10.000000 +1700816069.029958,325.000000,3.000000,10.000000 +1700816069.029967,325.000000,3.000000,10.000000 +1700816069.280365,325.000000,3.000000,10.000000 +1700816069.280376,325.000000,3.000000,10.000000 +1700816069.280384,325.000000,3.000000,10.000000 +1700816069.531021,325.000000,3.000000,10.000000 +1700816069.531046,325.000000,3.000000,10.000000 +1700816069.531061,325.000000,3.000000,10.000000 +1700816069.781636,325.000000,3.000000,10.000000 +1700816069.781647,325.000000,3.000000,10.000000 +1700816069.781655,325.000000,3.000000,10.000000 +1700816070.032118,325.000000,3.000000,10.000000 +1700816070.032129,325.000000,3.000000,10.000000 +1700816070.032137,325.000000,3.000000,10.000000 +1700816070.282598,325.000000,3.000000,10.000000 +1700816070.282608,325.000000,3.000000,10.000000 +1700816070.282625,325.000000,3.000000,10.000000 +1700816070.533321,325.000000,3.000000,10.000000 +1700816070.533335,325.000000,3.000000,10.000000 +1700816070.533346,325.000000,3.000000,10.000000 +1700816070.783767,325.000000,3.000000,10.000000 +1700816070.783783,325.000000,3.000000,10.000000 +1700816070.783796,325.000000,3.000000,10.000000 +1700816071.034435,325.000000,3.000000,10.000000 +1700816071.034451,325.000000,3.000000,10.000000 +1700816071.034465,325.000000,3.000000,10.000000 +1700816071.284898,325.000000,3.000000,10.000000 +1700816071.284912,325.000000,3.000000,10.000000 +1700816071.284925,325.000000,3.000000,10.000000 +1700816071.535593,325.000000,3.000000,10.000000 +1700816071.535602,325.000000,3.000000,10.000000 +1700816071.535610,325.000000,3.000000,10.000000 +1700816071.786158,325.000000,3.000000,10.000000 +1700816071.786169,325.000000,3.000000,10.000000 +1700816071.786178,325.000000,3.000000,10.000000 +1700816072.036656,325.000000,3.000000,10.000000 +1700816072.036668,325.000000,3.000000,10.000000 +1700816072.036677,325.000000,3.000000,10.000000 +1700816072.287214,325.000000,3.000000,10.000000 +1700816072.287226,325.000000,3.000000,10.000000 +1700816072.287235,325.000000,3.000000,10.000000 +1700816072.537712,325.000000,3.000000,10.000000 +1700816072.537716,325.000000,3.000000,10.000000 +1700816072.537719,325.000000,3.000000,10.000000 +1700816072.788030,325.000000,3.000000,10.000000 +1700816072.788040,325.000000,3.000000,10.000000 +1700816072.788048,325.000000,3.000000,10.000000 +1700816073.038438,325.000000,3.000000,10.000000 +1700816073.038445,325.000000,3.000000,10.000000 +1700816073.038451,325.000000,3.000000,10.000000 +1700816073.288801,325.000000,3.000000,10.000000 +1700816073.288813,325.000000,3.000000,10.000000 +1700816073.288822,325.000000,3.000000,10.000000 +1700816073.539535,325.000000,3.000000,10.000000 +1700816073.539545,325.000000,3.000000,10.000000 +1700816073.539554,325.000000,3.000000,10.000000 +1700816073.790084,325.000000,3.000000,10.000000 +1700816073.790095,325.000000,3.000000,10.000000 +1700816073.790103,325.000000,3.000000,10.000000 +1700816074.040544,325.000000,3.000000,10.000000 +1700816074.040555,325.000000,3.000000,10.000000 +1700816074.040564,325.000000,3.000000,10.000000 +1700816074.291062,325.000000,3.000000,10.000000 +1700816074.291073,325.000000,3.000000,10.000000 +1700816074.291082,325.000000,3.000000,10.000000 +1700816074.541712,325.000000,3.000000,10.000000 +1700816074.541721,325.000000,3.000000,10.000000 +1700816074.541729,325.000000,3.000000,10.000000 +1700816074.792087,325.000000,3.000000,10.000000 +1700816074.792099,325.000000,3.000000,10.000000 +1700816074.792108,325.000000,3.000000,10.000000 +1700816075.042659,325.000000,3.000000,10.000000 +1700816075.042669,325.000000,3.000000,10.000000 +1700816075.042678,325.000000,3.000000,10.000000 +1700816075.293030,325.000000,3.000000,10.000000 +1700816075.293041,325.000000,3.000000,10.000000 +1700816075.293049,325.000000,3.000000,10.000000 +1700816075.543599,325.000000,3.000000,10.000000 +1700816075.543608,325.000000,3.000000,10.000000 +1700816075.543616,325.000000,3.000000,10.000000 +1700816075.794116,325.000000,3.000000,10.000000 +1700816075.794127,325.000000,3.000000,10.000000 +1700816075.794135,325.000000,3.000000,10.000000 +1700816076.044537,325.000000,3.000000,10.000000 +1700816076.044547,325.000000,3.000000,10.000000 +1700816076.044555,325.000000,3.000000,10.000000 +1700816076.295007,325.000000,3.000000,10.000000 +1700816076.295017,325.000000,3.000000,10.000000 +1700816076.295025,325.000000,3.000000,10.000000 +1700816076.545466,325.000000,3.000000,10.000000 +1700816076.545469,325.000000,3.000000,10.000000 +1700816076.545471,325.000000,3.000000,10.000000 +1700816076.795725,325.000000,3.000000,10.000000 +1700816076.795731,325.000000,3.000000,10.000000 +1700816076.795736,325.000000,3.000000,10.000000 +1700816077.046155,325.000000,3.000000,10.000000 +1700816077.046166,325.000000,3.000000,10.000000 +1700816077.046175,325.000000,3.000000,10.000000 +1700816077.296450,325.000000,3.000000,10.000000 +1700816077.296455,325.000000,3.000000,10.000000 +1700816077.296460,325.000000,3.000000,10.000000 +1700816077.546914,325.000000,3.000000,10.000000 +1700816077.546922,325.000000,3.000000,10.000000 +1700816077.546929,325.000000,3.000000,10.000000 +1700816077.797399,325.000000,3.000000,10.000000 +1700816077.797409,325.000000,3.000000,10.000000 +1700816077.797417,325.000000,3.000000,10.000000 +1700816078.047868,325.000000,3.000000,10.000000 +1700816078.047881,325.000000,3.000000,10.000000 +1700816078.047890,325.000000,3.000000,10.000000 +1700816078.298367,325.000000,3.000000,10.000000 +1700816078.298377,325.000000,3.000000,10.000000 +1700816078.298386,325.000000,3.000000,10.000000 +1700816078.549007,325.000000,3.000000,10.000000 +1700816078.549023,325.000000,3.000000,10.000000 +1700816078.549034,325.000000,3.000000,10.000000 +1700816078.799382,325.000000,3.000000,10.000000 +1700816078.799385,325.000000,3.000000,10.000000 +1700816078.799388,325.000000,3.000000,10.000000 +1700816079.049766,325.000000,3.000000,10.000000 +1700816079.049777,325.000000,3.000000,10.000000 +1700816079.049785,325.000000,3.000000,10.000000 +1700816079.300029,325.000000,3.000000,10.000000 +1700816079.300033,325.000000,3.000000,10.000000 +1700816079.300036,325.000000,3.000000,10.000000 +1700816079.550552,325.000000,3.000000,10.000000 +1700816079.550568,325.000000,3.000000,10.000000 +1700816079.550582,325.000000,3.000000,10.000000 +1700816079.801020,325.000000,3.000000,10.000000 +1700816079.801032,325.000000,3.000000,10.000000 +1700816079.801041,325.000000,3.000000,10.000000 +1700816080.051550,325.000000,3.000000,10.000000 +1700816080.051562,325.000000,3.000000,10.000000 +1700816080.051572,325.000000,3.000000,10.000000 +1700816080.301965,325.000000,3.000000,10.000000 +1700816080.301981,325.000000,3.000000,10.000000 +1700816080.301994,325.000000,3.000000,10.000000 +1700816080.552642,325.000000,3.000000,10.000000 +1700816080.552660,325.000000,3.000000,10.000000 +1700816080.552677,325.000000,3.000000,10.000000 +1700816080.803137,325.000000,3.000000,10.000000 +1700816080.803148,325.000000,3.000000,10.000000 +1700816080.803158,325.000000,3.000000,10.000000 +1700816081.053615,325.000000,3.000000,10.000000 +1700816081.053628,325.000000,3.000000,10.000000 +1700816081.053637,325.000000,3.000000,10.000000 +1700816081.304075,325.000000,3.000000,10.000000 +1700816081.304092,325.000000,3.000000,10.000000 +1700816081.304106,325.000000,3.000000,10.000000 +1700816081.554872,325.000000,3.000000,10.000000 +1700816081.554881,325.000000,3.000000,10.000000 +1700816081.554890,325.000000,3.000000,10.000000 +1700816081.805366,325.000000,3.000000,10.000000 +1700816081.805377,325.000000,3.000000,10.000000 +1700816081.805386,325.000000,3.000000,10.000000 +1700816082.055875,325.000000,3.000000,10.000000 +1700816082.055886,325.000000,3.000000,10.000000 +1700816082.055895,325.000000,3.000000,10.000000 +1700816082.306369,325.000000,3.000000,10.000000 +1700816082.306381,325.000000,3.000000,10.000000 +1700816082.306390,325.000000,3.000000,10.000000 +1700816082.557029,325.000000,3.000000,10.000000 +1700816082.557040,325.000000,3.000000,10.000000 +1700816082.557048,325.000000,3.000000,10.000000 +1700816082.807602,325.000000,3.000000,10.000000 +1700816082.807614,325.000000,3.000000,10.000000 +1700816082.807623,326.000000,3.000000,10.000000 +1700816083.058199,326.000000,3.000000,10.000000 +1700816083.058215,326.000000,3.000000,10.000000 +1700816083.058228,326.000000,3.000000,10.000000 +1700816083.308648,326.000000,3.000000,10.000000 +1700816083.308664,326.000000,3.000000,10.000000 +1700816083.308676,326.000000,3.000000,10.000000 +1700816083.559426,326.000000,3.000000,10.000000 +1700816083.559447,326.000000,3.000000,10.000000 +1700816083.559478,326.000000,3.000000,10.000000 +1700816083.810092,326.000000,3.000000,10.000000 +1700816083.810107,326.000000,3.000000,10.000000 +1700816083.810119,326.000000,3.000000,10.000000 +1700816084.060652,326.000000,3.000000,10.000000 +1700816084.060668,326.000000,3.000000,10.000000 +1700816084.060682,326.000000,3.000000,10.000000 +1700816084.311210,326.000000,3.000000,10.000000 +1700816084.311225,326.000000,3.000000,10.000000 +1700816084.311237,326.000000,3.000000,10.000000 +1700816084.561977,326.000000,3.000000,10.000000 +1700816084.561986,326.000000,3.000000,10.000000 +1700816084.561995,326.000000,3.000000,10.000000 +1700816084.812434,326.000000,3.000000,10.000000 +1700816084.812446,326.000000,3.000000,10.000000 +1700816084.812455,326.000000,3.000000,10.000000 +1700816085.063076,326.000000,3.000000,10.000000 +1700816085.063087,326.000000,3.000000,10.000000 +1700816085.063096,326.000000,3.000000,10.000000 +1700816085.313616,326.000000,3.000000,10.000000 +1700816085.313627,326.000000,3.000000,10.000000 +1700816085.313636,326.000000,3.000000,10.000000 +1700816085.564179,326.000000,3.000000,10.000000 +1700816085.564188,326.000000,3.000000,10.000000 +1700816085.564196,326.000000,3.000000,10.000000 +1700816086.064928,326.000000,3.000000,0.000000 +1700816086.064938,326.000000,0.000000,0.000000 +1700816086.064947,0.000000,0.000000,0.000000 +1700816086.315334,0.000000,0.000000,8.000000 +1700816086.315341,0.000000,5.000000,8.000000 +1700816086.315348,17.000000,5.000000,8.000000 +1700816086.565913,17.000000,5.000000,8.000000 +1700816086.565920,17.000000,5.000000,8.000000 +1700816086.565925,18.000000,5.000000,8.000000 +1700816086.816377,18.000000,5.000000,8.000000 +1700816086.816388,18.000000,5.000000,8.000000 +1700816086.816397,18.000000,5.000000,8.000000 +1700816087.066920,18.000000,5.000000,8.000000 +1700816087.066930,18.000000,5.000000,8.000000 +1700816087.066938,18.000000,5.000000,8.000000 +1700816087.317311,18.000000,5.000000,8.000000 +1700816087.317322,18.000000,5.000000,8.000000 +1700816087.317331,19.000000,5.000000,8.000000 +1700816087.567888,19.000000,5.000000,8.000000 +1700816087.567897,19.000000,5.000000,8.000000 +1700816087.567905,19.000000,5.000000,8.000000 +1700816087.818444,19.000000,5.000000,8.000000 +1700816087.818454,19.000000,5.000000,8.000000 +1700816087.818462,19.000000,5.000000,8.000000 +1700816088.069058,19.000000,5.000000,8.000000 +1700816088.069073,19.000000,5.000000,8.000000 +1700816088.069086,20.000000,5.000000,8.000000 +1700816088.319483,20.000000,5.000000,8.000000 +1700816088.319499,20.000000,5.000000,8.000000 +1700816088.319512,20.000000,5.000000,8.000000 diff --git a/log/lauv-150/2023-11-24/165544/auvData.mdat b/log/lauv-150/2023-11-24/165544/auvData.mdat new file mode 100644 index 0000000..809fe1d --- /dev/null +++ b/log/lauv-150/2023-11-24/165544/auvData.mdat @@ -0,0 +1,146 @@ +stamp,mode,refLon,refLat,refAlt,curLon,curLat,curAlt,north,east,depth,roll,pitch,yaw,insVX,insVY,insVZ,dvlVX,dvlVY,dvlVZ,height,thrust,light,load,dvl,iridium,batteryVol,batteryLev,batteryTemp +1700816146.379559,255,-90.330399,50.825298,0.000000,-70.330399,43.825298,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,180.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816147.380766,255,-90.330399,50.825298,0.000000,-70.330399,43.825298,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,180.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816148.382141,255,-90.330399,50.825298,0.000000,-70.330399,43.825298,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,180.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816149.383717,255,-90.330399,50.825298,0.000000,-70.330399,43.825298,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,180.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816150.385157,255,-90.330399,50.825298,0.000000,-70.330399,43.825298,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,180.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816151.386511,255,-90.330399,50.825298,0.000000,-70.330399,43.825298,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,180.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816152.388023,255,-90.330399,50.825298,0.000000,-70.330399,43.825298,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,191.636749,-0.007748,0.005322,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816153.389874,255,-90.330399,50.825298,0.000000,-70.330414,43.825287,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,237.135208,0.010877,-0.014592,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816154.391686,255,-90.330399,50.825298,0.000000,-70.330437,43.825283,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,266.909088,0.018906,-0.011635,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816155.393302,255,-90.330399,50.825298,0.000000,-70.330467,43.825283,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,286.521332,-0.014174,-0.020472,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816156.395069,255,-90.330399,50.825298,0.000000,-70.330498,43.825294,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,299.539276,-0.026598,0.000335,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816157.396561,255,-90.330399,50.825298,0.000000,-70.330521,43.825306,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,308.094788,0.024663,0.012829,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816158.398296,255,-90.330399,50.825298,0.000000,-70.330551,43.825325,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,313.657440,0.016498,0.023362,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816159.400539,255,-90.330399,50.825298,0.000000,-70.330574,43.825340,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,317.356567,-0.027871,-0.008013,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816160.402489,255,-90.330399,50.825298,0.000000,-70.330597,43.825363,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,320.030548,0.023669,0.017271,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816161.404379,255,-90.330399,50.825298,0.000000,-70.330627,43.825382,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,321.768616,0.011160,-0.027416,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816162.406533,255,-90.330399,50.825298,0.000000,-70.330650,43.825401,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,322.899353,-0.021177,-0.020823,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816163.408771,255,-90.330399,50.825298,0.000000,-70.330666,43.825424,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,323.634125,-0.029799,-0.000296,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816164.410375,255,-90.330399,50.825298,0.000000,-70.330688,43.825447,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.111877,-0.026398,0.014041,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816165.412499,255,-90.330399,50.825298,0.000000,-70.330711,43.825466,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.422455,-0.020550,0.021718,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816166.414718,255,-90.330399,50.825298,0.000000,-70.330734,43.825489,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.624481,-0.015548,0.025540,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816167.416968,255,-90.330399,50.825298,0.000000,-70.330757,43.825512,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.755768,-0.011953,0.027516,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816168.419068,255,-90.330399,50.825298,0.000000,-70.330780,43.825531,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.841217,-0.009454,0.028471,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816169.420871,255,-90.330399,50.825298,0.000000,-70.330803,43.825554,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.896729,-0.007789,0.028971,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816170.422729,255,-90.330399,50.825298,0.000000,-70.330826,43.825577,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.932831,-0.006691,0.029244,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816171.424751,255,-90.330399,50.825298,0.000000,-70.330849,43.825600,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.956329,-0.005973,0.029399,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816172.426938,255,-90.330399,50.825298,0.000000,-70.330872,43.825619,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.971588,-0.005504,0.029491,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816173.429263,255,-90.330399,50.825298,0.000000,-70.330887,43.825642,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.981537,-0.005197,0.029546,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816174.431332,255,-90.330399,50.825298,0.000000,-70.330910,43.825665,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.988007,-0.004998,0.029581,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816175.433512,255,-90.330399,50.825298,0.000000,-70.330933,43.825687,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.992188,-0.004868,0.029602,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816176.435635,255,-90.330399,50.825298,0.000000,-70.330956,43.825706,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.994934,-0.004784,0.029616,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816177.437691,255,-90.330399,50.825298,0.000000,-70.330978,43.825729,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.996704,-0.004729,0.029625,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816178.439825,255,-90.330399,50.825298,0.000000,-70.331001,43.825752,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.997864,-0.004693,0.029631,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816179.442120,255,-90.330399,50.825298,0.000000,-70.331024,43.825775,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.998596,-0.004670,0.029634,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816180.444414,255,-90.330399,50.825298,0.000000,-70.331047,43.825794,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.999084,-0.004655,0.029637,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816181.446815,255,-90.330399,50.825298,0.000000,-70.331062,43.825817,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.999420,-0.004645,0.029638,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816182.448892,255,-90.330399,50.825298,0.000000,-70.331085,43.825840,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.999603,-0.004638,0.029639,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816183.451203,255,-90.330399,50.825298,0.000000,-70.331108,43.825863,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.999756,-0.004635,0.029640,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816184.453498,255,-90.330399,50.825298,0.000000,-70.331131,43.825882,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.999847,-0.004632,0.029640,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816185.455850,255,-90.330399,50.825298,0.000000,-70.331154,43.825905,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.999908,-0.004630,0.029641,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816186.458013,255,-90.330399,50.825298,0.000000,-70.331177,43.825928,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.999939,-0.004628,0.029641,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816187.459989,255,-90.330399,50.825298,0.000000,-70.331200,43.825951,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.999969,-0.004628,0.029641,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816188.461813,255,-90.330399,50.825298,0.000000,-70.331223,43.825970,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.999969,-0.004628,0.029641,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816189.464064,255,-90.330399,50.825298,0.000000,-70.331238,43.825993,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,324.999969,-0.004628,0.029641,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816190.466256,255,-90.330399,50.825298,0.000000,-70.331261,43.826015,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,325.000000,-0.004627,0.029641,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816191.468462,255,-90.330399,50.825298,0.000000,-70.331284,43.826038,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,325.000000,-0.004627,0.029641,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816192.470446,255,-90.330399,50.825298,0.000000,-70.331306,43.826057,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,325.000000,-0.004627,0.029641,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816193.472662,255,-90.330399,50.825298,0.000000,-70.331329,43.826080,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,325.000000,-0.004627,0.029641,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816194.475011,255,-90.330399,50.825298,0.000000,-70.331352,43.826103,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,325.000000,-0.004627,0.029641,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816195.477210,255,-90.330399,50.825298,0.000000,-70.331375,43.826126,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,325.000000,-0.004627,0.029641,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816196.479518,255,-90.330399,50.825298,0.000000,-70.331398,43.826145,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,325.000000,-0.004627,0.029641,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816197.481640,255,-90.330399,50.825298,0.000000,-70.331421,43.826168,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,325.000000,-0.004627,0.029641,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816198.483315,255,-90.330399,50.825298,0.000000,-70.331436,43.826191,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,325.000000,-0.004627,0.029641,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816199.485810,255,-90.330399,50.825298,0.000000,-70.331459,43.826214,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,325.000000,-0.004627,0.029641,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816200.487822,255,-90.330399,50.825298,0.000000,-70.331482,43.826233,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,325.000000,-0.004627,0.029641,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816201.489977,255,-90.330399,50.825298,0.000000,-70.331505,43.826256,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,325.000000,-0.004627,0.029641,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816202.492038,255,-90.330399,50.825298,0.000000,-70.331528,43.826279,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,325.000000,-0.004627,0.029641,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816203.494153,255,-90.330399,50.825298,0.000000,-70.331551,43.826302,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,325.349670,0.004948,0.029488,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816204.496086,255,-90.330399,50.825298,0.000000,-70.331566,43.826321,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,325.558594,0.011210,0.027719,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816205.498088,255,-90.330399,50.825298,0.000000,-70.331589,43.826344,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,325.712952,0.015565,0.025646,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816206.500261,255,-90.330399,50.825298,0.000000,-70.331612,43.826366,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,338.778748,-0.037468,-0.013718,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816207.502429,255,-90.330399,50.825298,0.000000,-70.331619,43.826405,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,359.321014,0.043001,0.013598,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816208.504813,255,-90.330399,50.825298,0.000000,-70.331619,43.826447,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,9.855519,-0.044786,-0.015827,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816209.507195,255,-90.330399,50.825298,0.000000,-70.331604,43.826488,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,15.100991,-0.027319,-0.040436,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816210.510344,255,-90.330399,50.825298,0.000000,-70.331589,43.826534,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,18.116117,0.028582,0.040169,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816211.262184,255,-90.330399,50.825298,0.000000,-70.331566,43.826576,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,19.607180,0.039486,-0.030182,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816212.514434,255,-90.330399,50.825298,0.000000,-70.331551,43.826618,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,20.327560,0.007138,-0.049286,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816213.266216,255,-90.330399,50.825298,0.000000,-70.331528,43.826660,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,20.675314,-0.011400,-0.048580,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816214.268370,255,-90.330399,50.825298,0.000000,-70.331505,43.826702,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,20.843258,-0.019977,-0.045836,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816215.270633,255,-90.330399,50.825298,0.000000,-70.331482,43.826744,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,20.924313,-0.023895,-0.043921,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816216.272506,255,-90.330399,50.825298,0.000000,-70.331467,43.826786,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,20.963461,-0.025721,-0.042877,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816217.274633,255,-90.330399,50.825298,0.000000,-70.331444,43.826832,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,20.982359,-0.026588,-0.042345,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816218.276625,255,-90.330399,50.825298,0.000000,-70.331421,43.826874,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,20.991488,-0.027002,-0.042082,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816219.278508,255,-90.330399,50.825298,0.000000,-70.331398,43.826916,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,20.995890,-0.027201,-0.041953,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816220.280847,255,-90.330399,50.825298,0.000000,-70.331375,43.826958,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,21.352226,-0.038470,-0.031625,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816221.282843,255,-90.330399,50.825298,0.000000,-70.331360,43.827000,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,21.687271,-0.047248,-0.016051,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816222.285018,255,-90.330399,50.825298,0.000000,-70.331337,43.827042,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,21.849096,-0.049412,-0.007646,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816223.287042,255,-90.330399,50.825298,0.000000,-70.331314,43.827084,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,21.921659,-0.049580,-0.003451,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816224.289129,255,-90.330399,50.825298,0.000000,-70.331314,43.827126,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,328.747070,0.046277,-0.009290,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816225.291208,255,-90.330399,50.825298,0.000000,-70.331360,43.827152,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,298.013458,0.008081,0.043963,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816226.293120,255,-90.330399,50.825298,0.000000,-70.331413,43.827164,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,282.519775,0.029626,-0.035711,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816227.295298,255,-90.330399,50.825298,0.000000,-70.331474,43.827171,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,274.656647,0.016246,0.045273,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816228.297452,255,-90.330399,50.825298,0.000000,-70.331535,43.827171,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,270.696198,0.034219,-0.035211,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816229.299723,255,-90.330399,50.825298,0.000000,-70.331596,43.827171,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,268.784668,0.015283,0.047187,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816230.301925,255,-90.330399,50.825298,0.000000,-70.331657,43.827168,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,267.861359,-0.031296,0.038738,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816231.303820,255,-90.330399,50.825298,0.000000,-70.331718,43.827168,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,267.415955,-0.045725,0.019980,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816232.305952,255,-90.330399,50.825298,0.000000,-70.331779,43.827164,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,267.200806,-0.049186,0.008985,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816233.308402,255,-90.330399,50.825298,0.000000,-70.331841,43.827160,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,267.026886,-0.049782,0.003436,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816234.310382,255,-90.330399,50.825298,0.000000,-70.331902,43.827156,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,266.495575,-0.043739,-0.024020,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816235.312443,255,-90.330399,50.825298,0.000000,-70.331970,43.827152,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,266.239319,-0.035545,-0.035022,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816236.314332,255,-90.330399,50.825298,0.000000,-70.332031,43.827148,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,266.115540,-0.030645,-0.039508,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816237.316636,255,-90.330399,50.825298,0.000000,-70.332092,43.827145,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,266.055786,-0.028043,-0.041396,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816238.318591,255,-90.330399,50.825298,0.000000,-70.332153,43.827141,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,266.026917,-0.026745,-0.042246,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816239.320670,255,-90.330399,50.825298,0.000000,-70.332214,43.827137,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,266.013000,-0.026109,-0.042642,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816240.322817,255,-90.330399,50.825298,0.000000,-70.332275,43.827133,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,266.006287,-0.025800,-0.042830,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816241.324869,255,-90.330399,50.825298,0.000000,-70.332336,43.827129,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,266.003021,-0.025650,-0.042919,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816242.327157,255,-90.330399,50.825298,0.000000,-70.332405,43.827126,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,266.001465,-0.025578,-0.042962,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816243.329233,255,-90.330399,50.825298,0.000000,-70.332466,43.827122,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,266.354553,-0.037124,-0.033194,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816244.331389,255,-90.330399,50.825298,0.000000,-70.332527,43.827118,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,266.688477,-0.046514,-0.018069,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816245.333556,255,-90.330399,50.825298,0.000000,-70.332588,43.827114,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,266.849609,-0.049032,-0.009791,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816246.335453,255,-90.330399,50.825298,0.000000,-70.332649,43.827114,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,266.927399,-0.049678,-0.005661,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816247.337603,255,-90.330399,50.825298,0.000000,-70.332710,43.827110,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,266.964935,-0.049867,-0.003650,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816248.339673,255,-90.330399,50.825298,0.000000,-70.332771,43.827099,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,236.361160,-0.014579,-0.045418,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816249.341508,255,-90.330399,50.825298,0.000000,-70.332809,43.827068,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,206.080246,0.027037,-0.036222,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816250.343442,255,-90.330399,50.825298,0.000000,-70.332825,43.827026,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,190.420380,-0.046246,-0.002234,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816251.345330,255,-90.330399,50.825298,0.000000,-70.332825,43.826984,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,182.311417,0.035903,-0.031859,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816252.347299,255,-90.330399,50.825298,0.000000,-70.332825,43.826942,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,178.012894,-0.035728,-0.033534,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816253.349212,255,-90.330399,50.825298,0.000000,-70.332825,43.826897,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,175.802505,0.049223,-0.004175,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816254.351134,255,-90.330399,50.825298,0.000000,-70.332817,43.826851,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,174.353424,0.004833,0.049464,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816255.353149,255,-90.330399,50.825298,0.000000,-70.332809,43.826809,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,173.653656,-0.030352,0.039482,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816256.355156,255,-90.330399,50.825298,0.000000,-70.332802,43.826763,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,173.315475,-0.042494,0.026158,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816257.357146,255,-90.330399,50.825298,0.000000,-70.332794,43.826717,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,173.152359,-0.046502,0.018372,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816258.359157,255,-90.330399,50.825298,0.000000,-70.332787,43.826675,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,173.073563,-0.047890,0.014371,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816259.361182,255,-90.330399,50.825298,0.000000,-70.332771,43.826630,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,173.035522,-0.048438,0.012400,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816260.363160,255,-90.330399,50.825298,0.000000,-70.332764,43.826584,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,173.017151,-0.048674,0.011440,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816261.365346,255,-90.330399,50.825298,0.000000,-70.332756,43.826538,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,172.938156,-0.048683,0.010954,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816262.367217,255,-90.330399,50.825298,0.000000,-70.332748,43.826500,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,172.487244,-0.048176,-0.013002,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816263.368813,255,-90.330399,50.825298,0.000000,-70.332741,43.826454,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,172.338486,-0.043871,-0.021144,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816264.370028,255,-90.330399,50.825298,0.000000,-70.332733,43.826412,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,172.338486,-0.041619,-0.020058,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816265.371300,255,-90.330399,50.825298,0.000000,-70.332726,43.826374,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,172.338486,-0.039276,-0.018930,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816266.372554,255,-90.330399,50.825298,0.000000,-70.332718,43.826336,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,172.338486,-0.037024,-0.017844,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816267.373705,255,-90.330399,50.825298,0.000000,-70.332710,43.826302,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,172.338486,-0.034772,-0.016759,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816268.374904,255,-90.330399,50.825298,0.000000,-70.332703,43.826267,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,172.338486,-0.032520,-0.015673,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816269.376326,255,-90.330399,50.825298,0.000000,-70.332695,43.826237,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,172.338486,-0.030268,-0.014588,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816270.377598,255,-90.330399,50.825298,0.000000,-70.332687,43.826206,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,172.338486,-0.028016,-0.013503,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816271.378829,255,-90.330399,50.825298,0.000000,-70.332680,43.826180,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,172.338486,-0.025764,-0.012417,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816272.379941,255,-90.330399,50.825298,0.000000,-70.332680,43.826157,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,172.338486,-0.023512,-0.011332,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816273.380877,255,-90.330399,50.825298,0.000000,-70.332672,43.826134,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,172.338486,-0.021260,-0.010246,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816274.381993,255,-90.330399,50.825298,0.000000,-70.332672,43.826115,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,172.338486,-0.019008,-0.009161,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816275.383164,255,-90.330399,50.825298,0.000000,-70.332664,43.826096,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,172.338486,-0.016756,-0.008075,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816276.384483,255,-90.330399,50.825298,0.000000,-70.332664,43.826080,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,172.338486,-0.014503,-0.006990,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816277.385855,255,-90.330399,50.825298,0.000000,-70.332657,43.826069,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,172.338486,-0.012251,-0.005905,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816278.387292,255,-90.330399,50.825298,0.000000,-70.332657,43.826057,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,172.338486,-0.009909,-0.004776,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816279.388882,255,-90.330399,50.825298,0.000000,-70.332657,43.826050,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,172.338486,-0.007657,-0.003690,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816280.390024,255,-90.330399,50.825298,0.000000,-70.332657,43.826042,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,172.338486,-0.005405,-0.002605,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816281.391234,255,-90.330399,50.825298,0.000000,-70.332657,43.826038,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,172.338486,-0.003153,-0.001520,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816282.392479,255,-90.330399,50.825298,0.000000,-70.332649,43.826035,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,172.338486,-0.000901,-0.000434,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816283.393728,255,-90.330399,50.825298,0.000000,-70.332649,43.826035,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,172.338486,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816284.394837,255,-90.330399,50.825298,0.000000,-70.332649,43.826035,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,172.338486,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816285.395908,255,-90.330399,50.825298,0.000000,-70.332649,43.826035,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,172.338486,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816286.397535,255,-90.330399,50.825298,0.000000,-70.332649,43.826035,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,172.338486,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816287.398744,255,-90.330399,50.825298,0.000000,-70.332649,43.826035,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,172.338486,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816288.399953,255,-90.330399,50.825298,0.000000,-70.332649,43.826035,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,172.338486,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816289.401189,255,-90.330399,50.825298,0.000000,-70.332649,43.826035,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,172.338486,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 +1700816290.402203,255,-90.330399,50.825298,0.000000,-70.332649,43.826035,0.000000,49463.585938,6378031.000000,0.000000,0.000000,0.000000,172.338486,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,255,0,255,15,60,25.000000 diff --git a/log/lauv-150/2023-11-24/165544/clientCommand.txt b/log/lauv-150/2023-11-24/165544/clientCommand.txt new file mode 100644 index 0000000..aec84da --- /dev/null +++ b/log/lauv-150/2023-11-24/165544/clientCommand.txt @@ -0,0 +1 @@ +PlanControl:1700816151.420578,east_waypt_survey,start diff --git a/log/lauv-150/2023-11-24/165544/faultLog.txt b/log/lauv-150/2023-11-24/165544/faultLog.txt new file mode 100644 index 0000000..5c5785a --- /dev/null +++ b/log/lauv-150/2023-11-24/165544/faultLog.txt @@ -0,0 +1 @@ +stamp,level,type,id,first,source diff --git a/log/lauv-150/2023-11-24/165544/missionHistory.txt b/log/lauv-150/2023-11-24/165544/missionHistory.txt new file mode 100644 index 0000000..118fc55 --- /dev/null +++ b/log/lauv-150/2023-11-24/165544/missionHistory.txt @@ -0,0 +1,889 @@ +stamp,state,taskName,destName,errorCode +1700816151.636889,3,east_waypt_survey,,0 +1700816151.637013,3,east_waypt_survey,,0 +1700816151.887230,3,east_waypt_survey,station_1,0 +1700816151.887305,3,east_waypt_survey,station_1,0 +1700816152.137587,3,east_waypt_survey,station_1,0 +1700816152.137741,3,east_waypt_survey,station_1,0 +1700816152.388094,3,east_waypt_survey,station_1,0 +1700816152.388143,3,east_waypt_survey,station_1,0 +1700816152.638431,3,east_waypt_survey,station_1,0 +1700816152.638606,3,east_waypt_survey,station_1,0 +1700816152.888885,3,east_waypt_survey,station_1,0 +1700816152.888964,3,east_waypt_survey,station_1,0 +1700816153.139320,3,east_waypt_survey,station_1,0 +1700816153.139503,3,east_waypt_survey,station_1,0 +1700816153.389962,3,east_waypt_survey,station_1,0 +1700816153.390013,3,east_waypt_survey,station_1,0 +1700816153.640319,3,east_waypt_survey,station_1,0 +1700816153.640502,3,east_waypt_survey,station_1,0 +1700816153.890820,3,east_waypt_survey,station_1,0 +1700816153.890900,3,east_waypt_survey,station_1,0 +1700816154.141196,3,east_waypt_survey,station_1,0 +1700816154.141344,3,east_waypt_survey,station_1,0 +1700816154.391752,3,east_waypt_survey,station_1,0 +1700816154.391790,3,east_waypt_survey,station_1,0 +1700816154.642092,3,east_waypt_survey,station_1,0 +1700816154.642248,3,east_waypt_survey,station_1,0 +1700816154.892563,3,east_waypt_survey,station_1,0 +1700816154.892644,3,east_waypt_survey,station_1,0 +1700816155.142900,3,east_waypt_survey,station_1,0 +1700816155.142973,3,east_waypt_survey,station_1,0 +1700816155.393383,3,east_waypt_survey,station_1,0 +1700816155.393429,3,east_waypt_survey,station_1,0 +1700816155.643767,3,east_waypt_survey,station_1,0 +1700816155.643933,3,east_waypt_survey,station_1,0 +1700816155.894197,3,east_waypt_survey,station_1,0 +1700816155.894270,3,east_waypt_survey,station_1,0 +1700816156.144547,3,east_waypt_survey,station_1,0 +1700816156.144738,3,east_waypt_survey,station_1,0 +1700816156.395147,3,east_waypt_survey,station_1,0 +1700816156.395193,3,east_waypt_survey,station_1,0 +1700816156.645481,3,east_waypt_survey,station_1,0 +1700816156.645690,3,east_waypt_survey,station_1,0 +1700816156.895898,3,east_waypt_survey,station_1,0 +1700816156.895958,3,east_waypt_survey,station_1,0 +1700816157.146191,3,east_waypt_survey,station_1,0 +1700816157.146265,3,east_waypt_survey,station_1,0 +1700816157.396637,3,east_waypt_survey,station_1,0 +1700816157.396683,3,east_waypt_survey,station_1,0 +1700816157.646972,3,east_waypt_survey,station_1,0 +1700816157.647130,3,east_waypt_survey,station_1,0 +1700816157.897366,3,east_waypt_survey,station_1,0 +1700816157.897398,3,east_waypt_survey,station_1,0 +1700816158.147755,3,east_waypt_survey,station_1,0 +1700816158.147939,3,east_waypt_survey,station_1,0 +1700816158.398383,3,east_waypt_survey,station_1,0 +1700816158.398433,3,east_waypt_survey,station_1,0 +1700816158.648876,3,east_waypt_survey,station_1,0 +1700816158.649093,3,east_waypt_survey,station_1,0 +1700816158.899497,3,east_waypt_survey,station_1,0 +1700816158.899582,3,east_waypt_survey,station_1,0 +1700816159.150058,3,east_waypt_survey,station_1,0 +1700816159.150231,3,east_waypt_survey,station_1,0 +1700816159.400614,3,east_waypt_survey,station_1,0 +1700816159.400660,3,east_waypt_survey,station_1,0 +1700816159.650992,3,east_waypt_survey,station_1,0 +1700816159.651184,3,east_waypt_survey,station_1,0 +1700816159.901570,3,east_waypt_survey,station_1,0 +1700816159.901644,3,east_waypt_survey,station_1,0 +1700816160.151908,3,east_waypt_survey,station_1,0 +1700816160.152072,3,east_waypt_survey,station_1,0 +1700816160.402565,3,east_waypt_survey,station_1,0 +1700816160.402608,3,east_waypt_survey,station_1,0 +1700816160.652958,3,east_waypt_survey,station_1,0 +1700816160.653132,3,east_waypt_survey,station_1,0 +1700816160.903373,3,east_waypt_survey,station_1,0 +1700816160.903488,3,east_waypt_survey,station_1,0 +1700816161.153892,3,east_waypt_survey,station_1,0 +1700816161.154056,3,east_waypt_survey,station_1,0 +1700816161.404460,3,east_waypt_survey,station_1,0 +1700816161.404507,3,east_waypt_survey,station_1,0 +1700816161.654748,3,east_waypt_survey,station_1,0 +1700816161.654844,3,east_waypt_survey,station_1,0 +1700816161.905202,3,east_waypt_survey,station_1,0 +1700816161.905284,3,east_waypt_survey,station_1,0 +1700816162.155824,3,east_waypt_survey,station_1,0 +1700816162.156101,3,east_waypt_survey,station_1,0 +1700816162.406618,3,east_waypt_survey,station_1,0 +1700816162.406668,3,east_waypt_survey,station_1,0 +1700816162.657089,3,east_waypt_survey,station_1,0 +1700816162.657253,3,east_waypt_survey,station_1,0 +1700816162.907642,3,east_waypt_survey,station_1,0 +1700816162.907723,3,east_waypt_survey,station_1,0 +1700816163.158146,3,east_waypt_survey,station_1,0 +1700816163.158353,3,east_waypt_survey,station_1,0 +1700816163.408895,3,east_waypt_survey,station_1,0 +1700816163.408979,3,east_waypt_survey,station_1,0 +1700816163.659206,3,east_waypt_survey,station_1,0 +1700816163.659293,3,east_waypt_survey,station_1,0 +1700816163.909508,3,east_waypt_survey,station_1,0 +1700816163.909553,3,east_waypt_survey,station_1,0 +1700816164.159803,3,east_waypt_survey,station_1,0 +1700816164.159953,3,east_waypt_survey,station_1,0 +1700816164.410454,3,east_waypt_survey,station_1,0 +1700816164.410499,3,east_waypt_survey,station_1,0 +1700816164.660832,3,east_waypt_survey,station_1,0 +1700816164.661007,3,east_waypt_survey,station_1,0 +1700816164.911403,3,east_waypt_survey,station_1,0 +1700816164.911525,3,east_waypt_survey,station_1,0 +1700816165.161930,3,east_waypt_survey,station_1,0 +1700816165.162137,3,east_waypt_survey,station_1,0 +1700816165.412587,3,east_waypt_survey,station_1,0 +1700816165.412640,3,east_waypt_survey,station_1,0 +1700816165.663114,3,east_waypt_survey,station_1,0 +1700816165.663362,3,east_waypt_survey,station_1,0 +1700816165.913647,3,east_waypt_survey,station_1,0 +1700816165.913750,3,east_waypt_survey,station_1,0 +1700816166.164061,3,east_waypt_survey,station_1,0 +1700816166.164281,3,east_waypt_survey,station_1,0 +1700816166.414804,3,east_waypt_survey,station_1,0 +1700816166.414870,3,east_waypt_survey,station_1,0 +1700816166.665261,3,east_waypt_survey,station_1,0 +1700816166.665480,3,east_waypt_survey,station_1,0 +1700816166.915784,3,east_waypt_survey,station_1,0 +1700816166.915881,3,east_waypt_survey,station_1,0 +1700816167.166319,3,east_waypt_survey,station_1,0 +1700816167.166625,3,east_waypt_survey,station_1,0 +1700816167.417047,3,east_waypt_survey,station_1,0 +1700816167.417093,3,east_waypt_survey,station_1,0 +1700816167.667395,3,east_waypt_survey,station_1,0 +1700816167.667640,3,east_waypt_survey,station_1,0 +1700816167.918048,3,east_waypt_survey,station_1,0 +1700816167.918133,3,east_waypt_survey,station_1,0 +1700816168.168441,3,east_waypt_survey,station_1,0 +1700816168.168606,3,east_waypt_survey,station_1,0 +1700816168.419149,3,east_waypt_survey,station_1,0 +1700816168.419207,3,east_waypt_survey,station_1,0 +1700816168.669613,3,east_waypt_survey,station_1,0 +1700816168.669817,3,east_waypt_survey,station_1,0 +1700816168.920096,3,east_waypt_survey,station_1,0 +1700816168.920166,3,east_waypt_survey,station_1,0 +1700816169.170424,3,east_waypt_survey,station_1,0 +1700816169.170549,3,east_waypt_survey,station_1,0 +1700816169.420924,3,east_waypt_survey,station_1,0 +1700816169.420946,3,east_waypt_survey,station_1,0 +1700816169.671263,3,east_waypt_survey,station_1,0 +1700816169.671435,3,east_waypt_survey,station_1,0 +1700816169.921715,3,east_waypt_survey,station_1,0 +1700816169.921764,3,east_waypt_survey,station_1,0 +1700816170.172053,3,east_waypt_survey,station_1,0 +1700816170.172273,3,east_waypt_survey,station_1,0 +1700816170.422816,3,east_waypt_survey,station_1,0 +1700816170.422866,3,east_waypt_survey,station_1,0 +1700816170.673221,3,east_waypt_survey,station_1,0 +1700816170.673445,3,east_waypt_survey,station_1,0 +1700816170.923743,3,east_waypt_survey,station_1,0 +1700816170.923820,3,east_waypt_survey,station_1,0 +1700816171.174182,3,east_waypt_survey,station_1,0 +1700816171.174410,3,east_waypt_survey,station_1,0 +1700816171.424826,3,east_waypt_survey,station_1,0 +1700816171.424873,3,east_waypt_survey,station_1,0 +1700816171.675220,3,east_waypt_survey,station_1,0 +1700816171.675409,3,east_waypt_survey,station_1,0 +1700816171.925819,3,east_waypt_survey,station_1,0 +1700816171.925945,3,east_waypt_survey,station_1,0 +1700816172.176349,3,east_waypt_survey,station_1,0 +1700816172.176520,3,east_waypt_survey,station_1,0 +1700816172.427017,3,east_waypt_survey,station_1,0 +1700816172.427064,3,east_waypt_survey,station_1,0 +1700816172.677489,3,east_waypt_survey,station_1,0 +1700816172.677685,3,east_waypt_survey,station_1,0 +1700816172.928080,3,east_waypt_survey,station_1,0 +1700816172.928181,3,east_waypt_survey,station_1,0 +1700816173.178650,3,east_waypt_survey,station_1,0 +1700816173.178836,3,east_waypt_survey,station_1,0 +1700816173.429352,3,east_waypt_survey,station_1,0 +1700816173.429403,3,east_waypt_survey,station_1,0 +1700816173.679824,3,east_waypt_survey,station_1,0 +1700816173.680043,3,east_waypt_survey,station_1,0 +1700816173.930341,3,east_waypt_survey,station_1,0 +1700816173.930422,3,east_waypt_survey,station_1,0 +1700816174.180783,3,east_waypt_survey,station_1,0 +1700816174.180966,3,east_waypt_survey,station_1,0 +1700816174.431415,3,east_waypt_survey,station_1,0 +1700816174.431491,3,east_waypt_survey,station_1,0 +1700816174.681898,3,east_waypt_survey,station_1,0 +1700816174.682102,3,east_waypt_survey,station_1,0 +1700816174.932451,3,east_waypt_survey,station_1,0 +1700816174.932526,3,east_waypt_survey,station_1,0 +1700816175.182878,3,east_waypt_survey,station_1,0 +1700816175.183066,3,east_waypt_survey,station_1,0 +1700816175.433637,3,east_waypt_survey,station_1,0 +1700816175.433732,3,east_waypt_survey,station_1,0 +1700816175.684107,3,east_waypt_survey,station_1,0 +1700816175.684314,3,east_waypt_survey,station_1,0 +1700816175.934627,3,east_waypt_survey,station_1,0 +1700816175.934742,3,east_waypt_survey,station_1,0 +1700816176.185073,3,east_waypt_survey,station_1,0 +1700816176.185256,3,east_waypt_survey,station_1,0 +1700816176.435720,3,east_waypt_survey,station_1,0 +1700816176.435772,3,east_waypt_survey,station_1,0 +1700816176.686148,3,east_waypt_survey,station_1,0 +1700816176.686395,3,east_waypt_survey,station_1,0 +1700816176.936679,3,east_waypt_survey,station_1,0 +1700816176.936762,3,east_waypt_survey,station_1,0 +1700816177.187112,3,east_waypt_survey,station_1,0 +1700816177.187281,3,east_waypt_survey,station_1,0 +1700816177.437817,3,east_waypt_survey,station_1,0 +1700816177.437907,3,east_waypt_survey,station_1,0 +1700816177.688327,3,east_waypt_survey,station_1,0 +1700816177.688572,3,east_waypt_survey,station_1,0 +1700816177.938860,3,east_waypt_survey,station_1,0 +1700816177.938932,3,east_waypt_survey,station_1,0 +1700816178.189248,3,east_waypt_survey,station_1,0 +1700816178.189446,3,east_waypt_survey,station_1,0 +1700816178.439911,3,east_waypt_survey,station_1,0 +1700816178.439962,3,east_waypt_survey,station_1,0 +1700816178.690451,3,east_waypt_survey,station_1,0 +1700816178.690627,3,east_waypt_survey,station_1,0 +1700816178.941016,3,east_waypt_survey,station_1,0 +1700816178.941098,3,east_waypt_survey,station_1,0 +1700816179.191474,3,east_waypt_survey,station_1,0 +1700816179.191676,3,east_waypt_survey,station_1,0 +1700816179.442198,3,east_waypt_survey,station_1,0 +1700816179.442246,3,east_waypt_survey,station_1,0 +1700816179.692630,3,east_waypt_survey,station_1,0 +1700816179.692813,3,east_waypt_survey,station_1,0 +1700816179.943235,3,east_waypt_survey,station_1,0 +1700816179.943323,3,east_waypt_survey,station_1,0 +1700816180.193744,3,east_waypt_survey,station_1,0 +1700816180.193922,3,east_waypt_survey,station_1,0 +1700816180.444503,3,east_waypt_survey,station_1,0 +1700816180.444554,3,east_waypt_survey,station_1,0 +1700816180.695028,3,east_waypt_survey,station_1,0 +1700816180.695228,3,east_waypt_survey,station_1,0 +1700816180.945673,3,east_waypt_survey,station_1,0 +1700816180.945757,3,east_waypt_survey,station_1,0 +1700816181.196136,3,east_waypt_survey,station_1,0 +1700816181.196308,3,east_waypt_survey,station_1,0 +1700816181.446905,3,east_waypt_survey,station_1,0 +1700816181.446955,3,east_waypt_survey,station_1,0 +1700816181.697298,3,east_waypt_survey,station_1,0 +1700816181.697479,3,east_waypt_survey,station_1,0 +1700816181.947801,3,east_waypt_survey,station_1,0 +1700816181.947881,3,east_waypt_survey,station_1,0 +1700816182.198327,3,east_waypt_survey,station_1,0 +1700816182.198511,3,east_waypt_survey,station_1,0 +1700816182.448978,3,east_waypt_survey,station_1,0 +1700816182.449028,3,east_waypt_survey,station_1,0 +1700816182.699510,3,east_waypt_survey,station_1,0 +1700816182.699730,3,east_waypt_survey,station_1,0 +1700816182.950145,3,east_waypt_survey,station_1,0 +1700816182.950262,3,east_waypt_survey,station_1,0 +1700816183.200666,3,east_waypt_survey,station_1,0 +1700816183.200848,3,east_waypt_survey,station_1,0 +1700816183.451292,3,east_waypt_survey,station_1,0 +1700816183.451382,3,east_waypt_survey,station_1,0 +1700816183.701726,3,east_waypt_survey,station_1,0 +1700816183.701968,3,east_waypt_survey,station_1,0 +1700816183.952265,3,east_waypt_survey,station_1,0 +1700816183.952354,3,east_waypt_survey,station_1,0 +1700816184.202823,3,east_waypt_survey,station_1,0 +1700816184.203028,3,east_waypt_survey,station_1,0 +1700816184.453582,3,east_waypt_survey,station_1,0 +1700816184.453632,3,east_waypt_survey,station_1,0 +1700816184.703996,3,east_waypt_survey,station_1,0 +1700816184.704273,3,east_waypt_survey,station_1,0 +1700816184.954684,3,east_waypt_survey,station_1,0 +1700816184.954780,3,east_waypt_survey,station_1,0 +1700816185.205185,3,east_waypt_survey,station_1,0 +1700816185.205377,3,east_waypt_survey,station_1,0 +1700816185.455933,3,east_waypt_survey,station_1,0 +1700816185.455988,3,east_waypt_survey,station_1,0 +1700816185.706465,3,east_waypt_survey,station_1,0 +1700816185.706644,3,east_waypt_survey,station_1,0 +1700816185.956919,3,east_waypt_survey,station_1,0 +1700816185.956993,3,east_waypt_survey,station_1,0 +1700816186.207312,3,east_waypt_survey,station_1,0 +1700816186.207534,3,east_waypt_survey,station_1,0 +1700816186.458093,3,east_waypt_survey,station_1,0 +1700816186.458139,3,east_waypt_survey,station_1,0 +1700816186.708484,3,east_waypt_survey,station_1,0 +1700816186.708657,3,east_waypt_survey,station_1,0 +1700816186.959014,3,east_waypt_survey,station_1,0 +1700816186.959093,3,east_waypt_survey,station_1,0 +1700816187.209479,3,east_waypt_survey,station_1,0 +1700816187.209665,3,east_waypt_survey,station_1,0 +1700816187.460064,3,east_waypt_survey,station_1,0 +1700816187.460110,3,east_waypt_survey,station_1,0 +1700816187.710346,3,east_waypt_survey,station_1,0 +1700816187.710518,3,east_waypt_survey,station_1,0 +1700816187.960785,3,east_waypt_survey,station_1,0 +1700816187.960861,3,east_waypt_survey,station_1,0 +1700816188.211291,3,east_waypt_survey,station_1,0 +1700816188.211483,3,east_waypt_survey,station_1,0 +1700816188.461893,3,east_waypt_survey,station_1,0 +1700816188.461944,3,east_waypt_survey,station_1,0 +1700816188.712259,3,east_waypt_survey,station_1,0 +1700816188.712488,3,east_waypt_survey,station_1,0 +1700816188.962779,3,east_waypt_survey,station_1,0 +1700816188.962863,3,east_waypt_survey,station_1,0 +1700816189.213242,3,east_waypt_survey,station_1,0 +1700816189.213503,3,east_waypt_survey,station_1,0 +1700816189.464155,3,east_waypt_survey,station_1,0 +1700816189.464248,3,east_waypt_survey,station_1,0 +1700816189.714637,3,east_waypt_survey,station_1,0 +1700816189.714835,3,east_waypt_survey,station_1,0 +1700816189.965241,3,east_waypt_survey,station_1,0 +1700816189.965347,3,east_waypt_survey,station_1,0 +1700816190.215648,3,east_waypt_survey,station_1,0 +1700816190.215841,3,east_waypt_survey,station_1,0 +1700816190.466347,3,east_waypt_survey,station_1,0 +1700816190.466434,3,east_waypt_survey,station_1,0 +1700816190.716769,3,east_waypt_survey,station_1,0 +1700816190.716988,3,east_waypt_survey,station_1,0 +1700816190.967314,3,east_waypt_survey,station_1,0 +1700816190.967397,3,east_waypt_survey,station_1,0 +1700816191.217830,3,east_waypt_survey,station_1,0 +1700816191.218102,3,east_waypt_survey,station_1,0 +1700816191.468546,3,east_waypt_survey,station_1,0 +1700816191.468606,3,east_waypt_survey,station_1,0 +1700816191.718930,3,east_waypt_survey,station_1,0 +1700816191.719146,3,east_waypt_survey,station_1,0 +1700816191.969454,3,east_waypt_survey,station_1,0 +1700816191.969546,3,east_waypt_survey,station_1,0 +1700816192.219856,3,east_waypt_survey,station_1,0 +1700816192.220038,3,east_waypt_survey,station_1,0 +1700816192.470579,3,east_waypt_survey,station_1,0 +1700816192.470669,3,east_waypt_survey,station_1,0 +1700816192.721080,3,east_waypt_survey,station_1,0 +1700816192.721297,3,east_waypt_survey,station_1,0 +1700816192.971683,3,east_waypt_survey,station_1,0 +1700816192.971787,3,east_waypt_survey,station_1,0 +1700816193.222134,3,east_waypt_survey,station_1,0 +1700816193.222310,3,east_waypt_survey,station_1,0 +1700816193.472746,3,east_waypt_survey,station_1,0 +1700816193.472797,3,east_waypt_survey,station_1,0 +1700816193.723217,3,east_waypt_survey,station_1,0 +1700816193.723498,3,east_waypt_survey,station_1,0 +1700816193.973858,3,east_waypt_survey,station_1,0 +1700816193.973960,3,east_waypt_survey,station_1,0 +1700816194.224314,3,east_waypt_survey,station_1,0 +1700816194.224492,3,east_waypt_survey,station_1,0 +1700816194.475093,3,east_waypt_survey,station_1,0 +1700816194.475157,3,east_waypt_survey,station_1,0 +1700816194.725582,3,east_waypt_survey,station_1,0 +1700816194.725800,3,east_waypt_survey,station_1,0 +1700816194.976124,3,east_waypt_survey,station_1,0 +1700816194.976207,3,east_waypt_survey,station_1,0 +1700816195.226674,3,east_waypt_survey,station_1,0 +1700816195.226854,3,east_waypt_survey,station_1,0 +1700816195.477306,3,east_waypt_survey,station_1,0 +1700816195.477396,3,east_waypt_survey,station_1,0 +1700816195.727873,3,east_waypt_survey,station_1,0 +1700816195.728099,3,east_waypt_survey,station_1,0 +1700816195.978529,3,east_waypt_survey,station_1,0 +1700816195.978631,3,east_waypt_survey,station_1,0 +1700816196.228926,3,east_waypt_survey,station_1,0 +1700816196.229131,3,east_waypt_survey,station_1,0 +1700816196.479614,3,east_waypt_survey,station_1,0 +1700816196.479694,3,east_waypt_survey,station_1,0 +1700816196.730146,3,east_waypt_survey,station_1,0 +1700816196.730352,3,east_waypt_survey,station_1,0 +1700816196.980591,3,east_waypt_survey,station_1,0 +1700816196.980657,3,east_waypt_survey,station_1,0 +1700816197.230970,3,east_waypt_survey,station_1,0 +1700816197.231198,3,east_waypt_survey,station_1,0 +1700816197.481724,3,east_waypt_survey,station_1,0 +1700816197.481774,3,east_waypt_survey,station_1,0 +1700816197.732094,3,east_waypt_survey,station_1,0 +1700816197.732284,3,east_waypt_survey,station_1,0 +1700816197.982472,3,east_waypt_survey,station_1,0 +1700816197.982512,3,east_waypt_survey,station_1,0 +1700816198.232803,3,east_waypt_survey,station_1,0 +1700816198.232990,3,east_waypt_survey,station_1,0 +1700816198.483401,3,east_waypt_survey,station_1,0 +1700816198.483497,3,east_waypt_survey,station_1,0 +1700816198.734054,3,east_waypt_survey,station_1,0 +1700816198.734263,3,east_waypt_survey,station_1,0 +1700816198.984664,3,east_waypt_survey,station_1,0 +1700816198.984747,3,east_waypt_survey,station_1,0 +1700816199.235173,3,east_waypt_survey,station_1,0 +1700816199.235377,3,east_waypt_survey,station_1,0 +1700816199.485937,3,east_waypt_survey,station_1,0 +1700816199.486022,3,east_waypt_survey,station_1,0 +1700816199.736382,3,east_waypt_survey,station_1,0 +1700816199.736625,3,east_waypt_survey,station_1,0 +1700816199.986891,3,east_waypt_survey,station_1,0 +1700816199.986990,3,east_waypt_survey,station_1,0 +1700816200.237326,3,east_waypt_survey,station_1,0 +1700816200.237492,3,east_waypt_survey,station_1,0 +1700816200.487907,3,east_waypt_survey,station_1,0 +1700816200.487957,3,east_waypt_survey,station_1,0 +1700816200.738416,3,east_waypt_survey,station_1,0 +1700816200.738638,3,east_waypt_survey,station_1,0 +1700816200.988919,3,east_waypt_survey,station_1,0 +1700816200.989023,3,east_waypt_survey,station_1,0 +1700816201.239389,3,east_waypt_survey,station_1,0 +1700816201.239613,3,east_waypt_survey,station_1,0 +1700816201.490094,3,east_waypt_survey,station_1,0 +1700816201.490155,3,east_waypt_survey,station_1,0 +1700816201.740514,3,east_waypt_survey,station_1,0 +1700816201.740747,3,east_waypt_survey,station_1,0 +1700816201.991051,3,east_waypt_survey,station_1,0 +1700816201.991151,3,east_waypt_survey,station_1,0 +1700816202.241469,3,east_waypt_survey,station_1,0 +1700816202.241698,3,east_waypt_survey,station_1,0 +1700816202.492118,3,east_waypt_survey,station_1,0 +1700816202.492164,3,east_waypt_survey,station_1,0 +1700816202.742541,3,east_waypt_survey,station_1,0 +1700816202.742726,3,east_waypt_survey,station_1,0 +1700816202.992998,3,east_waypt_survey,station_1,0 +1700816202.993103,3,east_waypt_survey,station_1,0 +1700816203.243598,3,east_waypt_survey,station_1,0 +1700816203.243838,3,east_waypt_survey,station_1,0 +1700816203.494229,3,east_waypt_survey,station_1,0 +1700816203.494275,3,east_waypt_survey,station_1,0 +1700816203.744577,3,east_waypt_survey,station_1,0 +1700816203.744785,3,east_waypt_survey,station_1,0 +1700816203.995200,3,east_waypt_survey,station_1,0 +1700816203.995285,3,east_waypt_survey,station_1,0 +1700816204.245591,3,east_waypt_survey,station_1,0 +1700816204.245769,3,east_waypt_survey,station_1,0 +1700816204.496168,3,east_waypt_survey,station_1,0 +1700816204.496217,3,east_waypt_survey,station_1,0 +1700816204.746646,3,east_waypt_survey,station_1,0 +1700816204.746814,3,east_waypt_survey,station_1,0 +1700816204.997085,3,east_waypt_survey,station_1,0 +1700816204.997159,3,east_waypt_survey,station_1,0 +1700816205.247624,3,east_waypt_survey,station_1,0 +1700816205.247784,3,east_waypt_survey,station_1,0 +1700816205.498176,3,east_waypt_survey,station_2,0 +1700816205.498264,3,east_waypt_survey,station_2,0 +1700816205.748588,3,east_waypt_survey,station_2,0 +1700816205.748792,3,east_waypt_survey,station_2,0 +1700816205.999093,3,east_waypt_survey,station_2,0 +1700816205.999204,3,east_waypt_survey,station_2,0 +1700816206.249636,3,east_waypt_survey,station_2,0 +1700816206.249919,3,east_waypt_survey,station_2,0 +1700816206.500339,3,east_waypt_survey,station_2,0 +1700816206.500385,3,east_waypt_survey,station_2,0 +1700816206.750770,3,east_waypt_survey,station_2,0 +1700816206.751020,3,east_waypt_survey,station_2,0 +1700816207.001310,3,east_waypt_survey,station_2,0 +1700816207.001406,3,east_waypt_survey,station_2,0 +1700816207.251759,3,east_waypt_survey,station_2,0 +1700816207.251980,3,east_waypt_survey,station_2,0 +1700816207.502521,3,east_waypt_survey,station_2,0 +1700816207.502597,3,east_waypt_survey,station_2,0 +1700816207.753042,3,east_waypt_survey,station_2,0 +1700816207.753253,3,east_waypt_survey,station_2,0 +1700816208.003582,3,east_waypt_survey,station_2,0 +1700816208.003689,3,east_waypt_survey,station_2,0 +1700816208.254130,3,east_waypt_survey,station_2,0 +1700816208.254381,3,east_waypt_survey,station_2,0 +1700816208.504937,3,east_waypt_survey,station_2,0 +1700816208.505015,3,east_waypt_survey,station_2,0 +1700816208.755498,3,east_waypt_survey,station_2,0 +1700816208.755718,3,east_waypt_survey,station_2,0 +1700816209.006097,3,east_waypt_survey,station_2,0 +1700816209.006199,3,east_waypt_survey,station_2,0 +1700816209.256571,3,east_waypt_survey,station_2,0 +1700816209.256772,3,east_waypt_survey,station_2,0 +1700816209.507279,3,east_waypt_survey,station_2,0 +1700816209.507329,3,east_waypt_survey,station_2,0 +1700816209.757773,3,east_waypt_survey,station_2,0 +1700816209.757994,3,east_waypt_survey,station_2,0 +1700816210.008292,3,east_waypt_survey,station_2,0 +1700816210.008397,3,east_waypt_survey,station_2,0 +1700816210.259767,3,east_waypt_survey,station_2,0 +1700816210.260007,3,east_waypt_survey,station_2,0 +1700816210.510436,3,east_waypt_survey,station_2,0 +1700816210.510486,3,east_waypt_survey,station_2,0 +1700816210.760841,3,east_waypt_survey,station_2,0 +1700816210.761025,3,east_waypt_survey,station_2,0 +1700816211.011443,3,east_waypt_survey,station_2,0 +1700816211.011558,3,east_waypt_survey,station_2,0 +1700816211.261864,3,east_waypt_survey,station_2,0 +1700816211.262110,3,east_waypt_survey,station_2,0 +1700816211.512533,3,east_waypt_survey,station_2,0 +1700816211.512610,3,east_waypt_survey,station_2,0 +1700816211.763012,3,east_waypt_survey,station_2,0 +1700816211.763177,3,east_waypt_survey,station_2,0 +1700816212.013480,3,east_waypt_survey,station_2,0 +1700816212.013564,3,east_waypt_survey,station_2,0 +1700816212.263851,3,east_waypt_survey,station_2,0 +1700816212.264042,3,east_waypt_survey,station_2,0 +1700816212.514515,3,east_waypt_survey,station_2,0 +1700816212.514575,3,east_waypt_survey,station_2,0 +1700816212.764933,3,east_waypt_survey,station_2,0 +1700816212.765110,3,east_waypt_survey,station_2,0 +1700816213.015537,3,east_waypt_survey,station_2,0 +1700816213.015616,3,east_waypt_survey,station_2,0 +1700816213.265930,3,east_waypt_survey,station_2,0 +1700816213.266128,3,east_waypt_survey,station_2,0 +1700816213.516584,3,east_waypt_survey,station_2,0 +1700816213.516685,3,east_waypt_survey,station_2,0 +1700816213.767124,3,east_waypt_survey,station_2,0 +1700816213.767311,3,east_waypt_survey,station_2,0 +1700816214.017682,3,east_waypt_survey,station_2,0 +1700816214.017784,3,east_waypt_survey,station_2,0 +1700816214.268097,3,east_waypt_survey,station_2,0 +1700816214.268287,3,east_waypt_survey,station_2,0 +1700816214.518791,3,east_waypt_survey,station_2,0 +1700816214.518888,3,east_waypt_survey,station_2,0 +1700816214.769337,3,east_waypt_survey,station_2,0 +1700816214.769553,3,east_waypt_survey,station_2,0 +1700816215.019860,3,east_waypt_survey,station_2,0 +1700816215.019962,3,east_waypt_survey,station_2,0 +1700816215.270318,3,east_waypt_survey,station_2,0 +1700816215.270538,3,east_waypt_survey,station_2,0 +1700816215.520971,3,east_waypt_survey,station_2,0 +1700816215.521066,3,east_waypt_survey,station_2,0 +1700816215.771392,3,east_waypt_survey,station_2,0 +1700816215.771638,3,east_waypt_survey,station_2,0 +1700816216.022015,3,east_waypt_survey,station_2,0 +1700816216.022119,3,east_waypt_survey,station_2,0 +1700816216.272369,3,east_waypt_survey,station_2,0 +1700816216.272471,3,east_waypt_survey,station_2,0 +1700816216.522949,3,east_waypt_survey,station_2,0 +1700816216.523061,3,east_waypt_survey,station_2,0 +1700816216.773540,3,east_waypt_survey,station_2,0 +1700816216.773643,3,east_waypt_survey,station_2,0 +1700816217.024087,3,east_waypt_survey,station_2,0 +1700816217.024203,3,east_waypt_survey,station_2,0 +1700816217.274526,3,east_waypt_survey,station_2,0 +1700816217.274603,3,east_waypt_survey,station_2,0 +1700816217.524936,3,east_waypt_survey,station_2,0 +1700816217.525035,3,east_waypt_survey,station_2,0 +1700816217.775502,3,east_waypt_survey,station_2,0 +1700816217.775715,3,east_waypt_survey,station_2,0 +1700816218.026143,3,east_waypt_survey,station_2,0 +1700816218.026219,3,east_waypt_survey,station_2,0 +1700816218.276519,3,east_waypt_survey,station_2,0 +1700816218.276591,3,east_waypt_survey,station_2,0 +1700816218.526917,3,east_waypt_survey,station_2,0 +1700816218.526989,3,east_waypt_survey,station_2,0 +1700816218.777368,3,east_waypt_survey,station_2,0 +1700816218.777441,3,east_waypt_survey,station_2,0 +1700816219.027797,3,east_waypt_survey,station_2,0 +1700816219.027874,3,east_waypt_survey,station_2,0 +1700816219.278207,3,east_waypt_survey,station_2,0 +1700816219.278293,3,east_waypt_survey,station_2,0 +1700816219.528844,3,east_waypt_survey,station_2,0 +1700816219.528916,3,east_waypt_survey,station_2,0 +1700816219.779289,3,east_waypt_survey,station_2,0 +1700816219.779405,3,east_waypt_survey,station_2,0 +1700816220.122432,3,east_waypt_survey,station_2,0 +1700816220.122514,3,east_waypt_survey,station_2,0 +1700816220.280743,3,east_waypt_survey,station_2,0 +1700816220.280782,3,east_waypt_survey,station_2,0 +1700816220.531260,3,east_waypt_survey,station_2,0 +1700816220.531332,3,east_waypt_survey,station_2,0 +1700816220.781651,3,east_waypt_survey,station_2,0 +1700816220.781734,3,east_waypt_survey,station_2,0 +1700816221.032182,3,east_waypt_survey,station_2,0 +1700816221.032270,3,east_waypt_survey,station_2,0 +1700816221.282595,3,east_waypt_survey,station_2,0 +1700816221.282664,3,east_waypt_survey,station_2,0 +1700816221.533264,3,east_waypt_survey,station_2,0 +1700816221.533351,3,east_waypt_survey,station_2,0 +1700816221.783764,3,east_waypt_survey,station_2,0 +1700816221.783839,3,east_waypt_survey,station_2,0 +1700816222.034303,3,east_waypt_survey,station_2,0 +1700816222.034381,3,east_waypt_survey,station_2,0 +1700816222.284708,3,east_waypt_survey,station_2,0 +1700816222.284802,3,east_waypt_survey,station_2,0 +1700816222.535438,3,east_waypt_survey,station_2,0 +1700816222.535551,3,east_waypt_survey,station_2,0 +1700816222.785951,3,east_waypt_survey,station_2,0 +1700816222.786011,3,east_waypt_survey,station_2,0 +1700816223.036365,3,east_waypt_survey,station_3,0 +1700816223.036443,3,east_waypt_survey,station_3,0 +1700816223.286769,3,east_waypt_survey,station_3,0 +1700816223.286958,3,east_waypt_survey,station_3,0 +1700816223.537462,3,east_waypt_survey,station_3,0 +1700816223.537551,3,east_waypt_survey,station_3,0 +1700816223.787861,3,east_waypt_survey,station_3,0 +1700816223.788066,3,east_waypt_survey,station_3,0 +1700816224.038429,3,east_waypt_survey,station_3,0 +1700816224.038527,3,east_waypt_survey,station_3,0 +1700816224.288876,3,east_waypt_survey,station_3,0 +1700816224.289062,3,east_waypt_survey,station_3,0 +1700816224.539499,3,east_waypt_survey,station_3,0 +1700816224.539573,3,east_waypt_survey,station_3,0 +1700816224.789953,3,east_waypt_survey,station_3,0 +1700816224.790032,3,east_waypt_survey,station_3,0 +1700816225.040475,3,east_waypt_survey,station_3,0 +1700816225.040556,3,east_waypt_survey,station_3,0 +1700816225.290927,3,east_waypt_survey,station_3,0 +1700816225.291006,3,east_waypt_survey,station_3,0 +1700816225.541551,3,east_waypt_survey,station_3,0 +1700816225.541578,3,east_waypt_survey,station_3,0 +1700816225.791872,3,east_waypt_survey,station_3,0 +1700816225.791951,3,east_waypt_survey,station_3,0 +1700816226.042505,3,east_waypt_survey,station_3,0 +1700816226.042588,3,east_waypt_survey,station_3,0 +1700816226.292881,3,east_waypt_survey,station_3,0 +1700816226.292948,3,east_waypt_survey,station_3,0 +1700816226.543640,3,east_waypt_survey,station_3,0 +1700816226.543721,3,east_waypt_survey,station_3,0 +1700816226.794184,3,east_waypt_survey,station_3,0 +1700816226.794263,3,east_waypt_survey,station_3,0 +1700816227.044693,3,east_waypt_survey,station_3,0 +1700816227.044774,3,east_waypt_survey,station_3,0 +1700816227.295196,3,east_waypt_survey,station_3,0 +1700816227.295229,3,east_waypt_survey,station_3,0 +1700816227.545728,3,east_waypt_survey,station_3,0 +1700816227.545806,3,east_waypt_survey,station_3,0 +1700816227.796172,3,east_waypt_survey,station_3,0 +1700816227.796252,3,east_waypt_survey,station_3,0 +1700816228.046773,3,east_waypt_survey,station_3,0 +1700816228.046852,3,east_waypt_survey,station_3,0 +1700816228.297185,3,east_waypt_survey,station_3,0 +1700816228.297265,3,east_waypt_survey,station_3,0 +1700816228.547835,3,east_waypt_survey,station_3,0 +1700816228.547916,3,east_waypt_survey,station_3,0 +1700816228.798350,3,east_waypt_survey,station_3,0 +1700816228.798430,3,east_waypt_survey,station_3,0 +1700816229.048877,3,east_waypt_survey,station_3,0 +1700816229.048963,3,east_waypt_survey,station_3,0 +1700816229.299413,3,east_waypt_survey,station_3,0 +1700816229.299507,3,east_waypt_survey,station_3,0 +1700816229.550221,3,east_waypt_survey,station_3,0 +1700816229.550297,3,east_waypt_survey,station_3,0 +1700816229.800598,3,east_waypt_survey,station_3,0 +1700816229.800675,3,east_waypt_survey,station_3,0 +1700816230.051184,3,east_waypt_survey,station_3,0 +1700816230.051263,3,east_waypt_survey,station_3,0 +1700816230.301679,3,east_waypt_survey,station_3,0 +1700816230.301748,3,east_waypt_survey,station_3,0 +1700816230.552375,3,east_waypt_survey,station_3,0 +1700816230.552453,3,east_waypt_survey,station_3,0 +1700816230.802887,3,east_waypt_survey,station_3,0 +1700816230.802969,3,east_waypt_survey,station_3,0 +1700816231.053374,3,east_waypt_survey,station_3,0 +1700816231.053474,3,east_waypt_survey,station_3,0 +1700816231.303716,3,east_waypt_survey,station_3,0 +1700816231.303744,3,east_waypt_survey,station_3,0 +1700816231.554180,3,east_waypt_survey,station_3,0 +1700816231.554289,3,east_waypt_survey,station_3,0 +1700816231.804603,3,east_waypt_survey,station_3,0 +1700816231.804679,3,east_waypt_survey,station_3,0 +1700816232.055194,3,east_waypt_survey,station_3,0 +1700816232.055277,3,east_waypt_survey,station_3,0 +1700816232.305675,3,east_waypt_survey,station_3,0 +1700816232.305761,3,east_waypt_survey,station_3,0 +1700816232.556373,3,east_waypt_survey,station_3,0 +1700816232.556454,3,east_waypt_survey,station_3,0 +1700816232.806902,3,east_waypt_survey,station_3,0 +1700816232.807015,3,east_waypt_survey,station_3,0 +1700816233.057628,3,east_waypt_survey,station_3,0 +1700816233.057733,3,east_waypt_survey,station_3,0 +1700816233.308090,3,east_waypt_survey,station_3,0 +1700816233.308173,3,east_waypt_survey,station_3,0 +1700816233.558785,3,east_waypt_survey,station_3,0 +1700816233.558894,3,east_waypt_survey,station_3,0 +1700816233.809229,3,east_waypt_survey,station_3,0 +1700816233.809313,3,east_waypt_survey,station_3,0 +1700816234.059633,3,east_waypt_survey,station_3,0 +1700816234.059703,3,east_waypt_survey,station_3,0 +1700816234.310114,3,east_waypt_survey,station_3,0 +1700816234.310186,3,east_waypt_survey,station_3,0 +1700816234.560748,3,east_waypt_survey,station_3,0 +1700816234.560829,3,east_waypt_survey,station_3,0 +1700816234.811283,3,east_waypt_survey,station_3,0 +1700816234.811364,3,east_waypt_survey,station_3,0 +1700816235.061775,3,east_waypt_survey,station_3,0 +1700816235.061847,3,east_waypt_survey,station_3,0 +1700816235.312193,3,east_waypt_survey,station_3,0 +1700816235.312267,3,east_waypt_survey,station_3,0 +1700816235.562763,3,east_waypt_survey,station_3,0 +1700816235.562811,3,east_waypt_survey,station_3,0 +1700816235.813193,3,east_waypt_survey,station_3,0 +1700816235.813293,3,east_waypt_survey,station_3,0 +1700816236.063750,3,east_waypt_survey,station_3,0 +1700816236.063854,3,east_waypt_survey,station_3,0 +1700816236.314154,3,east_waypt_survey,station_3,0 +1700816236.314249,3,east_waypt_survey,station_3,0 +1700816236.564837,3,east_waypt_survey,station_3,0 +1700816236.564926,3,east_waypt_survey,station_3,0 +1700816236.815396,3,east_waypt_survey,station_3,0 +1700816236.815524,3,east_waypt_survey,station_3,0 +1700816237.065962,3,east_waypt_survey,station_3,0 +1700816237.066069,3,east_waypt_survey,station_3,0 +1700816237.316450,3,east_waypt_survey,station_3,0 +1700816237.316545,3,east_waypt_survey,station_3,0 +1700816237.567123,3,east_waypt_survey,station_3,0 +1700816237.567209,3,east_waypt_survey,station_3,0 +1700816237.817495,3,east_waypt_survey,station_3,0 +1700816237.817596,3,east_waypt_survey,station_3,0 +1700816238.067978,3,east_waypt_survey,station_3,0 +1700816238.068087,3,east_waypt_survey,station_3,0 +1700816238.318403,3,east_waypt_survey,station_3,0 +1700816238.318504,3,east_waypt_survey,station_3,0 +1700816238.569034,3,east_waypt_survey,station_3,0 +1700816238.569131,3,east_waypt_survey,station_3,0 +1700816238.819472,3,east_waypt_survey,station_3,0 +1700816238.819578,3,east_waypt_survey,station_3,0 +1700816239.069994,3,east_waypt_survey,station_3,0 +1700816239.070093,3,east_waypt_survey,station_3,0 +1700816239.320476,3,east_waypt_survey,station_3,0 +1700816239.320579,3,east_waypt_survey,station_3,0 +1700816239.571137,3,east_waypt_survey,station_3,0 +1700816239.571237,3,east_waypt_survey,station_3,0 +1700816239.821633,3,east_waypt_survey,station_3,0 +1700816239.821748,3,east_waypt_survey,station_3,0 +1700816240.072180,3,east_waypt_survey,station_3,0 +1700816240.072253,3,east_waypt_survey,station_3,0 +1700816240.322671,3,east_waypt_survey,station_3,0 +1700816240.322746,3,east_waypt_survey,station_3,0 +1700816240.573276,3,east_waypt_survey,station_3,0 +1700816240.573344,3,east_waypt_survey,station_3,0 +1700816240.823784,3,east_waypt_survey,station_3,0 +1700816240.823863,3,east_waypt_survey,station_3,0 +1700816241.074340,3,east_waypt_survey,station_3,0 +1700816241.074416,3,east_waypt_survey,station_3,0 +1700816241.324745,3,east_waypt_survey,station_3,0 +1700816241.324927,3,east_waypt_survey,station_3,0 +1700816241.575486,3,east_waypt_survey,station_3,0 +1700816241.575568,3,east_waypt_survey,station_3,0 +1700816241.826024,3,east_waypt_survey,station_3,0 +1700816241.826109,3,east_waypt_survey,station_3,0 +1700816242.076511,3,east_waypt_survey,station_3,0 +1700816242.076589,3,east_waypt_survey,station_3,0 +1700816242.327036,3,east_waypt_survey,station_3,0 +1700816242.327211,3,east_waypt_survey,station_3,0 +1700816242.577769,3,east_waypt_survey,station_3,0 +1700816242.577849,3,east_waypt_survey,station_3,0 +1700816242.828158,3,east_waypt_survey,station_3,0 +1700816242.828229,3,east_waypt_survey,station_3,0 +1700816243.078719,3,east_waypt_survey,station_3,0 +1700816243.078796,3,east_waypt_survey,station_3,0 +1700816243.329121,3,east_waypt_survey,station_3,0 +1700816243.329285,3,east_waypt_survey,station_3,0 +1700816243.579829,3,east_waypt_survey,station_3,0 +1700816243.579908,3,east_waypt_survey,station_3,0 +1700816243.830328,3,east_waypt_survey,station_3,0 +1700816243.830408,3,east_waypt_survey,station_3,0 +1700816244.080811,3,east_waypt_survey,station_3,0 +1700816244.080889,3,east_waypt_survey,station_3,0 +1700816244.331222,3,east_waypt_survey,station_3,0 +1700816244.331499,3,east_waypt_survey,station_3,0 +1700816244.582028,3,east_waypt_survey,station_3,0 +1700816244.582107,3,east_waypt_survey,station_3,0 +1700816244.832437,3,east_waypt_survey,station_3,0 +1700816244.832514,3,east_waypt_survey,station_3,0 +1700816245.082939,3,east_waypt_survey,station_3,0 +1700816245.083024,3,east_waypt_survey,station_3,0 +1700816245.333438,3,east_waypt_survey,station_3,0 +1700816245.333611,3,east_waypt_survey,station_3,0 +1700816245.584035,3,east_waypt_survey,station_3,0 +1700816245.584123,3,east_waypt_survey,station_3,0 +1700816245.834518,3,east_waypt_survey,station_3,0 +1700816245.834600,3,east_waypt_survey,station_3,0 +1700816246.084982,3,east_waypt_survey,station_3,0 +1700816246.085055,3,east_waypt_survey,station_3,0 +1700816246.335341,3,east_waypt_survey,station_3,0 +1700816246.335544,3,east_waypt_survey,station_3,0 +1700816246.586082,3,east_waypt_survey,station_3,0 +1700816246.586177,3,east_waypt_survey,station_3,0 +1700816246.836506,3,east_waypt_survey,station_3,0 +1700816246.836581,3,east_waypt_survey,station_3,0 +1700816247.087039,3,east_waypt_survey,station_3,0 +1700816247.087103,3,east_waypt_survey,station_3,0 +1700816247.337454,3,east_waypt_survey,station_4,0 +1700816247.337666,3,east_waypt_survey,station_4,0 +1700816247.588161,3,east_waypt_survey,station_4,0 +1700816247.588280,3,east_waypt_survey,station_4,0 +1700816247.838605,3,east_waypt_survey,station_4,0 +1700816247.838708,3,east_waypt_survey,station_4,0 +1700816248.089131,3,east_waypt_survey,station_4,0 +1700816248.089214,3,east_waypt_survey,station_4,0 +1700816248.339547,3,east_waypt_survey,station_4,0 +1700816248.339734,3,east_waypt_survey,station_4,0 +1700816248.590209,3,east_waypt_survey,station_4,0 +1700816248.590284,3,east_waypt_survey,station_4,0 +1700816248.840559,3,east_waypt_survey,station_4,0 +1700816248.840637,3,east_waypt_survey,station_4,0 +1700816249.090980,3,east_waypt_survey,station_4,0 +1700816249.091060,3,east_waypt_survey,station_4,0 +1700816249.341401,3,east_waypt_survey,station_4,0 +1700816249.341560,3,east_waypt_survey,station_4,0 +1700816249.591921,3,east_waypt_survey,station_4,0 +1700816249.592031,3,east_waypt_survey,station_4,0 +1700816249.842438,3,east_waypt_survey,station_4,0 +1700816249.842514,3,east_waypt_survey,station_4,0 +1700816250.092923,3,east_waypt_survey,station_4,0 +1700816250.092991,3,east_waypt_survey,station_4,0 +1700816250.343301,3,east_waypt_survey,station_4,0 +1700816250.343526,3,east_waypt_survey,station_4,0 +1700816250.593945,3,east_waypt_survey,station_4,0 +1700816250.594050,3,east_waypt_survey,station_4,0 +1700816250.844348,3,east_waypt_survey,station_4,0 +1700816250.844420,3,east_waypt_survey,station_4,0 +1700816251.094774,3,east_waypt_survey,station_4,0 +1700816251.094867,3,east_waypt_survey,station_4,0 +1700816251.345197,3,east_waypt_survey,station_4,0 +1700816251.345393,3,east_waypt_survey,station_4,0 +1700816251.595807,3,east_waypt_survey,station_4,0 +1700816251.595915,3,east_waypt_survey,station_4,0 +1700816251.846251,3,east_waypt_survey,station_4,0 +1700816251.846359,3,east_waypt_survey,station_4,0 +1700816252.096761,3,east_waypt_survey,station_4,0 +1700816252.096830,3,east_waypt_survey,station_4,0 +1700816252.347169,3,east_waypt_survey,station_4,0 +1700816252.347373,3,east_waypt_survey,station_4,0 +1700816252.597859,3,east_waypt_survey,station_4,0 +1700816252.597931,3,east_waypt_survey,station_4,0 +1700816252.848240,3,east_waypt_survey,station_4,0 +1700816252.848322,3,east_waypt_survey,station_4,0 +1700816253.098848,3,east_waypt_survey,station_4,0 +1700816253.098922,3,east_waypt_survey,station_4,0 +1700816253.349157,3,east_waypt_survey,station_4,0 +1700816253.349230,3,east_waypt_survey,station_4,0 +1700816253.599580,3,east_waypt_survey,station_4,0 +1700816253.599680,3,east_waypt_survey,station_4,0 +1700816253.850124,3,east_waypt_survey,station_4,0 +1700816253.850241,3,east_waypt_survey,station_4,0 +1700816254.100632,3,east_waypt_survey,station_4,0 +1700816254.100702,3,east_waypt_survey,station_4,0 +1700816254.351007,3,east_waypt_survey,station_4,0 +1700816254.351206,3,east_waypt_survey,station_4,0 +1700816254.601660,3,east_waypt_survey,station_4,0 +1700816254.601760,3,east_waypt_survey,station_4,0 +1700816254.852043,3,east_waypt_survey,station_4,0 +1700816254.852146,3,east_waypt_survey,station_4,0 +1700816255.102526,3,east_waypt_survey,station_4,0 +1700816255.102632,3,east_waypt_survey,station_4,0 +1700816255.353000,3,east_waypt_survey,station_4,0 +1700816255.353220,3,east_waypt_survey,station_4,0 +1700816255.603669,3,east_waypt_survey,station_4,0 +1700816255.603764,3,east_waypt_survey,station_4,0 +1700816255.854031,3,east_waypt_survey,station_4,0 +1700816255.854128,3,east_waypt_survey,station_4,0 +1700816256.104605,3,east_waypt_survey,station_4,0 +1700816256.104707,3,east_waypt_survey,station_4,0 +1700816256.355012,3,east_waypt_survey,station_4,0 +1700816256.355226,3,east_waypt_survey,station_4,0 +1700816256.605764,3,east_waypt_survey,station_4,0 +1700816256.605841,3,east_waypt_survey,station_4,0 +1700816256.856136,3,east_waypt_survey,station_4,0 +1700816256.856218,3,east_waypt_survey,station_4,0 +1700816257.106614,3,east_waypt_survey,station_4,0 +1700816257.106693,3,east_waypt_survey,station_4,0 +1700816257.357033,3,east_waypt_survey,station_4,0 +1700816257.357247,3,east_waypt_survey,station_4,0 +1700816257.607695,3,east_waypt_survey,station_4,0 +1700816257.607778,3,east_waypt_survey,station_4,0 +1700816257.858160,3,east_waypt_survey,station_4,0 +1700816257.858255,3,east_waypt_survey,station_4,0 +1700816258.108640,3,east_waypt_survey,station_4,0 +1700816258.108714,3,east_waypt_survey,station_4,0 +1700816258.359026,3,east_waypt_survey,station_4,0 +1700816258.359247,3,east_waypt_survey,station_4,0 +1700816258.609727,3,east_waypt_survey,station_4,0 +1700816258.609793,3,east_waypt_survey,station_4,0 +1700816258.860089,3,east_waypt_survey,station_4,0 +1700816258.860180,3,east_waypt_survey,station_4,0 +1700816259.110558,3,east_waypt_survey,station_4,0 +1700816259.110655,3,east_waypt_survey,station_4,0 +1700816259.361016,3,east_waypt_survey,station_4,0 +1700816259.361258,3,east_waypt_survey,station_4,0 +1700816259.611719,3,east_waypt_survey,station_4,0 +1700816259.611789,3,east_waypt_survey,station_4,0 +1700816259.862053,3,east_waypt_survey,station_4,0 +1700816259.862149,3,east_waypt_survey,station_4,0 +1700816260.112519,3,east_waypt_survey,station_4,0 +1700816260.112607,3,east_waypt_survey,station_4,0 +1700816260.363007,3,east_waypt_survey,station_4,0 +1700816260.363231,3,east_waypt_survey,station_4,0 +1700816260.613792,3,east_waypt_survey,station_4,0 +1700816260.613886,3,east_waypt_survey,station_4,0 +1700816260.864209,3,east_waypt_survey,station_4,0 +1700816260.864310,3,east_waypt_survey,station_4,0 +1700816261.114706,3,east_waypt_survey,station_4,0 +1700816261.114811,3,east_waypt_survey,station_4,0 +1700816261.365203,3,east_waypt_survey,station_4,0 +1700816261.365408,3,east_waypt_survey,station_4,0 +1700816261.615700,3,east_waypt_survey,station_4,0 +1700816261.615743,3,east_waypt_survey,station_4,0 +1700816261.866130,3,east_waypt_survey,station_4,0 +1700816261.866232,3,east_waypt_survey,station_4,0 +1700816262.116685,3,east_waypt_survey,station_4,0 +1700816262.116789,3,east_waypt_survey,station_4,0 +1700816262.367120,3,east_waypt_survey,station_4,0 +1700816262.367281,3,east_waypt_survey,station_4,0 +1700816262.617658,3,east_waypt_survey,,0 +1700816262.617752,3,east_waypt_survey,,0 diff --git a/log/lauv-150/2023-11-24/165544/motionControl.txt b/log/lauv-150/2023-11-24/165544/motionControl.txt new file mode 100644 index 0000000..9aa72a7 --- /dev/null +++ b/log/lauv-150/2023-11-24/165544/motionControl.txt @@ -0,0 +1,1327 @@ +stamp,desired_heading,desired_speed,desired_depth +1700816144.877387,0.000000,0.000000,0.000000 +1700816144.877420,0.000000,0.000000,0.000000 +1700816144.877428,0.000000,0.000000,0.000000 +1700816144.877435,0.000000,0.000000,0.000000 +1700816144.877442,0.000000,0.000000,0.000000 +1700816144.877449,0.000000,0.000000,0.000000 +1700816151.887262,0.000000,0.000000,10.000000 +1700816151.887273,0.000000,3.000000,10.000000 +1700816151.887283,321.000000,3.000000,10.000000 +1700816152.137617,321.000000,3.000000,10.000000 +1700816152.137627,321.000000,3.000000,10.000000 +1700816152.137635,321.000000,3.000000,10.000000 +1700816152.388105,321.000000,3.000000,10.000000 +1700816152.388113,321.000000,3.000000,10.000000 +1700816152.388121,322.000000,3.000000,10.000000 +1700816152.638461,322.000000,3.000000,10.000000 +1700816152.638472,322.000000,3.000000,10.000000 +1700816152.638481,322.000000,3.000000,10.000000 +1700816152.888923,322.000000,3.000000,10.000000 +1700816152.888934,322.000000,3.000000,10.000000 +1700816152.888942,322.000000,3.000000,10.000000 +1700816153.139357,322.000000,3.000000,10.000000 +1700816153.139368,322.000000,3.000000,10.000000 +1700816153.139376,322.000000,3.000000,10.000000 +1700816153.389976,322.000000,3.000000,10.000000 +1700816153.389986,322.000000,3.000000,10.000000 +1700816153.389994,322.000000,3.000000,10.000000 +1700816153.640350,322.000000,3.000000,10.000000 +1700816153.640361,322.000000,3.000000,10.000000 +1700816153.640370,322.000000,3.000000,10.000000 +1700816153.890856,322.000000,3.000000,10.000000 +1700816153.890868,322.000000,3.000000,10.000000 +1700816153.890877,323.000000,3.000000,10.000000 +1700816154.141226,323.000000,3.000000,10.000000 +1700816154.141237,323.000000,3.000000,10.000000 +1700816154.141244,323.000000,3.000000,10.000000 +1700816154.391762,323.000000,3.000000,10.000000 +1700816154.391769,323.000000,3.000000,10.000000 +1700816154.391776,323.000000,3.000000,10.000000 +1700816154.642123,323.000000,3.000000,10.000000 +1700816154.642134,323.000000,3.000000,10.000000 +1700816154.642142,323.000000,3.000000,10.000000 +1700816154.892602,323.000000,3.000000,10.000000 +1700816154.892614,323.000000,3.000000,10.000000 +1700816154.892622,323.000000,3.000000,10.000000 +1700816155.142919,323.000000,3.000000,10.000000 +1700816155.142922,323.000000,3.000000,10.000000 +1700816155.142925,323.000000,3.000000,10.000000 +1700816155.393394,323.000000,3.000000,10.000000 +1700816155.393403,323.000000,3.000000,10.000000 +1700816155.393412,324.000000,3.000000,10.000000 +1700816155.643805,324.000000,3.000000,10.000000 +1700816155.643815,324.000000,3.000000,10.000000 +1700816155.643824,324.000000,3.000000,10.000000 +1700816155.894230,324.000000,3.000000,10.000000 +1700816155.894241,324.000000,3.000000,10.000000 +1700816155.894249,324.000000,3.000000,10.000000 +1700816156.144579,324.000000,3.000000,10.000000 +1700816156.144590,324.000000,3.000000,10.000000 +1700816156.144599,324.000000,3.000000,10.000000 +1700816156.395158,324.000000,3.000000,10.000000 +1700816156.395168,324.000000,3.000000,10.000000 +1700816156.395175,324.000000,3.000000,10.000000 +1700816156.645521,324.000000,3.000000,10.000000 +1700816156.645533,324.000000,3.000000,10.000000 +1700816156.645542,324.000000,3.000000,10.000000 +1700816156.895925,324.000000,3.000000,10.000000 +1700816156.895934,324.000000,3.000000,10.000000 +1700816156.895941,324.000000,3.000000,10.000000 +1700816157.146205,324.000000,3.000000,10.000000 +1700816157.146209,324.000000,3.000000,10.000000 +1700816157.146211,324.000000,3.000000,10.000000 +1700816157.396649,324.000000,3.000000,10.000000 +1700816157.396658,324.000000,3.000000,10.000000 +1700816157.396666,324.000000,3.000000,10.000000 +1700816157.647001,324.000000,3.000000,10.000000 +1700816157.647012,324.000000,3.000000,10.000000 +1700816157.647020,324.000000,3.000000,10.000000 +1700816157.897381,324.000000,3.000000,10.000000 +1700816157.897386,324.000000,3.000000,10.000000 +1700816157.897390,324.000000,3.000000,10.000000 +1700816158.147786,324.000000,3.000000,10.000000 +1700816158.147797,324.000000,3.000000,10.000000 +1700816158.147804,324.000000,3.000000,10.000000 +1700816158.398395,324.000000,3.000000,10.000000 +1700816158.398405,324.000000,3.000000,10.000000 +1700816158.398414,324.000000,3.000000,10.000000 +1700816158.648913,324.000000,3.000000,10.000000 +1700816158.648923,324.000000,3.000000,10.000000 +1700816158.648933,324.000000,3.000000,10.000000 +1700816158.899533,324.000000,3.000000,10.000000 +1700816158.899544,324.000000,3.000000,10.000000 +1700816158.899553,325.000000,3.000000,10.000000 +1700816159.150097,325.000000,3.000000,10.000000 +1700816159.150108,325.000000,3.000000,10.000000 +1700816159.150116,325.000000,3.000000,10.000000 +1700816159.400625,325.000000,3.000000,10.000000 +1700816159.400634,325.000000,3.000000,10.000000 +1700816159.400642,325.000000,3.000000,10.000000 +1700816159.651028,325.000000,3.000000,10.000000 +1700816159.651043,325.000000,3.000000,10.000000 +1700816159.651057,325.000000,3.000000,10.000000 +1700816159.901604,325.000000,3.000000,10.000000 +1700816159.901615,325.000000,3.000000,10.000000 +1700816159.901623,325.000000,3.000000,10.000000 +1700816160.151943,325.000000,3.000000,10.000000 +1700816160.151954,325.000000,3.000000,10.000000 +1700816160.151963,325.000000,3.000000,10.000000 +1700816160.402576,325.000000,3.000000,10.000000 +1700816160.402585,325.000000,3.000000,10.000000 +1700816160.402592,325.000000,3.000000,10.000000 +1700816160.652996,325.000000,3.000000,10.000000 +1700816160.653009,325.000000,3.000000,10.000000 +1700816160.653020,325.000000,3.000000,10.000000 +1700816160.903411,325.000000,3.000000,10.000000 +1700816160.903430,325.000000,3.000000,10.000000 +1700816160.903443,325.000000,3.000000,10.000000 +1700816161.153928,325.000000,3.000000,10.000000 +1700816161.153938,325.000000,3.000000,10.000000 +1700816161.153947,325.000000,3.000000,10.000000 +1700816161.404472,325.000000,3.000000,10.000000 +1700816161.404481,325.000000,3.000000,10.000000 +1700816161.404489,325.000000,3.000000,10.000000 +1700816161.654768,325.000000,3.000000,10.000000 +1700816161.654774,325.000000,3.000000,10.000000 +1700816161.654779,325.000000,3.000000,10.000000 +1700816161.905242,325.000000,3.000000,10.000000 +1700816161.905254,325.000000,3.000000,10.000000 +1700816161.905263,325.000000,3.000000,10.000000 +1700816162.155888,325.000000,3.000000,10.000000 +1700816162.155906,325.000000,3.000000,10.000000 +1700816162.155923,325.000000,3.000000,10.000000 +1700816162.406630,325.000000,3.000000,10.000000 +1700816162.406640,325.000000,3.000000,10.000000 +1700816162.406649,325.000000,3.000000,10.000000 +1700816162.657124,325.000000,3.000000,10.000000 +1700816162.657135,325.000000,3.000000,10.000000 +1700816162.657143,325.000000,3.000000,10.000000 +1700816162.907680,325.000000,3.000000,10.000000 +1700816162.907692,325.000000,3.000000,10.000000 +1700816162.907702,325.000000,3.000000,10.000000 +1700816163.158183,325.000000,3.000000,10.000000 +1700816163.158195,325.000000,3.000000,10.000000 +1700816163.158205,325.000000,3.000000,10.000000 +1700816163.408915,325.000000,3.000000,10.000000 +1700816163.408930,325.000000,3.000000,10.000000 +1700816163.408944,325.000000,3.000000,10.000000 +1700816163.659223,325.000000,3.000000,10.000000 +1700816163.659227,325.000000,3.000000,10.000000 +1700816163.659230,325.000000,3.000000,10.000000 +1700816163.909530,325.000000,3.000000,10.000000 +1700816163.909536,325.000000,3.000000,10.000000 +1700816163.909541,325.000000,3.000000,10.000000 +1700816164.159832,325.000000,3.000000,10.000000 +1700816164.159842,325.000000,3.000000,10.000000 +1700816164.159851,325.000000,3.000000,10.000000 +1700816164.410465,325.000000,3.000000,10.000000 +1700816164.410474,325.000000,3.000000,10.000000 +1700816164.410482,325.000000,3.000000,10.000000 +1700816164.660868,325.000000,3.000000,10.000000 +1700816164.660880,325.000000,3.000000,10.000000 +1700816164.660889,325.000000,3.000000,10.000000 +1700816164.911442,325.000000,3.000000,10.000000 +1700816164.911480,325.000000,3.000000,10.000000 +1700816164.911493,325.000000,3.000000,10.000000 +1700816165.161970,325.000000,3.000000,10.000000 +1700816165.161988,325.000000,3.000000,10.000000 +1700816165.161997,325.000000,3.000000,10.000000 +1700816165.412600,325.000000,3.000000,10.000000 +1700816165.412610,325.000000,3.000000,10.000000 +1700816165.412618,325.000000,3.000000,10.000000 +1700816165.663159,325.000000,3.000000,10.000000 +1700816165.663178,325.000000,3.000000,10.000000 +1700816165.663192,325.000000,3.000000,10.000000 +1700816165.913681,325.000000,3.000000,10.000000 +1700816165.913698,325.000000,3.000000,10.000000 +1700816165.913713,325.000000,3.000000,10.000000 +1700816166.164100,325.000000,3.000000,10.000000 +1700816166.164115,325.000000,3.000000,10.000000 +1700816166.164127,325.000000,3.000000,10.000000 +1700816166.414819,325.000000,3.000000,10.000000 +1700816166.414831,325.000000,3.000000,10.000000 +1700816166.414842,325.000000,3.000000,10.000000 +1700816166.665299,325.000000,3.000000,10.000000 +1700816166.665315,325.000000,3.000000,10.000000 +1700816166.665327,325.000000,3.000000,10.000000 +1700816166.915824,325.000000,3.000000,10.000000 +1700816166.915839,325.000000,3.000000,10.000000 +1700816166.915851,325.000000,3.000000,10.000000 +1700816167.166359,325.000000,3.000000,10.000000 +1700816167.166374,325.000000,3.000000,10.000000 +1700816167.166388,325.000000,3.000000,10.000000 +1700816167.417059,325.000000,3.000000,10.000000 +1700816167.417068,325.000000,3.000000,10.000000 +1700816167.417076,325.000000,3.000000,10.000000 +1700816167.667429,325.000000,3.000000,10.000000 +1700816167.667441,325.000000,3.000000,10.000000 +1700816167.667452,325.000000,3.000000,10.000000 +1700816167.918090,325.000000,3.000000,10.000000 +1700816167.918102,325.000000,3.000000,10.000000 +1700816167.918111,325.000000,3.000000,10.000000 +1700816168.168475,325.000000,3.000000,10.000000 +1700816168.168486,325.000000,3.000000,10.000000 +1700816168.168494,325.000000,3.000000,10.000000 +1700816168.419166,325.000000,3.000000,10.000000 +1700816168.419176,325.000000,3.000000,10.000000 +1700816168.419184,325.000000,3.000000,10.000000 +1700816168.669649,325.000000,3.000000,10.000000 +1700816168.669659,325.000000,3.000000,10.000000 +1700816168.669667,325.000000,3.000000,10.000000 +1700816168.920126,325.000000,3.000000,10.000000 +1700816168.920137,325.000000,3.000000,10.000000 +1700816168.920145,325.000000,3.000000,10.000000 +1700816169.170447,325.000000,3.000000,10.000000 +1700816169.170455,325.000000,3.000000,10.000000 +1700816169.170461,325.000000,3.000000,10.000000 +1700816169.420930,325.000000,3.000000,10.000000 +1700816169.420934,325.000000,3.000000,10.000000 +1700816169.420939,325.000000,3.000000,10.000000 +1700816169.671295,325.000000,3.000000,10.000000 +1700816169.671307,325.000000,3.000000,10.000000 +1700816169.671316,325.000000,3.000000,10.000000 +1700816169.921738,325.000000,3.000000,10.000000 +1700816169.921746,325.000000,3.000000,10.000000 +1700816169.921751,325.000000,3.000000,10.000000 +1700816170.172095,325.000000,3.000000,10.000000 +1700816170.172106,325.000000,3.000000,10.000000 +1700816170.172114,325.000000,3.000000,10.000000 +1700816170.422829,325.000000,3.000000,10.000000 +1700816170.422839,325.000000,3.000000,10.000000 +1700816170.422848,325.000000,3.000000,10.000000 +1700816170.673258,325.000000,3.000000,10.000000 +1700816170.673271,325.000000,3.000000,10.000000 +1700816170.673285,325.000000,3.000000,10.000000 +1700816170.923780,325.000000,3.000000,10.000000 +1700816170.923791,325.000000,3.000000,10.000000 +1700816170.923799,325.000000,3.000000,10.000000 +1700816171.174220,325.000000,3.000000,10.000000 +1700816171.174234,325.000000,3.000000,10.000000 +1700816171.174248,325.000000,3.000000,10.000000 +1700816171.424838,325.000000,3.000000,10.000000 +1700816171.424847,325.000000,3.000000,10.000000 +1700816171.424855,325.000000,3.000000,10.000000 +1700816171.675250,325.000000,3.000000,10.000000 +1700816171.675260,325.000000,3.000000,10.000000 +1700816171.675269,325.000000,3.000000,10.000000 +1700816171.925874,325.000000,3.000000,10.000000 +1700816171.925892,325.000000,3.000000,10.000000 +1700816171.925907,325.000000,3.000000,10.000000 +1700816172.176384,325.000000,3.000000,10.000000 +1700816172.176397,325.000000,3.000000,10.000000 +1700816172.176406,325.000000,3.000000,10.000000 +1700816172.427029,325.000000,3.000000,10.000000 +1700816172.427038,325.000000,3.000000,10.000000 +1700816172.427046,325.000000,3.000000,10.000000 +1700816172.677525,325.000000,3.000000,10.000000 +1700816172.677536,325.000000,3.000000,10.000000 +1700816172.677545,325.000000,3.000000,10.000000 +1700816172.928122,325.000000,3.000000,10.000000 +1700816172.928138,325.000000,3.000000,10.000000 +1700816172.928151,325.000000,3.000000,10.000000 +1700816173.178688,325.000000,3.000000,10.000000 +1700816173.178700,325.000000,3.000000,10.000000 +1700816173.178709,325.000000,3.000000,10.000000 +1700816173.429365,325.000000,3.000000,10.000000 +1700816173.429374,325.000000,3.000000,10.000000 +1700816173.429383,325.000000,3.000000,10.000000 +1700816173.679864,325.000000,3.000000,10.000000 +1700816173.679875,325.000000,3.000000,10.000000 +1700816173.679885,325.000000,3.000000,10.000000 +1700816173.930379,325.000000,3.000000,10.000000 +1700816173.930390,325.000000,3.000000,10.000000 +1700816173.930400,325.000000,3.000000,10.000000 +1700816174.180823,325.000000,3.000000,10.000000 +1700816174.180834,325.000000,3.000000,10.000000 +1700816174.180843,325.000000,3.000000,10.000000 +1700816174.431428,325.000000,3.000000,10.000000 +1700816174.431437,325.000000,3.000000,10.000000 +1700816174.431446,325.000000,3.000000,10.000000 +1700816174.681927,325.000000,3.000000,10.000000 +1700816174.681938,325.000000,3.000000,10.000000 +1700816174.681946,325.000000,3.000000,10.000000 +1700816174.932483,325.000000,3.000000,10.000000 +1700816174.932495,325.000000,3.000000,10.000000 +1700816174.932504,325.000000,3.000000,10.000000 +1700816175.182909,325.000000,3.000000,10.000000 +1700816175.182921,325.000000,3.000000,10.000000 +1700816175.182930,325.000000,3.000000,10.000000 +1700816175.433660,325.000000,3.000000,10.000000 +1700816175.433681,325.000000,3.000000,10.000000 +1700816175.433697,325.000000,3.000000,10.000000 +1700816175.684156,325.000000,3.000000,10.000000 +1700816175.684169,325.000000,3.000000,10.000000 +1700816175.684181,325.000000,3.000000,10.000000 +1700816175.934677,325.000000,3.000000,10.000000 +1700816175.934693,325.000000,3.000000,10.000000 +1700816175.934708,325.000000,3.000000,10.000000 +1700816176.185106,325.000000,3.000000,10.000000 +1700816176.185117,325.000000,3.000000,10.000000 +1700816176.185126,325.000000,3.000000,10.000000 +1700816176.435734,325.000000,3.000000,10.000000 +1700816176.435744,325.000000,3.000000,10.000000 +1700816176.435752,325.000000,3.000000,10.000000 +1700816176.686209,325.000000,3.000000,10.000000 +1700816176.686227,325.000000,3.000000,10.000000 +1700816176.686239,325.000000,3.000000,10.000000 +1700816176.936709,325.000000,3.000000,10.000000 +1700816176.936722,325.000000,3.000000,10.000000 +1700816176.936732,325.000000,3.000000,10.000000 +1700816177.187146,325.000000,3.000000,10.000000 +1700816177.187161,325.000000,3.000000,10.000000 +1700816177.187170,325.000000,3.000000,10.000000 +1700816177.437836,325.000000,3.000000,10.000000 +1700816177.437855,325.000000,3.000000,10.000000 +1700816177.437871,325.000000,3.000000,10.000000 +1700816177.688362,325.000000,3.000000,10.000000 +1700816177.688378,325.000000,3.000000,10.000000 +1700816177.688390,325.000000,3.000000,10.000000 +1700816177.938892,325.000000,3.000000,10.000000 +1700816177.938903,325.000000,3.000000,10.000000 +1700816177.938912,325.000000,3.000000,10.000000 +1700816178.189283,325.000000,3.000000,10.000000 +1700816178.189295,325.000000,3.000000,10.000000 +1700816178.189304,325.000000,3.000000,10.000000 +1700816178.439924,325.000000,3.000000,10.000000 +1700816178.439934,325.000000,3.000000,10.000000 +1700816178.439943,325.000000,3.000000,10.000000 +1700816178.690491,325.000000,3.000000,10.000000 +1700816178.690502,325.000000,3.000000,10.000000 +1700816178.690510,325.000000,3.000000,10.000000 +1700816178.941055,325.000000,3.000000,10.000000 +1700816178.941067,325.000000,3.000000,10.000000 +1700816178.941076,325.000000,3.000000,10.000000 +1700816179.191512,325.000000,3.000000,10.000000 +1700816179.191524,325.000000,3.000000,10.000000 +1700816179.191534,325.000000,3.000000,10.000000 +1700816179.442211,325.000000,3.000000,10.000000 +1700816179.442220,325.000000,3.000000,10.000000 +1700816179.442228,325.000000,3.000000,10.000000 +1700816179.692673,325.000000,3.000000,10.000000 +1700816179.692685,325.000000,3.000000,10.000000 +1700816179.692695,325.000000,3.000000,10.000000 +1700816179.943279,325.000000,3.000000,10.000000 +1700816179.943291,325.000000,3.000000,10.000000 +1700816179.943300,325.000000,3.000000,10.000000 +1700816180.193783,325.000000,3.000000,10.000000 +1700816180.193795,325.000000,3.000000,10.000000 +1700816180.193804,325.000000,3.000000,10.000000 +1700816180.444516,325.000000,3.000000,10.000000 +1700816180.444526,325.000000,3.000000,10.000000 +1700816180.444535,325.000000,3.000000,10.000000 +1700816180.695068,325.000000,3.000000,10.000000 +1700816180.695080,325.000000,3.000000,10.000000 +1700816180.695089,325.000000,3.000000,10.000000 +1700816180.945714,325.000000,3.000000,10.000000 +1700816180.945726,325.000000,3.000000,10.000000 +1700816180.945735,325.000000,3.000000,10.000000 +1700816181.196173,325.000000,3.000000,10.000000 +1700816181.196184,325.000000,3.000000,10.000000 +1700816181.196192,325.000000,3.000000,10.000000 +1700816181.446918,325.000000,3.000000,10.000000 +1700816181.446927,325.000000,3.000000,10.000000 +1700816181.446936,325.000000,3.000000,10.000000 +1700816181.697331,325.000000,3.000000,10.000000 +1700816181.697343,325.000000,3.000000,10.000000 +1700816181.697353,325.000000,3.000000,10.000000 +1700816181.947838,325.000000,3.000000,10.000000 +1700816181.947849,325.000000,3.000000,10.000000 +1700816181.947858,325.000000,3.000000,10.000000 +1700816182.198367,325.000000,3.000000,10.000000 +1700816182.198379,325.000000,3.000000,10.000000 +1700816182.198389,325.000000,3.000000,10.000000 +1700816182.448991,325.000000,3.000000,10.000000 +1700816182.449000,325.000000,3.000000,10.000000 +1700816182.449009,325.000000,3.000000,10.000000 +1700816182.699551,325.000000,3.000000,10.000000 +1700816182.699563,325.000000,3.000000,10.000000 +1700816182.699572,325.000000,3.000000,10.000000 +1700816182.950197,325.000000,3.000000,10.000000 +1700816182.950215,325.000000,3.000000,10.000000 +1700816182.950228,325.000000,3.000000,10.000000 +1700816183.200707,325.000000,3.000000,10.000000 +1700816183.200718,325.000000,3.000000,10.000000 +1700816183.200728,325.000000,3.000000,10.000000 +1700816183.451312,325.000000,3.000000,10.000000 +1700816183.451330,325.000000,3.000000,10.000000 +1700816183.451346,325.000000,3.000000,10.000000 +1700816183.701769,325.000000,3.000000,10.000000 +1700816183.701785,325.000000,3.000000,10.000000 +1700816183.701800,325.000000,3.000000,10.000000 +1700816183.952302,325.000000,3.000000,10.000000 +1700816183.952313,325.000000,3.000000,10.000000 +1700816183.952323,325.000000,3.000000,10.000000 +1700816184.202861,325.000000,3.000000,10.000000 +1700816184.202873,325.000000,3.000000,10.000000 +1700816184.202882,325.000000,3.000000,10.000000 +1700816184.453595,325.000000,3.000000,10.000000 +1700816184.453604,325.000000,3.000000,10.000000 +1700816184.453613,325.000000,3.000000,10.000000 +1700816184.704054,325.000000,3.000000,10.000000 +1700816184.704071,325.000000,3.000000,10.000000 +1700816184.704085,325.000000,3.000000,10.000000 +1700816184.954735,325.000000,3.000000,10.000000 +1700816184.954748,325.000000,3.000000,10.000000 +1700816184.954757,325.000000,3.000000,10.000000 +1700816185.205225,325.000000,3.000000,10.000000 +1700816185.205236,325.000000,3.000000,10.000000 +1700816185.205246,325.000000,3.000000,10.000000 +1700816185.455947,325.000000,3.000000,10.000000 +1700816185.455956,325.000000,3.000000,10.000000 +1700816185.455965,325.000000,3.000000,10.000000 +1700816185.706508,325.000000,3.000000,10.000000 +1700816185.706519,325.000000,3.000000,10.000000 +1700816185.706528,325.000000,3.000000,10.000000 +1700816185.956951,325.000000,3.000000,10.000000 +1700816185.956962,325.000000,3.000000,10.000000 +1700816185.956971,325.000000,3.000000,10.000000 +1700816186.207351,325.000000,3.000000,10.000000 +1700816186.207366,325.000000,3.000000,10.000000 +1700816186.207378,325.000000,3.000000,10.000000 +1700816186.458105,325.000000,3.000000,10.000000 +1700816186.458114,325.000000,3.000000,10.000000 +1700816186.458122,325.000000,3.000000,10.000000 +1700816186.708520,325.000000,3.000000,10.000000 +1700816186.708532,325.000000,3.000000,10.000000 +1700816186.708541,325.000000,3.000000,10.000000 +1700816186.959049,325.000000,3.000000,10.000000 +1700816186.959061,325.000000,3.000000,10.000000 +1700816186.959071,325.000000,3.000000,10.000000 +1700816187.209512,325.000000,3.000000,10.000000 +1700816187.209523,325.000000,3.000000,10.000000 +1700816187.209532,325.000000,3.000000,10.000000 +1700816187.460076,325.000000,3.000000,10.000000 +1700816187.460085,325.000000,3.000000,10.000000 +1700816187.460093,325.000000,3.000000,10.000000 +1700816187.710372,325.000000,3.000000,10.000000 +1700816187.710384,325.000000,3.000000,10.000000 +1700816187.710395,325.000000,3.000000,10.000000 +1700816187.960818,325.000000,3.000000,10.000000 +1700816187.960830,325.000000,3.000000,10.000000 +1700816187.960839,325.000000,3.000000,10.000000 +1700816188.211327,325.000000,3.000000,10.000000 +1700816188.211338,325.000000,3.000000,10.000000 +1700816188.211346,325.000000,3.000000,10.000000 +1700816188.461906,325.000000,3.000000,10.000000 +1700816188.461916,325.000000,3.000000,10.000000 +1700816188.461925,325.000000,3.000000,10.000000 +1700816188.712293,325.000000,3.000000,10.000000 +1700816188.712309,325.000000,3.000000,10.000000 +1700816188.712324,325.000000,3.000000,10.000000 +1700816188.962817,325.000000,3.000000,10.000000 +1700816188.962829,325.000000,3.000000,10.000000 +1700816188.962839,325.000000,3.000000,10.000000 +1700816189.213278,325.000000,3.000000,10.000000 +1700816189.213294,325.000000,3.000000,10.000000 +1700816189.213309,325.000000,3.000000,10.000000 +1700816189.464177,325.000000,3.000000,10.000000 +1700816189.464195,325.000000,3.000000,10.000000 +1700816189.464211,325.000000,3.000000,10.000000 +1700816189.714672,325.000000,3.000000,10.000000 +1700816189.714688,325.000000,3.000000,10.000000 +1700816189.714701,325.000000,3.000000,10.000000 +1700816189.965285,325.000000,3.000000,10.000000 +1700816189.965302,325.000000,3.000000,10.000000 +1700816189.965315,325.000000,3.000000,10.000000 +1700816190.215681,325.000000,3.000000,10.000000 +1700816190.215698,325.000000,3.000000,10.000000 +1700816190.215713,325.000000,3.000000,10.000000 +1700816190.466367,325.000000,3.000000,10.000000 +1700816190.466382,325.000000,3.000000,10.000000 +1700816190.466398,325.000000,3.000000,10.000000 +1700816190.716804,325.000000,3.000000,10.000000 +1700816190.716821,325.000000,3.000000,10.000000 +1700816190.716835,325.000000,3.000000,10.000000 +1700816190.967350,325.000000,3.000000,10.000000 +1700816190.967362,325.000000,3.000000,10.000000 +1700816190.967372,325.000000,3.000000,10.000000 +1700816191.217878,325.000000,3.000000,10.000000 +1700816191.217896,325.000000,3.000000,10.000000 +1700816191.217911,325.000000,3.000000,10.000000 +1700816191.468559,325.000000,3.000000,10.000000 +1700816191.468569,325.000000,3.000000,10.000000 +1700816191.468577,325.000000,3.000000,10.000000 +1700816191.718971,325.000000,3.000000,10.000000 +1700816191.718989,325.000000,3.000000,10.000000 +1700816191.719003,325.000000,3.000000,10.000000 +1700816191.969492,325.000000,3.000000,10.000000 +1700816191.969504,325.000000,3.000000,10.000000 +1700816191.969516,325.000000,3.000000,10.000000 +1700816192.219894,325.000000,3.000000,10.000000 +1700816192.219906,325.000000,3.000000,10.000000 +1700816192.219915,325.000000,3.000000,10.000000 +1700816192.470599,325.000000,3.000000,10.000000 +1700816192.470616,325.000000,3.000000,10.000000 +1700816192.470632,325.000000,3.000000,10.000000 +1700816192.721117,325.000000,3.000000,10.000000 +1700816192.721128,325.000000,3.000000,10.000000 +1700816192.721137,325.000000,3.000000,10.000000 +1700816192.971731,325.000000,3.000000,10.000000 +1700816192.971749,325.000000,3.000000,10.000000 +1700816192.971762,325.000000,3.000000,10.000000 +1700816193.222169,325.000000,3.000000,10.000000 +1700816193.222181,325.000000,3.000000,10.000000 +1700816193.222190,325.000000,3.000000,10.000000 +1700816193.472759,325.000000,3.000000,10.000000 +1700816193.472769,325.000000,3.000000,10.000000 +1700816193.472777,325.000000,3.000000,10.000000 +1700816193.723264,325.000000,3.000000,10.000000 +1700816193.723281,325.000000,3.000000,10.000000 +1700816193.723294,325.000000,3.000000,10.000000 +1700816193.973900,325.000000,3.000000,10.000000 +1700816193.973915,325.000000,3.000000,10.000000 +1700816193.973928,325.000000,3.000000,10.000000 +1700816194.224350,325.000000,3.000000,10.000000 +1700816194.224362,325.000000,3.000000,10.000000 +1700816194.224371,325.000000,3.000000,10.000000 +1700816194.475106,325.000000,3.000000,10.000000 +1700816194.475115,325.000000,3.000000,10.000000 +1700816194.475128,325.000000,3.000000,10.000000 +1700816194.725618,325.000000,3.000000,10.000000 +1700816194.725634,325.000000,3.000000,10.000000 +1700816194.725647,325.000000,3.000000,10.000000 +1700816194.976164,325.000000,3.000000,10.000000 +1700816194.976176,325.000000,3.000000,10.000000 +1700816194.976185,325.000000,3.000000,10.000000 +1700816195.226714,325.000000,3.000000,10.000000 +1700816195.226727,325.000000,3.000000,10.000000 +1700816195.226736,325.000000,3.000000,10.000000 +1700816195.477325,325.000000,3.000000,10.000000 +1700816195.477342,325.000000,3.000000,10.000000 +1700816195.477357,325.000000,3.000000,10.000000 +1700816195.727918,325.000000,3.000000,10.000000 +1700816195.727934,325.000000,3.000000,10.000000 +1700816195.727948,325.000000,3.000000,10.000000 +1700816195.978568,325.000000,3.000000,10.000000 +1700816195.978585,325.000000,3.000000,10.000000 +1700816195.978598,325.000000,3.000000,10.000000 +1700816196.228964,325.000000,3.000000,10.000000 +1700816196.228981,325.000000,3.000000,10.000000 +1700816196.228995,325.000000,3.000000,10.000000 +1700816196.479631,325.000000,3.000000,10.000000 +1700816196.479645,325.000000,3.000000,10.000000 +1700816196.479659,325.000000,3.000000,10.000000 +1700816196.730184,325.000000,3.000000,10.000000 +1700816196.730200,325.000000,3.000000,10.000000 +1700816196.730212,325.000000,3.000000,10.000000 +1700816196.980617,325.000000,3.000000,10.000000 +1700816196.980628,325.000000,3.000000,10.000000 +1700816196.980637,325.000000,3.000000,10.000000 +1700816197.231005,325.000000,3.000000,10.000000 +1700816197.231020,325.000000,3.000000,10.000000 +1700816197.231037,325.000000,3.000000,10.000000 +1700816197.481736,325.000000,3.000000,10.000000 +1700816197.481746,325.000000,3.000000,10.000000 +1700816197.481754,325.000000,3.000000,10.000000 +1700816197.732134,325.000000,3.000000,10.000000 +1700816197.732146,325.000000,3.000000,10.000000 +1700816197.732155,325.000000,3.000000,10.000000 +1700816197.982491,325.000000,3.000000,10.000000 +1700816197.982496,325.000000,3.000000,10.000000 +1700816197.982501,325.000000,3.000000,10.000000 +1700816198.232838,325.000000,3.000000,10.000000 +1700816198.232849,325.000000,3.000000,10.000000 +1700816198.232858,325.000000,3.000000,10.000000 +1700816198.483417,325.000000,3.000000,10.000000 +1700816198.483431,325.000000,3.000000,10.000000 +1700816198.483445,325.000000,3.000000,10.000000 +1700816198.734093,325.000000,3.000000,10.000000 +1700816198.734109,325.000000,3.000000,10.000000 +1700816198.734123,325.000000,3.000000,10.000000 +1700816198.984701,325.000000,3.000000,10.000000 +1700816198.984715,325.000000,3.000000,10.000000 +1700816198.984725,325.000000,3.000000,10.000000 +1700816199.235209,325.000000,3.000000,10.000000 +1700816199.235220,325.000000,3.000000,10.000000 +1700816199.235230,325.000000,3.000000,10.000000 +1700816199.485957,325.000000,3.000000,10.000000 +1700816199.485973,325.000000,3.000000,10.000000 +1700816199.485989,325.000000,3.000000,10.000000 +1700816199.736430,325.000000,3.000000,10.000000 +1700816199.736447,325.000000,3.000000,10.000000 +1700816199.736462,325.000000,3.000000,10.000000 +1700816199.986936,325.000000,3.000000,10.000000 +1700816199.986954,325.000000,3.000000,10.000000 +1700816199.986967,325.000000,3.000000,10.000000 +1700816200.237363,325.000000,3.000000,10.000000 +1700816200.237375,325.000000,3.000000,10.000000 +1700816200.237384,325.000000,3.000000,10.000000 +1700816200.487920,325.000000,3.000000,10.000000 +1700816200.487930,325.000000,3.000000,10.000000 +1700816200.487938,325.000000,3.000000,10.000000 +1700816200.738460,325.000000,3.000000,10.000000 +1700816200.738477,325.000000,3.000000,10.000000 +1700816200.738490,325.000000,3.000000,10.000000 +1700816200.988958,325.000000,3.000000,10.000000 +1700816200.988975,325.000000,3.000000,10.000000 +1700816200.988989,325.000000,3.000000,10.000000 +1700816201.239426,325.000000,3.000000,10.000000 +1700816201.239443,325.000000,3.000000,10.000000 +1700816201.239472,325.000000,3.000000,10.000000 +1700816201.490108,325.000000,3.000000,10.000000 +1700816201.490118,325.000000,3.000000,10.000000 +1700816201.490126,325.000000,3.000000,10.000000 +1700816201.740556,325.000000,3.000000,10.000000 +1700816201.740572,325.000000,3.000000,10.000000 +1700816201.740586,325.000000,3.000000,10.000000 +1700816201.991090,325.000000,3.000000,10.000000 +1700816201.991106,325.000000,3.000000,10.000000 +1700816201.991119,325.000000,3.000000,10.000000 +1700816202.241506,325.000000,3.000000,10.000000 +1700816202.241521,325.000000,3.000000,10.000000 +1700816202.241534,326.000000,3.000000,10.000000 +1700816202.492130,326.000000,3.000000,10.000000 +1700816202.492139,326.000000,3.000000,10.000000 +1700816202.492146,326.000000,3.000000,10.000000 +1700816202.742583,326.000000,3.000000,10.000000 +1700816202.742596,326.000000,3.000000,10.000000 +1700816202.742606,326.000000,3.000000,10.000000 +1700816202.993036,326.000000,3.000000,10.000000 +1700816202.993052,326.000000,3.000000,10.000000 +1700816202.993067,326.000000,3.000000,10.000000 +1700816203.243638,326.000000,3.000000,10.000000 +1700816203.243654,326.000000,3.000000,10.000000 +1700816203.243667,326.000000,3.000000,10.000000 +1700816203.494241,326.000000,3.000000,10.000000 +1700816203.494250,326.000000,3.000000,10.000000 +1700816203.494258,326.000000,3.000000,10.000000 +1700816203.744612,326.000000,3.000000,10.000000 +1700816203.744625,326.000000,3.000000,10.000000 +1700816203.744634,326.000000,3.000000,10.000000 +1700816203.995243,326.000000,3.000000,10.000000 +1700816203.995255,326.000000,3.000000,10.000000 +1700816203.995264,326.000000,3.000000,10.000000 +1700816204.245621,326.000000,3.000000,10.000000 +1700816204.245631,326.000000,3.000000,10.000000 +1700816204.245640,326.000000,3.000000,10.000000 +1700816204.496180,326.000000,3.000000,10.000000 +1700816204.496190,326.000000,3.000000,10.000000 +1700816204.496198,326.000000,3.000000,10.000000 +1700816204.746682,326.000000,3.000000,10.000000 +1700816204.746693,326.000000,3.000000,10.000000 +1700816204.746702,326.000000,3.000000,10.000000 +1700816204.997117,326.000000,3.000000,10.000000 +1700816204.997129,326.000000,3.000000,10.000000 +1700816204.997138,326.000000,3.000000,10.000000 +1700816205.498196,326.000000,3.000000,0.000000 +1700816205.498212,326.000000,0.000000,0.000000 +1700816205.498231,0.000000,0.000000,0.000000 +1700816205.748623,0.000000,0.000000,8.000000 +1700816205.748639,0.000000,5.000000,8.000000 +1700816205.748652,17.000000,5.000000,8.000000 +1700816205.999137,17.000000,5.000000,8.000000 +1700816205.999155,17.000000,5.000000,8.000000 +1700816205.999169,18.000000,5.000000,8.000000 +1700816206.249685,18.000000,5.000000,8.000000 +1700816206.249702,18.000000,5.000000,8.000000 +1700816206.249715,18.000000,5.000000,8.000000 +1700816206.500351,18.000000,5.000000,8.000000 +1700816206.500359,18.000000,5.000000,8.000000 +1700816206.500367,18.000000,5.000000,8.000000 +1700816206.750811,18.000000,5.000000,8.000000 +1700816206.750827,18.000000,5.000000,8.000000 +1700816206.750840,19.000000,5.000000,8.000000 +1700816207.001346,19.000000,5.000000,8.000000 +1700816207.001362,19.000000,5.000000,8.000000 +1700816207.001375,19.000000,5.000000,8.000000 +1700816207.251800,19.000000,5.000000,8.000000 +1700816207.251817,19.000000,5.000000,8.000000 +1700816207.251830,19.000000,5.000000,8.000000 +1700816207.502539,19.000000,5.000000,8.000000 +1700816207.502552,19.000000,5.000000,8.000000 +1700816207.502565,20.000000,5.000000,8.000000 +1700816207.753078,20.000000,5.000000,8.000000 +1700816207.753092,20.000000,5.000000,8.000000 +1700816207.753104,20.000000,5.000000,8.000000 +1700816208.003627,20.000000,5.000000,8.000000 +1700816208.003643,20.000000,5.000000,8.000000 +1700816208.003656,20.000000,5.000000,8.000000 +1700816208.254177,20.000000,5.000000,8.000000 +1700816208.254193,20.000000,5.000000,8.000000 +1700816208.254206,20.000000,5.000000,8.000000 +1700816208.504955,20.000000,5.000000,8.000000 +1700816208.504969,20.000000,5.000000,8.000000 +1700816208.504982,20.000000,5.000000,8.000000 +1700816208.755547,20.000000,5.000000,8.000000 +1700816208.755563,20.000000,5.000000,8.000000 +1700816208.755576,20.000000,5.000000,8.000000 +1700816209.006136,20.000000,5.000000,8.000000 +1700816209.006153,20.000000,5.000000,8.000000 +1700816209.006167,20.000000,5.000000,8.000000 +1700816209.256610,20.000000,5.000000,8.000000 +1700816209.256625,20.000000,5.000000,8.000000 +1700816209.256637,21.000000,5.000000,8.000000 +1700816209.507293,21.000000,5.000000,8.000000 +1700816209.507302,21.000000,5.000000,8.000000 +1700816209.507310,21.000000,5.000000,8.000000 +1700816209.757818,21.000000,5.000000,8.000000 +1700816209.757836,21.000000,5.000000,8.000000 +1700816209.757850,21.000000,5.000000,8.000000 +1700816210.008329,21.000000,5.000000,8.000000 +1700816210.008345,21.000000,5.000000,8.000000 +1700816210.008359,21.000000,5.000000,8.000000 +1700816210.259813,21.000000,5.000000,8.000000 +1700816210.259829,21.000000,5.000000,8.000000 +1700816210.259842,21.000000,5.000000,8.000000 +1700816210.510449,21.000000,5.000000,8.000000 +1700816210.510458,21.000000,5.000000,8.000000 +1700816210.510467,21.000000,5.000000,8.000000 +1700816210.760878,21.000000,5.000000,8.000000 +1700816210.760890,21.000000,5.000000,8.000000 +1700816210.760899,21.000000,5.000000,8.000000 +1700816211.011511,21.000000,5.000000,8.000000 +1700816211.011523,21.000000,5.000000,8.000000 +1700816211.011535,21.000000,5.000000,8.000000 +1700816211.261900,21.000000,5.000000,8.000000 +1700816211.261917,21.000000,5.000000,8.000000 +1700816211.261935,21.000000,5.000000,8.000000 +1700816211.512568,21.000000,5.000000,8.000000 +1700816211.512580,21.000000,5.000000,8.000000 +1700816211.512589,21.000000,5.000000,8.000000 +1700816211.763047,21.000000,5.000000,8.000000 +1700816211.763057,21.000000,5.000000,8.000000 +1700816211.763065,21.000000,5.000000,8.000000 +1700816212.013521,21.000000,5.000000,8.000000 +1700816212.013533,21.000000,5.000000,8.000000 +1700816212.013542,21.000000,5.000000,8.000000 +1700816212.263892,21.000000,5.000000,8.000000 +1700816212.263903,21.000000,5.000000,8.000000 +1700816212.263911,21.000000,5.000000,8.000000 +1700816212.514527,21.000000,5.000000,8.000000 +1700816212.514535,21.000000,5.000000,8.000000 +1700816212.514545,21.000000,5.000000,8.000000 +1700816212.764974,21.000000,5.000000,8.000000 +1700816212.764984,21.000000,5.000000,8.000000 +1700816212.764993,21.000000,5.000000,8.000000 +1700816213.015578,21.000000,5.000000,8.000000 +1700816213.015588,21.000000,5.000000,8.000000 +1700816213.015596,21.000000,5.000000,8.000000 +1700816213.265962,21.000000,5.000000,8.000000 +1700816213.265974,21.000000,5.000000,8.000000 +1700816213.265983,21.000000,5.000000,8.000000 +1700816213.516632,21.000000,5.000000,8.000000 +1700816213.516646,21.000000,5.000000,8.000000 +1700816213.516657,21.000000,5.000000,8.000000 +1700816213.767164,21.000000,5.000000,8.000000 +1700816213.767178,21.000000,5.000000,8.000000 +1700816213.767187,21.000000,5.000000,8.000000 +1700816214.017717,21.000000,5.000000,8.000000 +1700816214.017733,21.000000,5.000000,8.000000 +1700816214.017747,21.000000,5.000000,8.000000 +1700816214.268132,21.000000,5.000000,8.000000 +1700816214.268148,21.000000,5.000000,8.000000 +1700816214.268162,21.000000,5.000000,8.000000 +1700816214.518827,21.000000,5.000000,8.000000 +1700816214.518843,21.000000,5.000000,8.000000 +1700816214.518856,21.000000,5.000000,8.000000 +1700816214.769379,21.000000,5.000000,8.000000 +1700816214.769395,21.000000,5.000000,8.000000 +1700816214.769408,21.000000,5.000000,8.000000 +1700816215.019901,21.000000,5.000000,8.000000 +1700816215.019917,21.000000,5.000000,8.000000 +1700816215.019930,21.000000,5.000000,8.000000 +1700816215.270352,21.000000,5.000000,8.000000 +1700816215.270369,21.000000,5.000000,8.000000 +1700816215.270384,21.000000,5.000000,8.000000 +1700816215.521008,21.000000,5.000000,8.000000 +1700816215.521023,21.000000,5.000000,8.000000 +1700816215.521035,21.000000,5.000000,8.000000 +1700816215.771431,21.000000,5.000000,8.000000 +1700816215.771447,21.000000,5.000000,8.000000 +1700816215.771485,21.000000,5.000000,8.000000 +1700816216.022058,21.000000,5.000000,8.000000 +1700816216.022074,21.000000,5.000000,8.000000 +1700816216.022087,21.000000,5.000000,8.000000 +1700816216.272389,21.000000,5.000000,8.000000 +1700816216.272394,21.000000,5.000000,8.000000 +1700816216.272398,21.000000,5.000000,8.000000 +1700816216.522994,21.000000,5.000000,8.000000 +1700816216.523012,21.000000,5.000000,8.000000 +1700816216.523027,21.000000,5.000000,8.000000 +1700816216.773581,21.000000,5.000000,8.000000 +1700816216.773598,21.000000,5.000000,8.000000 +1700816216.773611,21.000000,5.000000,8.000000 +1700816217.024134,21.000000,5.000000,8.000000 +1700816217.024152,21.000000,5.000000,8.000000 +1700816217.024171,21.000000,5.000000,8.000000 +1700816217.274540,21.000000,5.000000,8.000000 +1700816217.274544,21.000000,5.000000,8.000000 +1700816217.274549,21.000000,5.000000,8.000000 +1700816217.524970,21.000000,5.000000,8.000000 +1700816217.524985,21.000000,5.000000,8.000000 +1700816217.524999,21.000000,5.000000,8.000000 +1700816217.775542,21.000000,5.000000,8.000000 +1700816217.775558,21.000000,5.000000,8.000000 +1700816217.775571,21.000000,5.000000,8.000000 +1700816218.026181,21.000000,5.000000,8.000000 +1700816218.026191,21.000000,5.000000,8.000000 +1700816218.026199,21.000000,5.000000,8.000000 +1700816218.276533,21.000000,5.000000,8.000000 +1700816218.276536,21.000000,5.000000,8.000000 +1700816218.276539,21.000000,5.000000,8.000000 +1700816218.526948,21.000000,5.000000,8.000000 +1700816218.526959,21.000000,5.000000,8.000000 +1700816218.526968,21.000000,5.000000,8.000000 +1700816218.777399,21.000000,5.000000,8.000000 +1700816218.777411,21.000000,5.000000,8.000000 +1700816218.777420,21.000000,5.000000,8.000000 +1700816219.027830,21.000000,5.000000,8.000000 +1700816219.027843,21.000000,5.000000,8.000000 +1700816219.027852,21.000000,5.000000,8.000000 +1700816219.278237,21.000000,5.000000,8.000000 +1700816219.278248,21.000000,5.000000,8.000000 +1700816219.278258,21.000000,5.000000,8.000000 +1700816219.528873,21.000000,5.000000,8.000000 +1700816219.528884,21.000000,5.000000,8.000000 +1700816219.528893,22.000000,5.000000,8.000000 +1700816219.779335,22.000000,5.000000,8.000000 +1700816219.779353,22.000000,5.000000,8.000000 +1700816219.779367,22.000000,5.000000,8.000000 +1700816220.122473,22.000000,5.000000,8.000000 +1700816220.122484,22.000000,5.000000,8.000000 +1700816220.122493,22.000000,5.000000,8.000000 +1700816220.280769,22.000000,5.000000,8.000000 +1700816220.280773,22.000000,5.000000,8.000000 +1700816220.280775,22.000000,5.000000,8.000000 +1700816220.531294,22.000000,5.000000,8.000000 +1700816220.531304,22.000000,5.000000,8.000000 +1700816220.531313,22.000000,5.000000,8.000000 +1700816220.781687,22.000000,5.000000,8.000000 +1700816220.781699,22.000000,5.000000,8.000000 +1700816220.781710,22.000000,5.000000,8.000000 +1700816221.032224,22.000000,5.000000,8.000000 +1700816221.032235,22.000000,5.000000,8.000000 +1700816221.032248,22.000000,5.000000,8.000000 +1700816221.282625,22.000000,5.000000,8.000000 +1700816221.282635,22.000000,5.000000,8.000000 +1700816221.282643,22.000000,5.000000,8.000000 +1700816221.533302,22.000000,5.000000,8.000000 +1700816221.533313,22.000000,5.000000,8.000000 +1700816221.533322,22.000000,5.000000,8.000000 +1700816221.783800,22.000000,5.000000,8.000000 +1700816221.783810,22.000000,5.000000,8.000000 +1700816221.783819,22.000000,5.000000,8.000000 +1700816222.034341,22.000000,5.000000,8.000000 +1700816222.034351,22.000000,5.000000,8.000000 +1700816222.034360,22.000000,5.000000,8.000000 +1700816222.284752,22.000000,5.000000,8.000000 +1700816222.284769,22.000000,5.000000,8.000000 +1700816222.284779,22.000000,5.000000,8.000000 +1700816222.535502,22.000000,5.000000,8.000000 +1700816222.535514,22.000000,5.000000,8.000000 +1700816222.535523,22.000000,5.000000,8.000000 +1700816223.036402,22.000000,5.000000,0.000000 +1700816223.036413,22.000000,0.000000,0.000000 +1700816223.036421,0.000000,0.000000,0.000000 +1700816223.286797,0.000000,0.000000,6.000000 +1700816223.286807,0.000000,7.000000,6.000000 +1700816223.286815,272.000000,7.000000,6.000000 +1700816223.537497,272.000000,7.000000,6.000000 +1700816223.537509,272.000000,7.000000,6.000000 +1700816223.537518,272.000000,7.000000,6.000000 +1700816223.787893,272.000000,7.000000,6.000000 +1700816223.787904,272.000000,7.000000,6.000000 +1700816223.787913,271.000000,7.000000,6.000000 +1700816224.038474,271.000000,7.000000,6.000000 +1700816224.038492,271.000000,7.000000,6.000000 +1700816224.038504,270.000000,7.000000,6.000000 +1700816224.288919,270.000000,7.000000,6.000000 +1700816224.288931,270.000000,7.000000,6.000000 +1700816224.288939,270.000000,7.000000,6.000000 +1700816224.539532,270.000000,7.000000,6.000000 +1700816224.539542,270.000000,7.000000,6.000000 +1700816224.539552,269.000000,7.000000,6.000000 +1700816224.789991,269.000000,7.000000,6.000000 +1700816224.790002,269.000000,7.000000,6.000000 +1700816224.790011,269.000000,7.000000,6.000000 +1700816225.040511,269.000000,7.000000,6.000000 +1700816225.040522,269.000000,7.000000,6.000000 +1700816225.040534,269.000000,7.000000,6.000000 +1700816225.290962,269.000000,7.000000,6.000000 +1700816225.290975,269.000000,7.000000,6.000000 +1700816225.290984,268.000000,7.000000,6.000000 +1700816225.541566,268.000000,7.000000,6.000000 +1700816225.541569,268.000000,7.000000,6.000000 +1700816225.541572,268.000000,7.000000,6.000000 +1700816225.791909,268.000000,7.000000,6.000000 +1700816225.791920,268.000000,7.000000,6.000000 +1700816225.791929,268.000000,7.000000,6.000000 +1700816226.042546,268.000000,7.000000,6.000000 +1700816226.042556,268.000000,7.000000,6.000000 +1700816226.042565,268.000000,7.000000,6.000000 +1700816226.292909,268.000000,7.000000,6.000000 +1700816226.292920,268.000000,7.000000,6.000000 +1700816226.292928,268.000000,7.000000,6.000000 +1700816226.543678,268.000000,7.000000,6.000000 +1700816226.543690,268.000000,7.000000,6.000000 +1700816226.543699,267.000000,7.000000,6.000000 +1700816226.794222,267.000000,7.000000,6.000000 +1700816226.794233,267.000000,7.000000,6.000000 +1700816226.794242,267.000000,7.000000,6.000000 +1700816227.044732,267.000000,7.000000,6.000000 +1700816227.044743,267.000000,7.000000,6.000000 +1700816227.044752,267.000000,7.000000,6.000000 +1700816227.295215,267.000000,7.000000,6.000000 +1700816227.295218,267.000000,7.000000,6.000000 +1700816227.295221,267.000000,7.000000,6.000000 +1700816227.545765,267.000000,7.000000,6.000000 +1700816227.545776,267.000000,7.000000,6.000000 +1700816227.545785,267.000000,7.000000,6.000000 +1700816227.796210,267.000000,7.000000,6.000000 +1700816227.796222,267.000000,7.000000,6.000000 +1700816227.796231,267.000000,7.000000,6.000000 +1700816228.046809,267.000000,7.000000,6.000000 +1700816228.046820,267.000000,7.000000,6.000000 +1700816228.046832,267.000000,7.000000,6.000000 +1700816228.297224,267.000000,7.000000,6.000000 +1700816228.297235,267.000000,7.000000,6.000000 +1700816228.297244,267.000000,7.000000,6.000000 +1700816228.547872,267.000000,7.000000,6.000000 +1700816228.547884,267.000000,7.000000,6.000000 +1700816228.547895,267.000000,7.000000,6.000000 +1700816228.798386,267.000000,7.000000,6.000000 +1700816228.798397,267.000000,7.000000,6.000000 +1700816228.798408,267.000000,7.000000,6.000000 +1700816229.048918,267.000000,7.000000,6.000000 +1700816229.048930,267.000000,7.000000,6.000000 +1700816229.048940,267.000000,7.000000,6.000000 +1700816229.299448,267.000000,7.000000,6.000000 +1700816229.299474,267.000000,7.000000,6.000000 +1700816229.299484,267.000000,7.000000,6.000000 +1700816229.550258,267.000000,7.000000,6.000000 +1700816229.550268,267.000000,7.000000,6.000000 +1700816229.550277,267.000000,7.000000,6.000000 +1700816229.800633,267.000000,7.000000,6.000000 +1700816229.800644,267.000000,7.000000,6.000000 +1700816229.800653,267.000000,7.000000,6.000000 +1700816230.051221,267.000000,7.000000,6.000000 +1700816230.051233,267.000000,7.000000,6.000000 +1700816230.051242,267.000000,7.000000,6.000000 +1700816230.301710,267.000000,7.000000,6.000000 +1700816230.301721,267.000000,7.000000,6.000000 +1700816230.301729,267.000000,7.000000,6.000000 +1700816230.552412,267.000000,7.000000,6.000000 +1700816230.552423,267.000000,7.000000,6.000000 +1700816230.552432,267.000000,7.000000,6.000000 +1700816230.802928,267.000000,7.000000,6.000000 +1700816230.802938,267.000000,7.000000,6.000000 +1700816230.802947,267.000000,7.000000,6.000000 +1700816231.053413,267.000000,7.000000,6.000000 +1700816231.053429,267.000000,7.000000,6.000000 +1700816231.053441,267.000000,7.000000,6.000000 +1700816231.303729,267.000000,7.000000,6.000000 +1700816231.303733,267.000000,7.000000,6.000000 +1700816231.303736,267.000000,7.000000,6.000000 +1700816231.554228,267.000000,7.000000,6.000000 +1700816231.554246,267.000000,7.000000,6.000000 +1700816231.554259,267.000000,7.000000,6.000000 +1700816231.804635,267.000000,7.000000,6.000000 +1700816231.804646,267.000000,7.000000,6.000000 +1700816231.804657,267.000000,7.000000,6.000000 +1700816232.055236,267.000000,7.000000,6.000000 +1700816232.055247,267.000000,7.000000,6.000000 +1700816232.055256,267.000000,7.000000,6.000000 +1700816232.305709,267.000000,7.000000,6.000000 +1700816232.305719,267.000000,7.000000,6.000000 +1700816232.305727,267.000000,7.000000,6.000000 +1700816232.556405,267.000000,7.000000,6.000000 +1700816232.556417,267.000000,7.000000,6.000000 +1700816232.556425,267.000000,7.000000,6.000000 +1700816232.806947,267.000000,7.000000,6.000000 +1700816232.806962,267.000000,7.000000,6.000000 +1700816232.806978,267.000000,7.000000,6.000000 +1700816233.057670,267.000000,7.000000,6.000000 +1700816233.057688,267.000000,7.000000,6.000000 +1700816233.057703,266.000000,7.000000,6.000000 +1700816233.308131,266.000000,7.000000,6.000000 +1700816233.308142,266.000000,7.000000,6.000000 +1700816233.308151,266.000000,7.000000,6.000000 +1700816233.558830,266.000000,7.000000,6.000000 +1700816233.558847,266.000000,7.000000,6.000000 +1700816233.558860,266.000000,7.000000,6.000000 +1700816233.809266,266.000000,7.000000,6.000000 +1700816233.809276,266.000000,7.000000,6.000000 +1700816233.809284,266.000000,7.000000,6.000000 +1700816234.059666,266.000000,7.000000,6.000000 +1700816234.059676,266.000000,7.000000,6.000000 +1700816234.059684,266.000000,7.000000,6.000000 +1700816234.310149,266.000000,7.000000,6.000000 +1700816234.310158,266.000000,7.000000,6.000000 +1700816234.310167,266.000000,7.000000,6.000000 +1700816234.560783,266.000000,7.000000,6.000000 +1700816234.560794,266.000000,7.000000,6.000000 +1700816234.560803,266.000000,7.000000,6.000000 +1700816234.811323,266.000000,7.000000,6.000000 +1700816234.811334,266.000000,7.000000,6.000000 +1700816234.811342,266.000000,7.000000,6.000000 +1700816235.061809,266.000000,7.000000,6.000000 +1700816235.061819,266.000000,7.000000,6.000000 +1700816235.061827,266.000000,7.000000,6.000000 +1700816235.312229,266.000000,7.000000,6.000000 +1700816235.312239,266.000000,7.000000,6.000000 +1700816235.312247,266.000000,7.000000,6.000000 +1700816235.562782,266.000000,7.000000,6.000000 +1700816235.562789,266.000000,7.000000,6.000000 +1700816235.562794,266.000000,7.000000,6.000000 +1700816235.813233,266.000000,7.000000,6.000000 +1700816235.813249,266.000000,7.000000,6.000000 +1700816235.813262,266.000000,7.000000,6.000000 +1700816236.063793,266.000000,7.000000,6.000000 +1700816236.063809,266.000000,7.000000,6.000000 +1700816236.063822,266.000000,7.000000,6.000000 +1700816236.314187,266.000000,7.000000,6.000000 +1700816236.314202,266.000000,7.000000,6.000000 +1700816236.314215,266.000000,7.000000,6.000000 +1700816236.564870,266.000000,7.000000,6.000000 +1700816236.564881,266.000000,7.000000,6.000000 +1700816236.564894,266.000000,7.000000,6.000000 +1700816236.815440,266.000000,7.000000,6.000000 +1700816236.815477,266.000000,7.000000,6.000000 +1700816236.815490,266.000000,7.000000,6.000000 +1700816237.066001,266.000000,7.000000,6.000000 +1700816237.066018,266.000000,7.000000,6.000000 +1700816237.066032,266.000000,7.000000,6.000000 +1700816237.316483,266.000000,7.000000,6.000000 +1700816237.316498,266.000000,7.000000,6.000000 +1700816237.316510,266.000000,7.000000,6.000000 +1700816237.567166,266.000000,7.000000,6.000000 +1700816237.567177,266.000000,7.000000,6.000000 +1700816237.567186,266.000000,7.000000,6.000000 +1700816237.817529,266.000000,7.000000,6.000000 +1700816237.817544,266.000000,7.000000,6.000000 +1700816237.817559,266.000000,7.000000,6.000000 +1700816238.068022,266.000000,7.000000,6.000000 +1700816238.068038,266.000000,7.000000,6.000000 +1700816238.068051,266.000000,7.000000,6.000000 +1700816238.318437,266.000000,7.000000,6.000000 +1700816238.318452,266.000000,7.000000,6.000000 +1700816238.318467,266.000000,7.000000,6.000000 +1700816238.569069,266.000000,7.000000,6.000000 +1700816238.569084,266.000000,7.000000,6.000000 +1700816238.569097,266.000000,7.000000,6.000000 +1700816238.819510,266.000000,7.000000,6.000000 +1700816238.819526,266.000000,7.000000,6.000000 +1700816238.819540,266.000000,7.000000,6.000000 +1700816239.070034,266.000000,7.000000,6.000000 +1700816239.070050,266.000000,7.000000,6.000000 +1700816239.070062,266.000000,7.000000,6.000000 +1700816239.320511,266.000000,7.000000,6.000000 +1700816239.320527,266.000000,7.000000,6.000000 +1700816239.320541,266.000000,7.000000,6.000000 +1700816239.571196,266.000000,7.000000,6.000000 +1700816239.571207,266.000000,7.000000,6.000000 +1700816239.571216,266.000000,7.000000,6.000000 +1700816239.821680,266.000000,7.000000,6.000000 +1700816239.821697,266.000000,7.000000,6.000000 +1700816239.821712,266.000000,7.000000,6.000000 +1700816240.072214,266.000000,7.000000,6.000000 +1700816240.072224,266.000000,7.000000,6.000000 +1700816240.072233,266.000000,7.000000,6.000000 +1700816240.322705,266.000000,7.000000,6.000000 +1700816240.322716,266.000000,7.000000,6.000000 +1700816240.322725,266.000000,7.000000,6.000000 +1700816240.573306,266.000000,7.000000,6.000000 +1700816240.573317,266.000000,7.000000,6.000000 +1700816240.573325,266.000000,7.000000,6.000000 +1700816240.823823,266.000000,7.000000,6.000000 +1700816240.823833,266.000000,7.000000,6.000000 +1700816240.823842,266.000000,7.000000,6.000000 +1700816241.074375,266.000000,7.000000,6.000000 +1700816241.074386,266.000000,7.000000,6.000000 +1700816241.074395,266.000000,7.000000,6.000000 +1700816241.324784,266.000000,7.000000,6.000000 +1700816241.324794,266.000000,7.000000,6.000000 +1700816241.324802,266.000000,7.000000,6.000000 +1700816241.575525,266.000000,7.000000,6.000000 +1700816241.575536,266.000000,7.000000,6.000000 +1700816241.575545,266.000000,7.000000,6.000000 +1700816241.826064,266.000000,7.000000,6.000000 +1700816241.826076,266.000000,7.000000,6.000000 +1700816241.826086,266.000000,7.000000,6.000000 +1700816242.076548,266.000000,7.000000,6.000000 +1700816242.076559,266.000000,7.000000,6.000000 +1700816242.076568,266.000000,7.000000,6.000000 +1700816242.327071,266.000000,7.000000,6.000000 +1700816242.327081,266.000000,7.000000,6.000000 +1700816242.327090,266.000000,7.000000,6.000000 +1700816242.577807,266.000000,7.000000,6.000000 +1700816242.577818,266.000000,7.000000,6.000000 +1700816242.577827,267.000000,7.000000,6.000000 +1700816242.828192,267.000000,7.000000,6.000000 +1700816242.828202,267.000000,7.000000,6.000000 +1700816242.828210,267.000000,7.000000,6.000000 +1700816243.078756,267.000000,7.000000,6.000000 +1700816243.078767,267.000000,7.000000,6.000000 +1700816243.078775,267.000000,7.000000,6.000000 +1700816243.329148,267.000000,7.000000,6.000000 +1700816243.329158,267.000000,7.000000,6.000000 +1700816243.329166,267.000000,7.000000,6.000000 +1700816243.579866,267.000000,7.000000,6.000000 +1700816243.579877,267.000000,7.000000,6.000000 +1700816243.579886,267.000000,7.000000,6.000000 +1700816243.830365,267.000000,7.000000,6.000000 +1700816243.830376,267.000000,7.000000,6.000000 +1700816243.830385,267.000000,7.000000,6.000000 +1700816244.080847,267.000000,7.000000,6.000000 +1700816244.080858,267.000000,7.000000,6.000000 +1700816244.080867,267.000000,7.000000,6.000000 +1700816244.331261,267.000000,7.000000,6.000000 +1700816244.331275,267.000000,7.000000,6.000000 +1700816244.331288,267.000000,7.000000,6.000000 +1700816244.582066,267.000000,7.000000,6.000000 +1700816244.582076,267.000000,7.000000,6.000000 +1700816244.582085,267.000000,7.000000,6.000000 +1700816244.832473,267.000000,7.000000,6.000000 +1700816244.832484,267.000000,7.000000,6.000000 +1700816244.832493,267.000000,7.000000,6.000000 +1700816245.082978,267.000000,7.000000,6.000000 +1700816245.082990,267.000000,7.000000,6.000000 +1700816245.082999,267.000000,7.000000,6.000000 +1700816245.333469,267.000000,7.000000,6.000000 +1700816245.333479,267.000000,7.000000,6.000000 +1700816245.333487,267.000000,7.000000,6.000000 +1700816245.584073,267.000000,7.000000,6.000000 +1700816245.584084,267.000000,7.000000,6.000000 +1700816245.584093,267.000000,7.000000,6.000000 +1700816245.834556,267.000000,7.000000,6.000000 +1700816245.834567,267.000000,7.000000,6.000000 +1700816245.834579,267.000000,7.000000,6.000000 +1700816246.085013,267.000000,7.000000,6.000000 +1700816246.085024,267.000000,7.000000,6.000000 +1700816246.085033,267.000000,7.000000,6.000000 +1700816246.335366,267.000000,7.000000,6.000000 +1700816246.335376,267.000000,7.000000,6.000000 +1700816246.335384,267.000000,7.000000,6.000000 +1700816246.586117,267.000000,7.000000,6.000000 +1700816246.586128,267.000000,7.000000,6.000000 +1700816246.586144,267.000000,7.000000,6.000000 +1700816246.836542,267.000000,7.000000,6.000000 +1700816246.836552,267.000000,7.000000,6.000000 +1700816246.836560,267.000000,7.000000,6.000000 +1700816247.337498,267.000000,7.000000,0.000000 +1700816247.337513,267.000000,0.000000,0.000000 +1700816247.337526,0.000000,0.000000,0.000000 +1700816247.588214,0.000000,0.000000,4.000000 +1700816247.588229,0.000000,9.000000,4.000000 +1700816247.588242,182.000000,9.000000,4.000000 +1700816247.838646,182.000000,9.000000,4.000000 +1700816247.838661,182.000000,9.000000,4.000000 +1700816247.838674,180.000000,9.000000,4.000000 +1700816248.089172,180.000000,9.000000,4.000000 +1700816248.089184,180.000000,9.000000,4.000000 +1700816248.089192,180.000000,9.000000,4.000000 +1700816248.339584,180.000000,9.000000,4.000000 +1700816248.339595,180.000000,9.000000,4.000000 +1700816248.339604,179.000000,9.000000,4.000000 +1700816248.590243,179.000000,9.000000,4.000000 +1700816248.590255,179.000000,9.000000,4.000000 +1700816248.590264,178.000000,9.000000,4.000000 +1700816248.840599,178.000000,9.000000,4.000000 +1700816248.840609,178.000000,9.000000,4.000000 +1700816248.840617,177.000000,9.000000,4.000000 +1700816249.091017,177.000000,9.000000,4.000000 +1700816249.091029,177.000000,9.000000,4.000000 +1700816249.091038,177.000000,9.000000,4.000000 +1700816249.341433,177.000000,9.000000,4.000000 +1700816249.341443,177.000000,9.000000,4.000000 +1700816249.341451,176.000000,9.000000,4.000000 +1700816249.591964,176.000000,9.000000,4.000000 +1700816249.591980,176.000000,9.000000,4.000000 +1700816249.591993,176.000000,9.000000,4.000000 +1700816249.842471,176.000000,9.000000,4.000000 +1700816249.842483,176.000000,9.000000,4.000000 +1700816249.842492,176.000000,9.000000,4.000000 +1700816250.092953,176.000000,9.000000,4.000000 +1700816250.092963,176.000000,9.000000,4.000000 +1700816250.092971,175.000000,9.000000,4.000000 +1700816250.343342,175.000000,9.000000,4.000000 +1700816250.343357,175.000000,9.000000,4.000000 +1700816250.343371,175.000000,9.000000,4.000000 +1700816250.593989,175.000000,9.000000,4.000000 +1700816250.594004,175.000000,9.000000,4.000000 +1700816250.594017,175.000000,9.000000,4.000000 +1700816250.844380,175.000000,9.000000,4.000000 +1700816250.844391,175.000000,9.000000,4.000000 +1700816250.844399,175.000000,9.000000,4.000000 +1700816251.094816,175.000000,9.000000,4.000000 +1700816251.094831,175.000000,9.000000,4.000000 +1700816251.094842,174.000000,9.000000,4.000000 +1700816251.345235,174.000000,9.000000,4.000000 +1700816251.345247,174.000000,9.000000,4.000000 +1700816251.345257,174.000000,9.000000,4.000000 +1700816251.595852,174.000000,9.000000,4.000000 +1700816251.595871,174.000000,9.000000,4.000000 +1700816251.595884,174.000000,9.000000,4.000000 +1700816251.846294,174.000000,9.000000,4.000000 +1700816251.846311,174.000000,9.000000,4.000000 +1700816251.846327,174.000000,9.000000,4.000000 +1700816252.096789,174.000000,9.000000,4.000000 +1700816252.096798,174.000000,9.000000,4.000000 +1700816252.096805,174.000000,9.000000,4.000000 +1700816252.347209,174.000000,9.000000,4.000000 +1700816252.347220,174.000000,9.000000,4.000000 +1700816252.347229,174.000000,9.000000,4.000000 +1700816252.597889,174.000000,9.000000,4.000000 +1700816252.597900,174.000000,9.000000,4.000000 +1700816252.597909,174.000000,9.000000,4.000000 +1700816252.848278,174.000000,9.000000,4.000000 +1700816252.848289,174.000000,9.000000,4.000000 +1700816252.848298,174.000000,9.000000,4.000000 +1700816253.098883,174.000000,9.000000,4.000000 +1700816253.098894,174.000000,9.000000,4.000000 +1700816253.098902,173.000000,9.000000,4.000000 +1700816253.349171,173.000000,9.000000,4.000000 +1700816253.349174,173.000000,9.000000,4.000000 +1700816253.349177,173.000000,9.000000,4.000000 +1700816253.599612,173.000000,9.000000,4.000000 +1700816253.599628,173.000000,9.000000,4.000000 +1700816253.599642,173.000000,9.000000,4.000000 +1700816253.850177,173.000000,9.000000,4.000000 +1700816253.850196,173.000000,9.000000,4.000000 +1700816253.850209,173.000000,9.000000,4.000000 +1700816254.100663,173.000000,9.000000,4.000000 +1700816254.100673,173.000000,9.000000,4.000000 +1700816254.100682,173.000000,9.000000,4.000000 +1700816254.351044,173.000000,9.000000,4.000000 +1700816254.351055,173.000000,9.000000,4.000000 +1700816254.351064,173.000000,9.000000,4.000000 +1700816254.601694,173.000000,9.000000,4.000000 +1700816254.601710,173.000000,9.000000,4.000000 +1700816254.601724,173.000000,9.000000,4.000000 +1700816254.852079,173.000000,9.000000,4.000000 +1700816254.852095,173.000000,9.000000,4.000000 +1700816254.852110,173.000000,9.000000,4.000000 +1700816255.102564,173.000000,9.000000,4.000000 +1700816255.102581,173.000000,9.000000,4.000000 +1700816255.102595,173.000000,9.000000,4.000000 +1700816255.353037,173.000000,9.000000,4.000000 +1700816255.353052,173.000000,9.000000,4.000000 +1700816255.353065,173.000000,9.000000,4.000000 +1700816255.603719,173.000000,9.000000,4.000000 +1700816255.603731,173.000000,9.000000,4.000000 +1700816255.603740,173.000000,9.000000,4.000000 +1700816255.854075,173.000000,9.000000,4.000000 +1700816255.854089,173.000000,9.000000,4.000000 +1700816255.854100,173.000000,9.000000,4.000000 +1700816256.104645,173.000000,9.000000,4.000000 +1700816256.104662,173.000000,9.000000,4.000000 +1700816256.104675,173.000000,9.000000,4.000000 +1700816256.355047,173.000000,9.000000,4.000000 +1700816256.355062,173.000000,9.000000,4.000000 +1700816256.355075,173.000000,9.000000,4.000000 +1700816256.605796,173.000000,9.000000,4.000000 +1700816256.605806,173.000000,9.000000,4.000000 +1700816256.605815,173.000000,9.000000,4.000000 +1700816256.856179,173.000000,9.000000,4.000000 +1700816256.856189,173.000000,9.000000,4.000000 +1700816256.856198,173.000000,9.000000,4.000000 +1700816257.106652,173.000000,9.000000,4.000000 +1700816257.106662,173.000000,9.000000,4.000000 +1700816257.106672,173.000000,9.000000,4.000000 +1700816257.357064,173.000000,9.000000,4.000000 +1700816257.357074,173.000000,9.000000,4.000000 +1700816257.357082,173.000000,9.000000,4.000000 +1700816257.607735,173.000000,9.000000,4.000000 +1700816257.607747,173.000000,9.000000,4.000000 +1700816257.607756,173.000000,9.000000,4.000000 +1700816257.858197,173.000000,9.000000,4.000000 +1700816257.858212,173.000000,9.000000,4.000000 +1700816257.858225,173.000000,9.000000,4.000000 +1700816258.108674,173.000000,9.000000,4.000000 +1700816258.108685,173.000000,9.000000,4.000000 +1700816258.108694,173.000000,9.000000,4.000000 +1700816258.359058,173.000000,9.000000,4.000000 +1700816258.359069,173.000000,9.000000,4.000000 +1700816258.359078,173.000000,9.000000,4.000000 +1700816258.609755,173.000000,9.000000,4.000000 +1700816258.609765,173.000000,9.000000,4.000000 +1700816258.609773,173.000000,9.000000,4.000000 +1700816258.860125,173.000000,9.000000,4.000000 +1700816258.860139,173.000000,9.000000,4.000000 +1700816258.860153,173.000000,9.000000,4.000000 +1700816259.110593,173.000000,9.000000,4.000000 +1700816259.110610,173.000000,9.000000,4.000000 +1700816259.110622,173.000000,9.000000,4.000000 +1700816259.361056,173.000000,9.000000,4.000000 +1700816259.361071,173.000000,9.000000,4.000000 +1700816259.361085,173.000000,9.000000,4.000000 +1700816259.611748,173.000000,9.000000,4.000000 +1700816259.611759,173.000000,9.000000,4.000000 +1700816259.611768,173.000000,9.000000,4.000000 +1700816259.862085,173.000000,9.000000,4.000000 +1700816259.862100,173.000000,9.000000,4.000000 +1700816259.862114,173.000000,9.000000,4.000000 +1700816260.112549,173.000000,9.000000,4.000000 +1700816260.112563,173.000000,9.000000,4.000000 +1700816260.112575,173.000000,9.000000,4.000000 +1700816260.363043,173.000000,9.000000,4.000000 +1700816260.363058,173.000000,9.000000,4.000000 +1700816260.363069,173.000000,9.000000,4.000000 +1700816260.613830,173.000000,9.000000,4.000000 +1700816260.613845,173.000000,9.000000,4.000000 +1700816260.613857,173.000000,9.000000,4.000000 +1700816260.864243,173.000000,9.000000,4.000000 +1700816260.864259,173.000000,9.000000,4.000000 +1700816260.864273,173.000000,9.000000,4.000000 +1700816261.114743,173.000000,9.000000,4.000000 +1700816261.114759,173.000000,9.000000,4.000000 +1700816261.114774,172.000000,9.000000,4.000000 +1700816261.365237,172.000000,9.000000,4.000000 +1700816261.365252,172.000000,9.000000,4.000000 +1700816261.365266,172.000000,9.000000,4.000000 +1700816261.615719,172.000000,9.000000,4.000000 +1700816261.615725,172.000000,9.000000,4.000000 +1700816261.615730,172.000000,9.000000,4.000000 +1700816261.866169,172.000000,9.000000,4.000000 +1700816261.866186,172.000000,9.000000,4.000000 +1700816261.866200,172.000000,9.000000,4.000000 +1700816262.116732,172.000000,9.000000,4.000000 +1700816262.116747,172.000000,9.000000,4.000000 +1700816262.116759,172.000000,9.000000,4.000000 +1700816262.617689,172.000000,9.000000,0.000000 +1700816262.617704,172.000000,0.000000,0.000000 +1700816262.617717,0.000000,0.000000,0.000000 +1700816262.868047,0.000000,0.000000,0.000000 +1700816262.868075,0.000000,0.000000,0.000000 +1700816262.868089,0.000000,0.000000,0.000000 diff --git a/missions/s1_alpha/alpha.bhv b/missions/s1_alpha/alpha.bhv new file mode 100644 index 0000000..0f02c93 --- /dev/null +++ b/missions/s1_alpha/alpha.bhv @@ -0,0 +1,93 @@ +//-------- FILE: alpha.bhv ------------- + +initialize DEPLOY = false +initialize RETURN = false + +//---------------------------------------------- +Behavior = BHV_Waypoint +{ + name = waypt_survey + pwt = 100 + condition = RETURN = false + condition = DEPLOY = true + endflag = RETURN = true + + configflag = CRUISE_SPD = $[SPEED] + //configflag = OSPOS = $[OSX],$[OSY] + + activeflag = INFO=$[OWNSHIP] + activeflag = INFO=$[BHVNAME] + activeflag = INFO=$[BHVTYPE] + + cycleflag = CINFO=$[OSX],$[OSY] + + wptflag = PREV=$(PX),$(PY) + wptflag = NEXT=$(NX),$(NY) + wptflag = TEST=$(X),$(Y) + wptflag = OSPOS=$(OSX),$(OSY) + wptflag_on_start = true + + updates = WPT_UPDATE + perpetual = true + + speed_alt = 1.2 + use_alt_speed = true + lead = 8 + lead_damper = 1 + lead_to_start = true + speed = 12 // meters per second + capture_line = true + capture_radius = 5.0 + slip_radius = 15.0 + efficiency_measure = all + + // points = pts={107.5,-53.5:112,-43.8:112,-46.1:111.7,-49.3:108.3,-52.7:107.7,-53.3} + polygon = 60,-40 : 60,-160 : 150,-160 : 180,-100 : 150,-40 + + order = normal + //repeat = 100000 + repeat = 3 + + visual_hints = nextpt_color=yellow + visual_hints = nextpt_vertex_size=8 + visual_hints = nextpt_lcolor=gray70 + visual_hints = vertex_color=dodger_blue, edge_color=white + visual_hints = vertex_size=5, edge_size=1 +} + +//---------------------------------------------- +Behavior=BHV_Waypoint +{ + name = waypt_return + pwt = 100 + condition = RETURN = true + condition = DEPLOY = true + perpetual = true + updates = RETURN_UPDATE + endflag = RETURN = false + endflag = DEPLOY = false + endflag = MISSION = complete + + speed = 2.0 + capture_radius = 2.0 + slip_radius = 8.0 + points = 0,-20 + } + +//---------------------------------------------- +Behavior=BHV_ConstantSpeed +{ + name = const_speed + pwt = 200 + condition = SPD=true + condition = DEPLOY = true + perpetual = true + updates = SPEED_UPDATE + endflag = SPD = false + + speed = 0.5 + duration = 10 + duration_reset = CONST_SPD_RESET=true + +} + diff --git a/missions/s1_alpha/alpha.moos b/missions/s1_alpha/alpha.moos new file mode 100644 index 0000000..e32f648 --- /dev/null +++ b/missions/s1_alpha/alpha.moos @@ -0,0 +1,218 @@ +//------------------------------------------------- +// NAME: M. Benjamin, MIT CSAIL +// FILE: alpha.moos +//------------------------------------------------- + +ServerHost = localhost +ServerPort = 9000 +Community = alpha +MOOSTimeWarp = 1 + +// Forest Lake +LatOrigin = 43.825300 +LongOrigin = -70.330400 + +// MIT Sailing Pavilion (use this one) +// LatOrigin = 42.358456 +// LongOrigin = -71.087589 + +//------------------------------------------ +// Antler configuration block +ProcessConfig = ANTLER +{ + MSBetweenLaunches = 200 + + Run = MOOSDB @ NewConsole = false + Run = pLogger @ NewConsole = false + Run = uSimMarineV22 @ NewConsole = false + Run = pMarinePIDV22 @ NewConsole = false + Run = pHelmIvP @ NewConsole = false + Run = pMarineViewer @ NewConsole = false + Run = uProcessWatch @ NewConsole = false + Run = pNodeReporter @ NewConsole = false + Run = pRealm @ NewConsole = false +} + +//------------------------------------------ +// pLogger config block + +ProcessConfig = pLogger +{ + AppTick = 8 + CommsTick = 8 + + AsyncLog = true + + // For variables that are published in a bundle on their first post, + // explicitly declare their logging request + Log = IVPHELM_LIFE_EVENT @ 0 NOSYNC + Log = REPORT @ 0 NOSYNC + Log = BHV_SETTINGS @ 0 NOSYNC + + LogAuxSrc = true + WildCardLogging = true + WildCardOmitPattern = *_STATUS + WildCardOmitPattern = DB_VARSUMMARY + WildCardOmitPattern = DB_RWSUMMARY + WildCardExclusionLog = true +} + +//------------------------------------------ +// uProcessWatch config block + +ProcessConfig = uProcessWatch +{ + AppTick = 4 + CommsTick = 4 + + watch_all = true + nowatch = uPokeDB* + nowatch = uQueryDB* + nowatch = uXMS* + nowatch = uMAC* +} + +//------------------------------------------ +// uSimMarineV22 config block + +ProcessConfig = uSimMarineV22 +{ + AppTick = 4 + CommsTick = 4 + + start_pos = x=0, y=-20, heading=180, speed=0 + + prefix = NAV + + turn_rate = 40 + thrust_map = 0:0, 20:1, 40:2, 60:3, 80:4, 100:5 + //thrust_reflect = true +} + +//------------------------------------------ +// pHelmIvP config block + +ProcessConfig = pHelmIvP +{ + AppTick = 4 + CommsTick = 4 + + behaviors = alpha.bhv + domain = course:0:359:360 + domain = speed:0:4:41 +} + +//------------------------------------------ +// pMarinePID config block + +ProcessConfig = pMarinePIDV22 +{ + AppTick = 20 + CommsTick = 20 + + verbose = true + depth_control = false + + // SIM_INSTABILITY = 20 + + // Yaw PID controller + yaw_pid_kp = 1.2 + yaw_pid_kd = 0.0 + yaw_pid_ki = 0.3 + yaw_pid_integral_limit = 0.07 + + // Speed PID controller + speed_pid_kp = 1.0 + speed_pid_kd = 0.0 + speed_pid_ki = 0.0 + speed_pid_integral_limit = 0.07 + + //MAXIMUMS + maxrudder = 100 + maxthrust = 100 + + // A non-zero SPEED_FACTOR overrides use of SPEED_PID + // Will set DESIRED_THRUST = DESIRED_SPEED * SPEED_FACTOR + speed_factor = 20 +} + +//------------------------------------------ +// pMarineViewer config block + +ProcessConfig = pMarineViewer +{ + AppTick = 4 + CommsTick = 4 + + tiff_file = forrest19.tif + //tiff_file = MIT_SP.tif + + set_pan_x = -90 + set_pan_y = -280 + zoom = 0.65 + vehicle_shape_scale = 1.5 + hash_delta = 50 + hash_shade = 0.22 + hash_viewable = true + + trails_point_size = 1 + + //op_vertex = x=-83, y=-47, lwidth=1,lcolor=yellow,looped=true,group=moa + //op_vertex = x=-46.4, y=-129.2, lwidth=1,lcolor=yellow,looped=true,group=moa + //op_vertex = x=94.6, y=-62.2, lwidth=1,lcolor=yellow,looped=true,group=moa + //op_vertex = x=58, y=20, lwidth=1,lcolor=yellow,looped=true,group=moa + + // Appcast configuration + appcast_height = 75 + appcast_width = 30 + appcast_viewable = true + appcast_color_scheme = indigo + nodes_font_size = xlarge + procs_font_size = xlarge + appcast_font_size = large + + // datum_viewable = true + // datum_size = 18 + // gui_size = small + + // left_context[survey-point] = DEPLOY=true + // left_context[survey-point] = MOOS_MANUAL_OVERRIDE=false + // left_context[survey-point] = RETURN=false + + right_context[return] = DEPLOY=true + right_context[return] = MOOS_MANUAL_OVERRIDE=false + right_context[return] = RETURN=false + + scope = RETURN + scope = WPT_STAT + scope = VIEW_SEGLIST + scope = VIEW_POINT + scope = VIEW_POLYGON + scope = MVIEWER_LCLICK + scope = MVIEWER_RCLICK + + button_one = DEPLOY # DEPLOY=true + button_one = MOOS_MANUAL_OVERRIDE=false # RETURN=false + button_two = RETURN # RETURN=true + button_three = SLOWER # WPT_UPDATE=speed=1.5 + button_four = FASTER # WPT_UPDATE=speed=3.5 + + action = MENU_KEY=deploy # DEPLOY = true # RETURN = false + action+ = MENU_KEY=deploy # MOOS_MANUAL_OVERRIDE=false + action = RETURN=true + action = UPDATES_RETURN=speed=1.4 +} + +//------------------------------------------ +// pNodeReporter config block + +ProcessConfig = pNodeReporter +{ + AppTick = 2 + CommsTick = 2 + + platform_type = kayak + platform_color = yellow + platform_length = 4 +} + diff --git a/missions/s1_alpha/clean.sh b/missions/s1_alpha/clean.sh new file mode 100755 index 0000000..63baef7 --- /dev/null +++ b/missions/s1_alpha/clean.sh @@ -0,0 +1,37 @@ +#!/bin/bash +#-------------------------------------------------------------- +# Script: clean.sh +# Author: Michael Benjamin +# Date: June 2020 +#---------------------------------------------------------- +# Part 1: Declare global var defaults +#---------------------------------------------------------- +VERBOSE="" + +#------------------------------------------------------- +# Part 2: Check for and handle command-line arguments +#------------------------------------------------------- +for ARGI; do + if [ "${ARGI}" = "--help" -o "${ARGI}" = "-h" ] ; then + echo "clean.sh [SWITCHES] " + echo " --verbose " + echo " --help, -h " + exit 0; + elif [ "${ARGI}" = "--verbose" -o "${ARGI}" = "-v" ] ; then + VERBOSE="-v" + else + echo "clean.sh: Bad Arg:" $ARGI + exit 1 + fi +done + +#------------------------------------------------------- +# Part 2: Do the cleaning! +#------------------------------------------------------- +if [ "${VERBOSE}" = "-v" ]; then + echo "Cleaning: $PWD" +fi +rm -rf $VERBOSE MOOSLog_* XLOG_* LOG_* +rm -f $VERBOSE *~ *.moos++ +rm -f $VERBOSE targ_* +rm -f $VERBOSE .LastOpenedMOOSLogDirectory diff --git a/missions/s1_alpha/launch.sh b/missions/s1_alpha/launch.sh new file mode 100755 index 0000000..4c1b0a6 --- /dev/null +++ b/missions/s1_alpha/launch.sh @@ -0,0 +1,39 @@ +#!/bin/bash -e +#---------------------------------------------------------- +# Script: launch.sh +# Author: Michael Benjamin +# LastEd: May 20th 2019 +#---------------------------------------------------------- +# Part 1: Set Exit actions and declare global var defaults +#---------------------------------------------------------- +TIME_WARP=1 +COMMUNITY="alpha" +GUI="yes" + +#---------------------------------------------------------- +# Part 2: Check for and handle command-line arguments +#---------------------------------------------------------- +for ARGI; do + if [ "${ARGI}" = "--help" -o "${ARGI}" = "-h" ] ; then + echo "launch.sh [SWITCHES] [time_warp] " + echo " --help, -h Show this help message " + exit 0; + elif [ "${ARGI}" = "--nogui" ] ; then + GUI="no" + elif [ "${ARGI//[^0-9]/}" = "$ARGI" -a "$TIME_WARP" = 1 ]; then + TIME_WARP=$ARGI + else + echo "launch.sh Bad arg:" $ARGI " Exiting with code: 1" + exit 1 + fi +done + + +#---------------------------------------------------------- +# Part 3: Launch the processes +#---------------------------------------------------------- +echo "Launching $COMMUNITY MOOS Community with WARP:" $TIME_WARP +pAntler $COMMUNITY.moos --MOOSTimeWarp=$TIME_WARP >& /dev/null & + +uMAC -t $COMMUNITY.moos +kill -- -$$ diff --git a/scripts/README b/scripts/README new file mode 100644 index 0000000..a4a75ee --- /dev/null +++ b/scripts/README @@ -0,0 +1,5 @@ +This directory may contain developer utility scripts. + +The MyGenMOOSApp script is similar to that found in the moos-ivp/trunk/scripts/ +directory. Users are encouraged to tailor this one to their own needs. + diff --git a/setting/ControlParam.json b/setting/ControlParam.json new file mode 100644 index 0000000..9204381 --- /dev/null +++ b/setting/ControlParam.json @@ -0,0 +1,43 @@ +{ + "speed" : + { + "Kp" : 10.0, + "Ki" : 5.0, + "Kd" : 0.0, + "LimitDelta" : 50, + "MaxOut" : 100, + "MinOut" : 0 + }, + "heading" : + { + "Kp" : 0.8, + "Ki" : 0.05, + "Kd" : 2.2, + "LimitDelta" : 5, + "MaxOut" : 30, + "MinOut" : -30 + }, + "depth" : + { + "Kp" : 10.0, + "Ki" : 0.3, + "Kd" : 2.0, + "LimitDelta" : 5, + "MaxOut" : 10, + "MinOut" : -10 + }, + "pitch" : + { + "Kp" : 0.6, + "Ki" : 0.03, + "Kd" : 1.5, + "LimitDelta" : 5, + "MaxOut" : 30, + "MinOut" : -30 + }, + "const_thrust" : 0, + "dead_zone" : 10, + "speedCol" : true, + "depthCol" : true, + "HeadingCol" : true +} diff --git a/setting/Origin.json b/setting/Origin.json new file mode 100644 index 0000000..5822f5c --- /dev/null +++ b/setting/Origin.json @@ -0,0 +1,6 @@ +{ + "AltOrigin" : 0, + "LatOrigin" : 50.825298309326172, + "LongOrigin" : -90.330398559570312, + "TaskName" : "east_waypt_survey" +} diff --git a/setting/PlanConfigure.json b/setting/PlanConfigure.json new file mode 100644 index 0000000..8737b95 --- /dev/null +++ b/setting/PlanConfigure.json @@ -0,0 +1,199 @@ +{ + "east_waypt_survey" : + { + "boardStamp" : 1699945816.369447, + "clientStamp" : 1699945815.876014, + "closedLoop" : true, + "constSpeed" : -1.0, + "duration" : -1.0, + "maxDepth" : -1.0, + "minDepth" : -1.0, + "origin" : + { + "altitude" : 0.0, + "lat" : 50.825299999999999, + "lon" : -90.330399999999997 + }, + "perpetual" : false, + "points" : + [ + { + "depth" : 10.0, + "east" : 121.51780491942635, + "lat" : 43.824428558349609, + "lon" : -70.328887939453125, + "name" : "station_1", + "north" : -96.635898081838207, + "speed" : 3.0, + "type" : "point" + }, + { + "depth" : 8.0, + "east" : 201.91511278899367, + "lat" : 43.824676513671875, + "lon" : -70.327888488769531, + "name" : "station_2", + "north" : -69.083922179977435, + "speed" : 5.0, + "type" : "point" + }, + { + "depth" : 6.0, + "east" : 203.75986507534614, + "lat" : 43.823623657226562, + "lon" : -70.327865600585938, + "name" : "station_3", + "north" : -186.06549181810368, + "speed" : 7.0, + "type" : "point" + }, + { + "depth" : 4.0, + "east" : 131.33919016412341, + "lat" : 43.823623657226562, + "lon" : -70.328765869140625, + "name" : "station_4", + "north" : -186.06731482554795, + "speed" : 9.0, + "type" : "point" + } + ], + "priority" : 10, + "repeat" : 1, + "sourceAddress" : "10.25.0.160", + "sourceName" : "CCU Neptus 0_163", + "taskId" : "1", + "taskName" : "east_waypt_survey" + }, + "plan1_toMoos" : + { + "boardStamp" : 1699602762.2845099, + "clientStamp" : 1699602762.7520001, + "closedLoop" : false, + "duration" : -1.0, + "maxDepth" : -1.0, + "minDepth" : -1.0, + "origin" : + { + "altitude" : 0.0, + "lat" : 50.825299999999999, + "lon" : -90.330399999999997 + }, + "perpetual" : false, + "points" : + [ + { + "depth" : 2.0, + "east" : 117.83291847226671, + "lat" : 43.825713999999998, + "lon" : -70.32893, + "name" : "Goto1", + "north" : 46.200319317940647, + "speed" : 2.0, + "type" : "point" + }, + { + "depth" : 2.0, + "east" : -17.18366087421261, + "lat" : 43.826782000000001, + "lon" : -70.330609999999993, + "name" : "Goto2", + "north" : 164.87635389378988, + "speed" : 2.0, + "type" : "point" + }, + { + "depth" : 2.0, + "east" : -241.19025325837993, + "lat" : 43.825465999999999, + "lon" : -70.333399999999997, + "name" : "Goto3", + "north" : 18.653618776002617, + "speed" : 2.0, + "type" : "point" + }, + { + "depth" : 2.0, + "east" : -203.76118848802312, + "lat" : 43.823234999999997, + "lon" : -70.332930000000005, + "name" : "Goto4", + "north" : -229.29782627916489, + "speed" : 2.0, + "type" : "point" + } + ], + "priority" : 10, + "repeat" : 1, + "sourceAddress" : "10.25.0.163", + "sourceName" : "CCU JHL 0_163", + "taskId" : "0,106,3,-96,8,-103,13,6,9,32,50,-13,47,-71,61,1", + "taskName" : "plan1_toMoos" + }, + "west_waypt_survey" : + { + "boardStamp" : 1698135268.3958621, + "clientStamp" : 1698135268.2057669, + "closedLoop" : true, + "constSpeed" : -1.0, + "duration" : -1.0, + "maxDepth" : -1.0, + "minDepth" : -1.0, + "origin" : + { + "altitude" : 0.0, + "lat" : 43.825298309326172, + "lon" : -70.330398559570312 + }, + "perpetual" : true, + "points" : + [ + { + "depth" : 9.0, + "east" : -91.445572043530944, + "lat" : 43.824195861816406, + "lon" : -70.331535339355469, + "name" : "station_1", + "north" : -122.49101460421512, + "speed" : 4.0, + "type" : "point" + }, + { + "depth" : 7.0, + "east" : 5.5235485468483718, + "lat" : 43.824298858642578, + "lon" : -70.330329895019531, + "name" : "station_2", + "north" : -111.04778559533926, + "speed" : 6.0, + "type" : "point" + }, + { + "depth" : 5.0, + "east" : 4.2961493948725868, + "lat" : 43.823516845703125, + "lon" : -70.330345153808594, + "name" : "station_3", + "north" : -197.93630920628678, + "speed" : 8.0, + "type" : "track" + }, + { + "depth" : 3.0, + "east" : -81.013520711457318, + "lat" : 43.823207855224609, + "lon" : -70.331405639648438, + "name" : "station_4", + "north" : -232.26737690334403, + "speed" : 10.0, + "type" : "track" + } + ], + "priority" : 10, + "repeat" : -1, + "sourceAddress" : "10.25.0.160", + "sourceName" : "CCU Neptus 0_163", + "taskId" : "2", + "taskName" : "west_waypt_survey" + } +} diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 0000000..ffa6ca2 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,31 @@ +############################################################################## +# FILE: moos-ivp-extend/src/CMakeLists.txt +# DATE: 2010/09/07 +# 2020/05/09 minor mods +# DESCRIPTION: CMakeLists.txt file for the moos-ivp-extend source directory +############################################################################## + + +#============================================================================ +# Add the libraries in the current directory to the include path +#============================================================================ +FILE(GLOB LOCAL_LIBRARY_DIRS ./lib_*) +INCLUDE_DIRECTORIES(${LOCAL_LIBRARY_DIRS}/* ${LOCAL_LIBRARY_DIRS}/DUNE/) + +#============================================================================ +# List the subdirectories to build... +#============================================================================ +ADD_SUBDIRECTORY(pBoardSupportComm) +ADD_SUBDIRECTORY(pSurfaceSupportComm) +ADD_SUBDIRECTORY(pClientViewer) +ADD_SUBDIRECTORY(pDataManagement) +ADD_SUBDIRECTORY(pTaskManagement) +ADD_SUBDIRECTORY(pTaskSend) +ADD_SUBDIRECTORY(pMotionControler) +ADD_SUBDIRECTORY(pEmulator) +ADD_SUBDIRECTORY(pFaultHandle) +ADD_SUBDIRECTORY(pStateManagement) +############################################################################## +# END of CMakeLists.txt +############################################################################## + diff --git a/src/pBoardSupportComm/BoardSupportComm.cpp b/src/pBoardSupportComm/BoardSupportComm.cpp new file mode 100644 index 0000000..5e882ab --- /dev/null +++ b/src/pBoardSupportComm/BoardSupportComm.cpp @@ -0,0 +1,892 @@ +/************************************************************/ +/* NAME: Xiaobin Zeng */ +/* ORGN: MIT */ +/* FILE: BoardSupportComm.cpp */ +/* DATE: */ +/************************************************************/ + +#include +#include "BoardSupportComm.h" +#include + + +#define TCP_RECEIVE_PORT 8001 +#define TCP_SERVER_ADDRESS "127.0.0.1" + +#define MOOS_AUV_SIM +// #define MATLAB_AUV_SIM +// #ifdef TRUE_AUV + +using namespace std; + +BoardSupportComm::BoardSupportComm() +{ + estimatedState.currentLon = 0; + estimatedState.currentLat = 0; + estimatedState.currentAltitude = 0; + estimatedState.referenceLon = 0; + estimatedState.referenceLat = 0; + estimatedState.referenceAltitude = 0; + estimatedState.offsetNorth = 0; + estimatedState.offsetEast = 0; + estimatedState.offsetDown = 0; + estimatedState.roll = 0; + estimatedState.pitch = 0; + estimatedState.yaw = 0; + estimatedState.linearVelocityNorth = 0; + estimatedState.linearVelocityEast = 0; + estimatedState.linearVelocityDown = 0; + estimatedState.height = 0; + estimatedState.depth = 0; + + embeddedInfo.header = 0xEBA1; + embeddedInfo.count = 0; + embeddedInfo.size = 0; + embeddedInfo.drive_mode = 0xFF; + embeddedInfo.height = 0; + embeddedInfo.depth = 0; + embeddedInfo.yaw = 0; + embeddedInfo.pitch = 0; + embeddedInfo.roll = 0; + embeddedInfo.ins_vx = 0; + embeddedInfo.ins_vy = 0; + embeddedInfo.ins_vz = 0; + embeddedInfo.lon = 0; + embeddedInfo.lat = 0; + embeddedInfo.alt = 0; + embeddedInfo.dvl_vx = 0; + embeddedInfo.dvl_vy = 0; + embeddedInfo.dvl_vz = 0; + embeddedInfo.rpm = 0; + embeddedInfo.light_enable = 0; + embeddedInfo.battery_voltage = 0; + embeddedInfo.battery_level = 0; + embeddedInfo.battery_temp = 0; + embeddedInfo.fault_leakSensor = 0; + embeddedInfo.fault_battery = 0; + embeddedInfo.fault_emergencyBattery = 0; + embeddedInfo.fault_thrust = 0; + embeddedInfo.iridium = 0xFF; + embeddedInfo.throwing_load = 0xFF; + embeddedInfo.dvl_status = 0; + embeddedInfo.footer = 0xEE1A; + + executeCommand.header = 0xEBA2; //1:[0,1] + executeCommand.count = 16; //2:[2,3] + executeCommand.size = 21; //3:[4] + executeCommand.drive_mode = 0xFF; //4:[5] + executeCommand.thrust = 0; //5:[6] + executeCommand.yaw = 0; //6:[7,8] + executeCommand.depth = 0; //7:[9,10] + executeCommand.helm_top_angle = 0; //8:[11] + executeCommand.helm_bottom_angle = 0; //9:[12] + executeCommand.helm_left_angle = 0; //10:[13] + executeCommand.helm_right_angle = 0; //11:[14] + executeCommand.light_enable = 0; //12:[15] + executeCommand.dvl_enable = 0; //13:[16] + executeCommand.throwing_load_enable = 0; //14:[17] + executeCommand.crc = 0; //15:[18] + executeCommand.footer = 0xEE2A; //16:[19,20] + executeCommand.manual_mode = false; + + tcpSockFD = -1; + tcpConnectRet = -1; +} + +//--------------------------------------------------------- +// Destructor + +BoardSupportComm::~BoardSupportComm() +{ + // delete tcpReceiveBuffer; + close(tcpSockFD); + +} + +//--------------------------------------------------------- +// Procedure: OnNewMail + +bool BoardSupportComm::OnNewMail(MOOSMSG_LIST &NewMail) +{ + // AppCastingMOOSApp::OnNewMail(NewMail); + MOOSMSG_LIST::iterator p; + + for(p=NewMail.begin(); p!=NewMail.end(); p++) + { + CMOOSMsg &msg = *p; + string key = msg.GetKey(); + string comm = msg.GetCommunity(); + double dval = msg.GetDouble(); + string sval = msg.GetString(); + string msrc = msg.GetSource(); + double mtime = msg.GetTime(); + bool mdbl = msg.IsDouble(); + bool mstr = msg.IsString(); + +#ifdef MOOS_AUV_SIM + if(key == "NAV_X") + { + //E->N + estimatedState.offsetEast = msg.GetDouble(); + } + if(key == "NAV_Y") + { + //N->E + estimatedState.offsetNorth = msg.GetDouble(); + } + if(key == "NAV_Z") + { + //U->D + estimatedState.offsetDown = -msg.GetDouble(); + } + if(key == "NAV_YAW") + { + double yawTemp = msg.GetDouble(); + if (std::abs(yawTemp) <= M_PI) + { + if (yawTemp <= 0) + { + estimatedState.yaw = -yawTemp * 180 / M_PI; + } + else + { + estimatedState.yaw = (2 * M_PI - yawTemp) * 180 / M_PI; + } + } + } + if(key == "NAV_PITCH") + { + estimatedState.pitch = msg.GetDouble(); + } + if(key == "NAV_LAT") + { + estimatedState.currentLat = msg.GetDouble(); + } + if(key == "NAV_LONG") + { + estimatedState.currentLon = msg.GetDouble(); + } + if(key == "NAV_SPEED") + { + estimatedState.linearVelocityNorth = msg.GetDouble() * cos(estimatedState.yaw); + estimatedState.linearVelocityEast = -msg.GetDouble() * sin(estimatedState.yaw); + estimatedState.linearVelocityDown = 0; + } + if(key == "NAV_DEPTH") + { + estimatedState.depth = msg.GetDouble(); + } + if(key == "Fault_LeakSensor") + { + embeddedInfo.fault_leakSensor = (uint32_t)msg.GetDouble(); + } + if(key == "Fault_Battery") + { + embeddedInfo.fault_battery = (uint8_t)msg.GetDouble(); + } + if(key == "Fault_EmergencyBattery") + { + embeddedInfo.fault_emergencyBattery = (uint8_t)(msg.GetDouble()); + } + if(key == "Fault_Thrust") + { + embeddedInfo.fault_thrust = (uint8_t)(msg.GetDouble()); + } +#endif + + + if(key == "uManual_enable_cmd") + { + if (msg.GetDouble() == 1.0) + { + executeCommand.drive_mode = 0x02; + executeCommand.manual_mode = true; + } + else + { + executeCommand.drive_mode = 0xFF; + executeCommand.manual_mode = false; + + } + } + + if(key == "uManual_drive_cmd") + { + if (executeCommand.manual_mode) + { + std::string err; + Json::Value recvCommand; + std::istringstream iss(msg.GetString()); + Json::CharReaderBuilder builder; + bool parsingResult = Json::parseFromStream(builder, iss, &recvCommand, &err); + if (!parsingResult) + { + std::cerr << "Failed to parse JSON string." << std::endl; + return false; + } + int thrust = recvCommand["Thrust"].asInt(); + if ((thrust < -100) or (thrust > 100)) + { + return false; + } + executeCommand.thrust = convertIntToUchar(recvCommand["Thrust"].asInt(), -100, 100); + float heading = recvCommand["Heading"].asFloat(); + if ((heading >= 0) && (heading <= 180)) + { + executeCommand.yaw = heading * 10; + } + + if ((heading < 0) && (heading >= -180)) + { + executeCommand.yaw = (360 + heading) * 10; + } + if ((heading > 180) or (heading < -180)) + { + executeCommand.yaw = 180 * 10; + } + executeCommand.depth = 0; + executeCommand.helm_top_angle = 0; + executeCommand.helm_bottom_angle = 0; + executeCommand.helm_left_angle = 0; + executeCommand.helm_right_angle = 0; + int serializeResult = serializeMessage(tcpSendBuffer); + if ((serializeResult == 0) && (tcpSockFD != -1)) + { + try + { + write(tcpSockFD, tcpSendBuffer, executeCommand.size); + } + catch(const std::exception& e) + { + std::cerr << e.what() << '\n'; + } + } + } + } + if(key == "uMotion_control_cmd") + { + if (executeCommand.manual_mode) + { + return false; + } + std::string err; + Json::Value recvCommand; + std::istringstream iss(msg.GetString()); + Json::CharReaderBuilder builder; + bool parsingResult = Json::parseFromStream(builder, iss, &recvCommand, &err); + if (!parsingResult) + { + std::cerr << "Failed to parse JSON string." << std::endl; + return false; + } + executeCommand.thrust = convertIntToUchar(recvCommand["thrust"].asInt(), -100, 100); + executeCommand.helm_top_angle = convertIntToUchar(recvCommand["rudder"].asInt(), -30, 30); + executeCommand.helm_bottom_angle = convertIntToUchar(recvCommand["rudder"].asInt(), -30, 30); + executeCommand.helm_left_angle = convertIntToUchar(recvCommand["elevator"].asInt(), -30, 30); + executeCommand.helm_right_angle = convertIntToUchar(recvCommand["elevator"].asInt(), -30, 30); + + int serializeResult = serializeMessage(tcpSendBuffer); + // std::cout << "serializeResult: " << serializeResult << std::endl; + // printf("header: %u, %u\n", tcpSendBuffer[0], tcpSendBuffer[1]); + // printf("count: %u\n", tcpSendBuffer[2], tcpSendBuffer[3]); + // printf("size: %u\n", tcpSendBuffer[4]); + // printf("drive_mode: %u\n", tcpSendBuffer[5]); + // printf("thrust: %u\n", tcpSendBuffer[6]); + // printf("yaw: %u, %u\n", tcpSendBuffer[7], tcpSendBuffer[8]); + // printf("depth: %u, %u\n", tcpSendBuffer[9], tcpSendBuffer[10]); + // printf("helm_top_angle: %u\n", tcpSendBuffer[11]); + // printf("helm_bottom_angle: %u\n", tcpSendBuffer[12]); + // printf("helm_left_angle: %u\n", tcpSendBuffer[13]); + // printf("helm_right_angle: %u\n", tcpSendBuffer[14]); + // printf("light_enable: %u\n", tcpSendBuffer[15]); + // printf("dvl_enable: %u\n", tcpSendBuffer[16]); + // printf("throwing_load_enable: %u\n", tcpSendBuffer[17]); + // printf("crc: %u\n", tcpSendBuffer[18]); + // printf("footer: %u, %u\n", tcpSendBuffer[19], tcpSendBuffer[20]); + if ((serializeResult == 0) && (tcpSockFD != -1)) + { + try + { + write(tcpSockFD, tcpSendBuffer, executeCommand.size); + } + catch(const std::exception& e) + { + std::cerr << e.what() << '\n'; + } + } + } + if(key == "uMission_origin_cmd") + { + std::string err; + Json::Value recvCommand; + std::istringstream iss(msg.GetString()); + Json::CharReaderBuilder builder; + bool parsingResult = Json::parseFromStream(builder, iss, &recvCommand, &err); + if (!parsingResult) + { + std::cerr << "Failed to parse JSON string." << std::endl; + return false; + } + estimatedState.referenceAltitude = recvCommand["alt"].asFloat(); + estimatedState.referenceLat = recvCommand["lat"].asFloat(); + estimatedState.referenceLon = recvCommand["lon"].asFloat(); + + struct stat info; + if (stat(llaOriginPath.c_str(), &info) == 0) + { + std::ifstream ifs; + ifs.open(llaOriginPath, std::ios::in); + + Json::Reader reader; + Json::Value originJsonValue; + reader.parse(ifs, originJsonValue); + ifs.close(); + + originJsonValue["LongOrigin"] = recvCommand["lon"].asFloat(); + originJsonValue["LatOrigin"] = recvCommand["lat"].asFloat(); + originJsonValue["AltOrigin"] = recvCommand["alt"].asFloat(); + originJsonValue["TaskName"] = recvCommand["task"].asString(); + Json::StreamWriterBuilder builder; + std::ofstream ofs; + ofs.open(llaOriginPath, std::ios::out); + ofs << Json::writeString(builder, originJsonValue) << std::endl; + ofs.close(); + } + else + { + Json::Value originJsonValue; + originJsonValue["LongOrigin"] = recvCommand["lon"].asFloat(); + originJsonValue["LatOrigin"] = recvCommand["lat"].asFloat(); + originJsonValue["AltOrigin"] = recvCommand["alt"].asFloat(); + originJsonValue["TaskName"] = recvCommand["task"].asString(); + Json::StreamWriterBuilder builder; + std::ofstream ofs; + ofs.open(llaOriginPath, std::ios::out); + ofs << Json::writeString(builder, originJsonValue) << std::endl; + ofs.close(); + } + } + + + + } + + return(true); +} + +uint8_t BoardSupportComm::convertIntToUchar(int src, int min, int max) +{ + uint8_t dst; + if (src < 0) + { + if (src < min) + { + dst = std::abs(min) + 0B10000000; + } + else + { + dst = std::abs(src) + 0B10000000; + } + } + else + { + if (src > max) + { + dst = std::abs(max); + } + else + { + dst = std::abs(src); + } + + } + return dst; +} + +bool BoardSupportComm::OnConnectToServer() +{ + RegisterVariables(); + return(true); +} + +std::string BoardSupportComm::convertEmbeddedFormat(Json::Value &embeddedState) +{ +#ifdef MOOS_AUV_SIM + embeddedState["driveMode"] = 0xFF; + embeddedState["height"] = 0; + embeddedState["depth"] = 0; + embeddedState["yaw"] = estimatedState.yaw; + embeddedState["pitch"] = 0; + embeddedState["roll"] = 0; + embeddedState["insVX"] = estimatedState.linearVelocityNorth * 0.01; + embeddedState["insVY"] = estimatedState.linearVelocityEast * 0.01; + embeddedState["insVZ"] = estimatedState.linearVelocityDown * 0.01; + embeddedState["currentLon"] = estimatedState.currentLon; + embeddedState["currentLat"] = estimatedState.currentLat; + embeddedState["currentAltitude"] = 0; + embeddedState["dvlVX"] = 0; + embeddedState["dvlVY"] = 0; + embeddedState["dvlVZ"] = 0; + embeddedState["rpm"] = 0; + embeddedState["lightEnable"] = 0; + embeddedState["batteryVoltage"] = 15; + embeddedState["batteryLevel"] = 60; + embeddedState["batteryTemp"] = 25; + // embeddedState["faultLeakSensor"] = 0; + // embeddedState["faultBattery"] = 0; + // embeddedState["faultEmergencyBattery"] = 0; + // embeddedState["faultThrust"] = 0; + embeddedState["faultLeakSensor"] = embeddedInfo.fault_leakSensor; + embeddedState["faultBattery"] = embeddedInfo.fault_battery; + embeddedState["faultEmergencyBattery"] = embeddedInfo.fault_emergencyBattery; + embeddedState["faultThrust"] = embeddedInfo.fault_thrust; + + embeddedState["iridium"] = 0xFF; + embeddedState["throwingLoadEnable"] = 0xFF; + embeddedState["dvlStatus"] = 0; +#endif + +#ifdef MATLAB_AUV_SIM + embeddedState["driveMode"] = embeddedInfo.drive_mode; + embeddedState["height"] = embeddedInfo.height * 0.01; + embeddedState["depth"] = embeddedInfo.depth * 0.01; + embeddedState["roll"] = embeddedInfo.roll * 0.01 * M_PI / 180; //N->N + embeddedState["pitch"] = embeddedInfo.pitch * 0.01 * M_PI / 180; //E->E + embeddedState["yaw"] = embeddedInfo.yaw * 0.01 * M_PI / 180; //D->D + embeddedState["insVX"] = embeddedInfo.ins_vx * 0.01; //N->N + embeddedState["insVY"] = embeddedInfo.ins_vy * 0.01; //E->E + embeddedState["insVZ"] = embeddedInfo.ins_vz * 0.01; //D->D + embeddedState["currentLon"] = embeddedInfo.lon * 0.000001; + embeddedState["currentLat"] = embeddedInfo.lat * 0.000001; + embeddedState["currentAltitude"] = embeddedInfo.alt * 0.01; + embeddedState["dvlVX"] = embeddedInfo.dvl_vx * 0.01; //N->N + embeddedState["dvlVY"] = embeddedInfo.dvl_vy * 0.01; //E->E + embeddedState["dvlVZ"] = embeddedInfo.dvl_vz * 0.01; //D->D + embeddedState["rpm"] = embeddedInfo.rpm; + embeddedState["lightEnable"] = embeddedInfo.light_enable; + embeddedState["batteryVoltage"] = embeddedInfo.battery_voltage; + embeddedState["batteryLevel"] = embeddedInfo.battery_level; + embeddedState["batteryTemp"] = embeddedInfo.battery_temp * 0.1; + embeddedState["faultLeakSensor"] = embeddedInfo.fault_leakSensor; + embeddedState["faultBattery"] = embeddedInfo.fault_battery; + embeddedState["faultEmergencyBattery"] = embeddedInfo.fault_emergencyBattery; + embeddedState["faultThrust"] = embeddedInfo.fault_thrust; + embeddedState["iridium"] = embeddedInfo.iridium; + embeddedState["throwingLoadEnable"] = embeddedInfo.throwing_load; + embeddedState["dvlStatus"] = embeddedInfo.dvl_status; +#endif + +#ifdef TRUE_AUV + embeddedState["driveMode"] = embeddedInfo.drive_mode; + embeddedState["height"] = embeddedInfo.height * 0.01; + embeddedState["depth"] = embeddedInfo.depth * 0.01; + embeddedState["roll"] = embeddedInfo.pitch * 0.01 * M_PI / 180; //E->N + embeddedState["pitch"] = embeddedInfo.roll * 0.01 * M_PI / 180; //N->E + embeddedState["yaw"] = embeddedInfo.yaw * 0.01 * M_PI / 180; //D->D + embeddedState["insVX"] = embeddedInfo.ins_vy * 0.01; //E->N + embeddedState["insVY"] = embeddedInfo.ins_vx * 0.01; //N->E + embeddedState["insVZ"] = -embeddedInfo.ins_vz * 0.01; //U->D + embeddedState["currentLon"] = embeddedInfo.lon * 0.000001; + embeddedState["currentLat"] = embeddedInfo.lat * 0.000001; + embeddedState["currentAltitude"] = embeddedInfo.alt * 0.01; + embeddedState["dvlVX"] = embeddedInfo.dvl_vy * 0.01; //E->N + embeddedState["dvlVY"] = embeddedInfo.dvl_vx * 0.01; //N->E + embeddedState["dvlVZ"] = -embeddedInfo.dvl_vz * 0.01; //U->D + embeddedState["rpm"] = embeddedInfo.rpm; + embeddedState["lightEnable"] = embeddedInfo.light_enable; + embeddedState["batteryVoltage"] = embeddedInfo.battery_voltage; + embeddedState["batteryLevel"] = embeddedInfo.battery_level; + embeddedState["batteryTemp"] = embeddedInfo.battery_temp * 0.1; + embeddedState["faultLeakSensor"] = embeddedInfo.fault_leakSensor; + embeddedState["faultBattery"] = embeddedInfo.fault_battery; + embeddedState["faultEmergencyBattery"] = embeddedInfo.fault_emergencyBattery; + embeddedState["faultThrust"] = embeddedInfo.fault_thrust; + embeddedState["iridium"] = embeddedInfo.iridium; + embeddedState["throwingLoadEnable"] = embeddedInfo.throwing_load; + embeddedState["dvlStatus"] = embeddedInfo.dvl_status; +#endif + + double currentLon = embeddedInfo.lon * 0.000001; + double currentLat = embeddedInfo.lat * 0.000001; + double currentAlt = embeddedInfo.alt * 0.01; + std::vector reference = {estimatedState.referenceLon, estimatedState.referenceLat, estimatedState.referenceAltitude}; + std::vector current = {currentLon, currentLat, currentAlt}; + std::vector ned = {0, 0, 0}; + ConvertLLAToNED(reference, current, ned); + embeddedState["north"] = ned.at(0); + embeddedState["east"]= ned.at(1); + embeddedState["referenceLon"]= estimatedState.referenceLon; + embeddedState["referenceLat"]= estimatedState.referenceLat; + embeddedState["referenceAltitude"]= estimatedState.referenceAltitude; + + Json::StreamWriterBuilder builder; + std::string embeddedStateString = Json::writeString(builder, embeddedState); + return embeddedStateString; +} + + +void BoardSupportComm::tcpProcessThread() +{ + while(1) + { + bzero(tcpReceiveBuffer, 0); + int lens = read(tcpSockFD, tcpReceiveBuffer, sizeof(tcpReceiveBuffer)); + if(lens>0) + { +#ifndef MOOS_AUV_SIM + parseMessage((unsigned char* )tcpReceiveBuffer, lens); +#endif + Json::Value embeddedState; + std::string embeddedStateString = convertEmbeddedFormat(embeddedState); + Notify("uDevice_monitor_fb", embeddedStateString); +#ifndef MOOS_AUV_SIM + Notify("NAV_X", embeddedState["north"].asDouble()); + Notify("NAV_Y", embeddedState["east"].asDouble()); + Notify("NAV_Z", embeddedState["depth"].asDouble()); + Notify("NAV_LAT", embeddedState["currentLat"].asDouble()); + Notify("NAV_LONG", embeddedState["currentLon"].asDouble()); + Notify("NAV_HEADING", embeddedState["yaw"].asDouble() * 180 / M_PI); + double driveSpeed = std::sqrt(std::pow((double)embeddedState["dvlVX"].asDouble(), 2) + + std::pow((double)embeddedState["dvlVY"].asDouble(), 2) + + std::pow((double)embeddedState["dvlVZ"].asDouble(), 2)); + Notify("NAV_SPEED", driveSpeed); + Notify("NAV_DEPTH", embeddedState["depth"].asDouble()); + Notify("NAV_ROLL", embeddedState["roll"].asDouble() * 180 / M_PI); + Notify("NAV_PITCH", embeddedState["pitch"].asDouble() * 180 / M_PI); + Notify("NAV_YAW", embeddedState["yaw"].asDouble() * 180 / M_PI); +#endif + } + } +} + +// bool BoardSupportComm::buildReport() +// { +// m_msgs << "buildReport:" << embeddedStateString << endl; +// return true; +// } + +bool BoardSupportComm::Iterate() +{ + // AppCastingMOOSApp::Iterate(); + + if(tcpSockFD == -1) + { + tcpSockFD = socket(AF_INET, SOCK_STREAM, 0); + if(tcpSockFD == -1) + { + return false; + } + } + + if(tcpConnectRet == -1) + { + struct sockaddr_in saddr; + //inet_pton(AF_INET, TCP_SERVER_ADDRESS, &saddr.sin_addr.s_addr); + saddr.sin_addr.s_addr = inet_addr(TCP_SERVER_ADDRESS); + saddr.sin_family = AF_INET; + saddr.sin_port = htons(TCP_RECEIVE_PORT); + tcpConnectRet = connect(tcpSockFD, (struct sockaddr *)&saddr, sizeof(saddr)); + if(tcpConnectRet == -1) + { + return false; + } + } + if ((tcpSockFD != -1) && (tcpConnectRet != -1)) + { + std::thread t1(&BoardSupportComm::tcpProcessThread, this); + t1.detach(); + } + + +#if 0 + printf("header: %hx\n", embeddedInfo.header); + printf("count: %hu\n", embeddedInfo.count); + printf("size: %u\n", embeddedInfo.size); + printf("drive_mode: %u\n", embeddedInfo.drive_mode); + printf("height: %hu\n", embeddedInfo.height); + printf("depth: %hu\n", embeddedInfo.depth); + printf("yaw: %hu\n", embeddedInfo.yaw); + printf("pitch: %hd\n", embeddedInfo.pitch); + printf("roll: %hd\n", embeddedInfo.roll); + printf("ins_vx: %hd\n", embeddedInfo.ins_vx); + printf("ins_vy: %hd\n", embeddedInfo.ins_vy); + printf("ins_vz: %hd\n", embeddedInfo.ins_vz); + printf("lon: %d\n", embeddedInfo.lon); + printf("lat: %d\n", embeddedInfo.lat); + printf("alt: %hd\n", embeddedInfo.alt); + printf("dvl_vx: %hd\n", embeddedInfo.dvl_vx); + printf("dvl_vy: %hd\n", embeddedInfo.dvl_vy); + printf("dvl_vz: %hd\n", embeddedInfo.dvl_vz); + printf("rpm: %hd\n", embeddedInfo.rpm); + printf("light_enable: %u\n", embeddedInfo.light_enable); + printf("battery_voltage: %u\n", embeddedInfo.battery_voltage); + printf("battery_level: %u\n", embeddedInfo.battery_level); + printf("battery_temp: %u\n", embeddedInfo.battery_temp); + printf("fault_leakSensor: %hd\n", embeddedInfo.fault_leakSensor); + printf("fault_battery: %u\n", embeddedInfo.fault_battery); + printf("fault_emergencyBattery: %u\n", embeddedInfo.fault_emergencyBattery); + printf("fault_thrust: %u\n", embeddedInfo.fault_thrust); + printf("iridium: %u\n", embeddedInfo.iridium); + printf("throwing_load: %u\n", embeddedInfo.throwing_load); + printf("dvl_status: %u\n", embeddedInfo.dvl_status); + printf("crc: %u\n", embeddedInfo.crc); + printf("footer: %u\n", embeddedInfo.footer); +#endif + +#ifdef MOOS_AUV_SIM + executeCommand.header = 0xEBA2; //1:[0,1] + executeCommand.count = 16; //2:[2,3] + executeCommand.size = 21; //3:[4] + executeCommand.drive_mode = 0x02; //4:[5] + executeCommand.thrust = 178; //5:[6],赋值-50 + executeCommand.yaw = 45.3 * 10; //6:[7,8],赋值45.3 + executeCommand.depth = 298.6 * 10; //7:[9,10],赋值298.6 + executeCommand.helm_top_angle = 145; //8:[11],赋值-17 + executeCommand.helm_bottom_angle = 154; //9:[12],赋值-26 + executeCommand.helm_left_angle = 9; //10:[13],赋值9 + executeCommand.helm_right_angle = 158; //11:[14],赋值-30 + executeCommand.light_enable = 1; //12:[15],赋值1 + executeCommand.dvl_enable = 1; //13:[16],赋值1 + executeCommand.throwing_load_enable = 1; //14:[17],赋值1 + executeCommand.crc = 0; //15:[18] + executeCommand.footer = 0xEE2A; //16:[19,20] + + int serializeResult = serializeMessage(tcpSendBuffer); + if (serializeResult == 0) + { + try + { + write(tcpSockFD, tcpSendBuffer, executeCommand.size); + } + catch(const std::exception& e) + { + std::cerr << e.what() << '\n'; + } + } +#endif + + //AppCastingMOOSApp::PostReport(); + + return true; +} + +template +inline uint16_t BoardSupportComm::serialize(const Type t, uint8_t* bfr, uint16_t& sumSize) +{ + uint16_t size = sizeof(Type); + std::memcpy(bfr, &t, size); + sumSize += size; + return size; +} + +int BoardSupportComm::serializeMessage(unsigned char* buffer) +{ + uint8_t* ptr = buffer; + uint16_t sumSize = 0; + ptr += serialize(executeCommand.header, ptr, sumSize); + ptr += serialize(executeCommand.count, ptr, sumSize); + ptr += serialize(executeCommand.size, ptr, sumSize); + ptr += serialize(executeCommand.drive_mode, ptr, sumSize); + ptr += serialize(executeCommand.thrust, ptr, sumSize); + ptr += serialize(executeCommand.yaw, ptr, sumSize); + ptr += serialize(executeCommand.depth, ptr, sumSize); + ptr += serialize(executeCommand.helm_top_angle, ptr, sumSize); + ptr += serialize(executeCommand.helm_bottom_angle, ptr, sumSize); + ptr += serialize(executeCommand.helm_left_angle, ptr, sumSize); + ptr += serialize(executeCommand.helm_right_angle, ptr, sumSize); + ptr += serialize(executeCommand.light_enable, ptr, sumSize); + ptr += serialize(executeCommand.dvl_enable, ptr, sumSize); + ptr += serialize(executeCommand.throwing_load_enable, ptr, sumSize); + DUNE::Algorithms::CRC8 crc(0x07); + crc.putArray(buffer+CRC_COMPUTE_START_POS, CRC_COMPUTE_SUM_SIZE); + executeCommand.crc = crc.get(); + ptr += serialize(executeCommand.crc, ptr, sumSize); + ptr += serialize(executeCommand.footer, ptr, sumSize); + if (sumSize != (uint16_t)executeCommand.size) + { + return -1; + } + return 0; +} + +template +inline uint16_t BoardSupportComm::deserialize(Type& t, const uint8_t* bfr, uint16_t& length) +{ + uint16_t size = sizeof(Type); + + std::memcpy(&t, bfr, size); + length -= size; + + return size; +} + +int BoardSupportComm::parseMessage(unsigned char* buffer, int size) +{ + const uint8_t* ptr = buffer; + uint16_t size__ = size; + uint16_t header; + ptr += deserialize(embeddedInfo.header, ptr, size__); + ptr += deserialize(embeddedInfo.count, ptr, size__); + ptr += deserialize(embeddedInfo.size, ptr, size__); + ptr += deserialize(embeddedInfo.drive_mode, ptr, size__); + ptr += deserialize(embeddedInfo.height, ptr, size__); + ptr += deserialize(embeddedInfo.depth, ptr, size__); + ptr += deserialize(embeddedInfo.yaw, ptr, size__); + ptr += deserialize(embeddedInfo.pitch, ptr, size__); + ptr += deserialize(embeddedInfo.roll, ptr, size__); + ptr += deserialize(embeddedInfo.ins_vx, ptr, size__); + ptr += deserialize(embeddedInfo.ins_vy, ptr, size__); + ptr += deserialize(embeddedInfo.ins_vz, ptr, size__); + ptr += deserialize(embeddedInfo.lon, ptr, size__); + ptr += deserialize(embeddedInfo.lat, ptr, size__); + ptr += deserialize(embeddedInfo.alt, ptr, size__); + ptr += deserialize(embeddedInfo.dvl_vx, ptr, size__); + ptr += deserialize(embeddedInfo.dvl_vy, ptr, size__); + ptr += deserialize(embeddedInfo.dvl_vz, ptr, size__); + ptr += deserialize(embeddedInfo.rpm, ptr, size__); + ptr += deserialize(embeddedInfo.light_enable, ptr, size__); + ptr += deserialize(embeddedInfo.battery_voltage, ptr, size__); + ptr += deserialize(embeddedInfo.battery_level, ptr, size__); + ptr += deserialize(embeddedInfo.battery_temp, ptr, size__); + ptr += deserialize(embeddedInfo.fault_leakSensor, ptr, size__); + ptr += deserialize(embeddedInfo.fault_battery, ptr, size__); + ptr += deserialize(embeddedInfo.fault_emergencyBattery, ptr, size__); + ptr += deserialize(embeddedInfo.fault_thrust, ptr, size__); + ptr += deserialize(embeddedInfo.iridium, ptr, size__); + ptr += deserialize(embeddedInfo.throwing_load, ptr, size__); + ptr += deserialize(embeddedInfo.dvl_status, ptr, size__); + ptr += deserialize(embeddedInfo.crc, ptr, size__); + ptr += deserialize(embeddedInfo.footer, ptr, size__); + + return 0; +} + +bool BoardSupportComm::OnStartUp() +{ + // AppCastingMOOSApp::OnStartUp(); + m_MissionReader.GetValue("llaOriginPath", llaOriginPath); + try + { + struct stat info; + if (stat(llaOriginPath.c_str(), &info) == 0) + { + std::ifstream ifs; + ifs.open(llaOriginPath, std::ios::in); + + Json::Reader reader; + Json::Value originJsonValue; + reader.parse(ifs, originJsonValue); + ifs.close(); + + if (originJsonValue.isMember("LongOrigin") && + originJsonValue.isMember("LatOrigin") && + originJsonValue.isMember("AltOrigin")) + { + estimatedState.referenceLon = originJsonValue["LongOrigin"].asFloat(); + estimatedState.referenceLat = originJsonValue["LatOrigin"].asFloat(); + estimatedState.referenceAltitude = originJsonValue["AltOrigin"].asFloat(); + } + else + { + throw -1; + } + } + else + { + throw -1; + } + } + catch(...) + { + m_MissionReader.GetValue("LongOrigin", estimatedState.referenceLon); + m_MissionReader.GetValue("LatOrigin", estimatedState.referenceLat); + m_MissionReader.GetValue("AltOrigin", estimatedState.referenceAltitude); + } + + // std::cout << "BoardSupportComm OnStartUp: " << estimatedState.referenceLon << ", " + // << estimatedState.referenceLat << ", " + // << estimatedState.referenceAltitude << std::endl; + + RegisterVariables(); + return(true); +} + +void BoardSupportComm::RegisterVariables() +{ + // AppCastingMOOSApp::RegisterVariables(); + +#ifdef MOOS_AUV_SIM + Register("NAV_X", 0); + Register("NAV_Y", 0); + Register("NAV_Z", 0); + Register("NAV_LAT", 0); + Register("NAV_LONG", 0); + Register("NAV_SPEED", 0); + Register("NAV_DEPTH", 0); + Register("NAV_YAW", 0); + Register("NAV_PITCH", 0); + Register("Fault_LeakSensor", 0); + Register("Fault_Battery", 0); + Register("Fault_EmergencyBattery", 0); + Register("Fault_Thrust", 0); +#endif + + Register("uManual_drive_cmd", 0); + Register("uMotion_control_cmd", 0); + Register("uManual_enable_cmd", 0); + Register("uMission_origin_cmd", 0); +} + +void BoardSupportComm::ConvertLLAToENU(std::vector init_lla, + std::vector point_lla, + std::vector& point_enu) +{ + static GeographicLib::LocalCartesian local_cartesian; + local_cartesian.Reset(init_lla.at(1), init_lla.at(0), init_lla.at(2)); + local_cartesian.Forward(point_lla.at(1), point_lla.at(0), point_lla.at(2), + point_enu.at(0), point_enu.at(1), point_enu.at(2)); +} + +void BoardSupportComm::ConvertENUToLLA(std::vector init_lla, + std::vector point_enu, + std::vector &point_lla) +{ + static GeographicLib::LocalCartesian local_cartesian; + local_cartesian.Reset(init_lla.at(1), init_lla.at(0), init_lla.at(2)); + local_cartesian.Reverse(point_enu.at(0), point_enu.at(1), point_enu.at(2), + point_lla.at(1), point_lla.at(0), point_lla.at(2)); +} + + +void BoardSupportComm::ConvertLLAToNED(std::vector init_lla, + std::vector point_lla, + std::vector& point_ned) +{ + static GeographicLib::LocalCartesian local_cartesian; + local_cartesian.Reset(init_lla.at(1), init_lla.at(0), init_lla.at(2)); + + double point_e = 0; + double point_n = 0; + double point_u = 0; + local_cartesian.Forward(point_lla.at(1), point_lla.at(0), point_lla.at(2), + point_e, point_n, point_u); + point_ned.at(0) = point_n; + point_ned.at(1) = point_e; + point_ned.at(2) = -point_u; +} + + +void BoardSupportComm::ConvertNEDToLLA(std::vector init_lla, + std::vector point_ned, + std::vector &point_lla) +{ + static GeographicLib::LocalCartesian local_cartesian; + local_cartesian.Reset(init_lla.at(1), init_lla.at(0), init_lla.at(2)); + + double point_e = point_ned.at(1); + double point_n = point_ned.at(0); + double point_u = -point_ned.at(2); + + local_cartesian.Reverse(point_e, point_n, point_u, + point_lla.at(1), point_lla.at(0), point_lla.at(2)); +} diff --git a/src/pBoardSupportComm/BoardSupportComm.h b/src/pBoardSupportComm/BoardSupportComm.h new file mode 100644 index 0000000..974524b --- /dev/null +++ b/src/pBoardSupportComm/BoardSupportComm.h @@ -0,0 +1,156 @@ +/************************************************************/ +/* NAME: Xiaobin Zeng */ +/* ORGN: MIT */ +/* FILE: BoardSupportComm.h */ +/* DATE: */ +/************************************************************/ + +#ifndef BoardSupportComm_HEADER +#define BoardSupportComm_HEADER + +#include "MOOS/libMOOS/MOOSLib.h" +#include "MOOS/libMOOS/Thirdparty/AppCasting/AppCastingMOOSApp.h" +#include +#include +#include +#include +#include + +#define CRC_COMPUTE_START_POS 5 +#define CRC_COMPUTE_SUM_SIZE 13 + +struct AUVEmbedded +{ + uint16_t header; //1:[0,1] + uint16_t count; //2:[2,3] + uint8_t size; //3:[4] + uint8_t drive_mode; //4:[5] + uint16_t height; //5:[6,7] + uint16_t depth; //6:[8,9] + uint16_t yaw; //7:[10,11] + int16_t pitch; //8:[12,13] + int16_t roll; //9:[14,15] + int16_t ins_vx; //10:[16,17] + int16_t ins_vy; //11:[18,19] + int16_t ins_vz; //12:[20,21] + int32_t lon; //13:[22,23,24,25] + int32_t lat; //14:[26,27,28,29] + int16_t alt; //15:[30,31] + int16_t dvl_vx; //16:[32,33] + int16_t dvl_vy; //17:[34,35] + int16_t dvl_vz; //18:[36,37] + int16_t rpm; //19:[38,39] + uint8_t light_enable; //20:[40] + uint16_t battery_voltage; //21:[41,42] + uint8_t battery_level; //22:[43] + uint16_t battery_temp; //23:[44,45] + uint32_t fault_leakSensor; //24:[46,47,48,49] + uint8_t fault_battery; //25:[50] + uint8_t fault_emergencyBattery; //26:[51] + uint8_t fault_thrust; //27:[52] + uint8_t iridium; //28:[53] + uint8_t throwing_load; //29:[54] + uint8_t dvl_status; //30:[55] + uint8_t crc; //31:[56] + uint16_t footer; //32:[57,58] +}; + +struct AUVExecuteCommand +{ + uint16_t header; //1:[0,1] + uint16_t count; //2:[2,3] + uint8_t size; //3:[4] + uint8_t drive_mode; //4:[5] + uint8_t thrust; //5:[6] + uint16_t yaw; //6:[7,8] + uint16_t depth; //7:[9,10] + uint8_t helm_top_angle; //8:[11] + uint8_t helm_bottom_angle;//9:[12] + uint8_t helm_left_angle; //10:[13] + uint8_t helm_right_angle;//11:[14] + uint8_t light_enable; //12:[15] + uint8_t dvl_enable; //13:[16] + uint8_t throwing_load_enable; //14:[17] + uint8_t crc; //15:[18] + uint16_t footer; //16:[19,20] + bool manual_mode; +}; + +struct EstimatedState { + float referenceLon; + float referenceLat; + float referenceAltitude; + float currentLon; + float currentLat; + float currentAltitude; + float offsetNorth; + float offsetEast; + float offsetDown; + float roll; + float pitch; + float yaw; + float linearVelocityNorth; + float linearVelocityEast; + float linearVelocityDown; + float height; + float depth; +}; + +class BoardSupportComm : public CMOOSApp +// class BoardSupportComm : public AppCastingMOOSApp +{ + public: + BoardSupportComm(); + ~BoardSupportComm(); + +protected: // Standard MOOSApp functions to overload + bool OnNewMail(MOOSMSG_LIST &NewMail); + bool Iterate(); + bool OnConnectToServer(); + bool OnStartUp(); + void RegisterVariables(); + // bool buildReport(); + +private: + + struct EstimatedState estimatedState; + + void ConvertLLAToENU(std::vector init_lla, + std::vector point_lla, + std::vector& point_enu); + void ConvertENUToLLA(std::vector init_lla, + std::vector point_enu, + std::vector &point_lla); + void ConvertLLAToNED(std::vector init_lla, + std::vector point_lla, + std::vector& point_ned); + void ConvertNEDToLLA(std::vector init_lla, + std::vector point_ned, + std::vector &point_lla); + + void tcpProcessThread(); + // std::string convertEmbeddedFormat(); + std::string convertEmbeddedFormat(Json::Value &embeddedState); + int tcpSockFD; + int tcpConnectRet; + char tcpReceiveBuffer[65535]; + unsigned char tcpSendBuffer[65535]; + int parseMessage(unsigned char* buffer, int size); + int serializeMessage(unsigned char* buffer); + + template inline uint16_t deserialize(Type& t, const uint8_t* bfr, uint16_t& length); + template inline uint16_t serialize(const Type t, uint8_t* bfr, uint16_t& sumSize); + uint8_t convertIntToUchar(int src, int min, int max); + + struct AUVEmbedded embeddedInfo; + struct AUVExecuteCommand executeCommand; + int testFlag = 0; + bool testCount = false; + int sockfd = -1; + int connectFlg = -1; + std::string llaOriginPath; + + +}; + +#endif diff --git a/src/pBoardSupportComm/BoardSupportComm_Info.cpp b/src/pBoardSupportComm/BoardSupportComm_Info.cpp new file mode 100644 index 0000000..97e3fd3 --- /dev/null +++ b/src/pBoardSupportComm/BoardSupportComm_Info.cpp @@ -0,0 +1,115 @@ +/****************************************************************/ +/* NAME: Xiaobin Zeng */ +/* ORGN: MIT Cambridge MA */ +/* FILE: BoardSupportComm_Info.cpp */ +/* DATE: Dec 29th 1963 */ +/****************************************************************/ + +#include +#include +#include "BoardSupportComm_Info.h" +#include "ColorParse.h" +#include "ReleaseInfo.h" + +using namespace std; + +//---------------------------------------------------------------- +// Procedure: showSynopsis + +void showSynopsis() +{ + blk("SYNOPSIS: "); + blk("------------------------------------ "); + blk(" The pBoardSupportComm application is used for "); + blk(" "); + blk(" "); + blk(" "); + blk(" "); +} + +//---------------------------------------------------------------- +// Procedure: showHelpAndExit + +void showHelpAndExit() +{ + blk(" "); + blu("=============================================================== "); + blu("Usage: pBoardSupportComm file.moos [OPTIONS] "); + blu("=============================================================== "); + blk(" "); + showSynopsis(); + blk(" "); + blk("Options: "); + mag(" --alias","= "); + blk(" Launch pBoardSupportComm with the given process name "); + blk(" rather than pBoardSupportComm. "); + mag(" --example, -e "); + blk(" Display example MOOS configuration block. "); + mag(" --help, -h "); + blk(" Display this help message. "); + mag(" --interface, -i "); + blk(" Display MOOS publications and subscriptions. "); + mag(" --version,-v "); + blk(" Display the release version of pBoardSupportComm. "); + blk(" "); + blk("Note: If argv[2] does not otherwise match a known option, "); + blk(" then it will be interpreted as a run alias. This is "); + blk(" to support pAntler launching conventions. "); + blk(" "); + exit(0); +} + +//---------------------------------------------------------------- +// Procedure: showExampleConfigAndExit + +void showExampleConfigAndExit() +{ + blk(" "); + blu("=============================================================== "); + blu("pBoardSupportComm Example MOOS Configuration "); + blu("=============================================================== "); + blk(" "); + blk("ProcessConfig = pBoardSupportComm "); + blk("{ "); + blk(" AppTick = 4 "); + blk(" CommsTick = 4 "); + blk(" "); + blk("} "); + blk(" "); + exit(0); +} + + +//---------------------------------------------------------------- +// Procedure: showInterfaceAndExit + +void showInterfaceAndExit() +{ + blk(" "); + blu("=============================================================== "); + blu("pBoardSupportComm INTERFACE "); + blu("=============================================================== "); + blk(" "); + showSynopsis(); + blk(" "); + blk("SUBSCRIPTIONS: "); + blk("------------------------------------ "); + blk(" NODE_MESSAGE = src_node=alpha,dest_node=bravo,var_name=FOO, "); + blk(" string_val=BAR "); + blk(" "); + blk("PUBLICATIONS: "); + blk("------------------------------------ "); + blk(" Publications are determined by the node message content. "); + blk(" "); + exit(0); +} + +//---------------------------------------------------------------- +// Procedure: showReleaseInfoAndExit + +void showReleaseInfoAndExit() +{ + showReleaseInfo("pBoardSupportComm", "gpl"); + exit(0); +} + diff --git a/src/pBoardSupportComm/BoardSupportComm_Info.h b/src/pBoardSupportComm/BoardSupportComm_Info.h new file mode 100644 index 0000000..a070f8b --- /dev/null +++ b/src/pBoardSupportComm/BoardSupportComm_Info.h @@ -0,0 +1,18 @@ +/****************************************************************/ +/* NAME: Xiaobin Zeng */ +/* ORGN: MIT Cambridge MA */ +/* FILE: BoardSupportComm_Info.h */ +/* DATE: Dec 29th 1963 */ +/****************************************************************/ + +#ifndef BoardSupportComm_INFO_HEADER +#define BoardSupportComm_INFO_HEADER + +void showSynopsis(); +void showHelpAndExit(); +void showExampleConfigAndExit(); +void showInterfaceAndExit(); +void showReleaseInfoAndExit(); + +#endif + diff --git a/src/pBoardSupportComm/CMakeLists.txt b/src/pBoardSupportComm/CMakeLists.txt new file mode 100644 index 0000000..49e749b --- /dev/null +++ b/src/pBoardSupportComm/CMakeLists.txt @@ -0,0 +1,47 @@ +#-------------------------------------------------------- +# The CMakeLists.txt for: pBoardSupportComm +# Author(s): Xiaobin Zeng +#-------------------------------------------------------- + +SET(SRC + BoardSupportComm.cpp + BoardSupportComm_Info.cpp + main.cpp +) + +FIND_LIBRARY(DUNE_LIB dune-core /usr/local/lib /usr/local/lib/DUNE) +FIND_PATH(DUNE_INCLUDE DUNE/IMC.hpp /usr/local/include /usr/local/include/DUNE) +include_directories(${DUNE_INCLUDE}) + +# include(FindProtobuf) +# find_package(Protobuf REQUIRED) +# include_directories(${Protobuf_INCLUDE_DIR}) + +include_directories(${CMAKE_CURRENT_SOURCE_DIR}) + +#find_package (jsoncpp REQUIRED) + +find_package (GeographicLib REQUIRED) +include_directories(${GeographicLib_INCLUDE_DIRS}) + +ADD_EXECUTABLE(pBoardSupportComm ${SRC}) + +include_directories(/usr/include/jsoncpp/) +link_directories(/usr/local/lib/) + +TARGET_LINK_LIBRARIES(pBoardSupportComm + ${MOOS_LIBRARIES} + ${DUNE_LIB} + ${GeographicLib_LIBRARIES} + mbutil + m + pthread + jsoncpp + # jsoncpp_lib_static + # protobuf + # protoc + # proto + # ${PROTOBUF_LIBRARY} +) + + diff --git a/src/pBoardSupportComm/main.cpp b/src/pBoardSupportComm/main.cpp new file mode 100644 index 0000000..13bc6f5 --- /dev/null +++ b/src/pBoardSupportComm/main.cpp @@ -0,0 +1,53 @@ +/************************************************************/ +/* NAME: Xiaobin Zeng */ +/* ORGN: MIT */ +/* FILE: main.cpp */ +/* DATE: */ +/************************************************************/ + +#include +#include "MBUtils.h" +#include "ColorParse.h" +#include "BoardSupportComm.h" +#include "BoardSupportComm_Info.h" + + +using namespace std; + +int main(int argc, char *argv[]) +{ + string mission_file; + string run_command = argv[0]; + + for(int i=1; i +#include + +#include +#if PROTOBUF_VERSION < 3021000 +#error This file was generated by a newer version of protoc which is +#error incompatible with your Protocol Buffer headers. Please update +#error your headers. +#endif +#if 3021012 < PROTOBUF_MIN_PROTOC_VERSION +#error This file was generated by an older version of protoc which is +#error incompatible with your Protocol Buffer headers. Please +#error regenerate this file with a newer version of protoc. +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include // IWYU pragma: export +#include // IWYU pragma: export +#include +// @@protoc_insertion_point(includes) +#include +#define PROTOBUF_INTERNAL_EXPORT_Behavior_2eproto +PROTOBUF_NAMESPACE_OPEN +namespace internal { +class AnyMetadata; +} // namespace internal +PROTOBUF_NAMESPACE_CLOSE + +// Internal implementation detail -- do not use these members. +struct TableStruct_Behavior_2eproto { + static const uint32_t offsets[]; +}; +extern const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_Behavior_2eproto; +namespace Behavior { +class Coordinate; +struct CoordinateDefaultTypeInternal; +extern CoordinateDefaultTypeInternal _Coordinate_default_instance_; +class WayPointBehavior; +struct WayPointBehaviorDefaultTypeInternal; +extern WayPointBehaviorDefaultTypeInternal _WayPointBehavior_default_instance_; +} // namespace Behavior +PROTOBUF_NAMESPACE_OPEN +template<> ::Behavior::Coordinate* Arena::CreateMaybeMessage<::Behavior::Coordinate>(Arena*); +template<> ::Behavior::WayPointBehavior* Arena::CreateMaybeMessage<::Behavior::WayPointBehavior>(Arena*); +PROTOBUF_NAMESPACE_CLOSE +namespace Behavior { + +// =================================================================== + +class Coordinate final : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:Behavior.Coordinate) */ { + public: + inline Coordinate() : Coordinate(nullptr) {} + ~Coordinate() override; + explicit PROTOBUF_CONSTEXPR Coordinate(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); + + Coordinate(const Coordinate& from); + Coordinate(Coordinate&& from) noexcept + : Coordinate() { + *this = ::std::move(from); + } + + inline Coordinate& operator=(const Coordinate& from) { + CopyFrom(from); + return *this; + } + inline Coordinate& operator=(Coordinate&& from) noexcept { + if (this == &from) return *this; + if (GetOwningArena() == from.GetOwningArena() + #ifdef PROTOBUF_FORCE_COPY_IN_MOVE + && GetOwningArena() != nullptr + #endif // !PROTOBUF_FORCE_COPY_IN_MOVE + ) { + InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return default_instance().GetMetadata().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return default_instance().GetMetadata().reflection; + } + static const Coordinate& default_instance() { + return *internal_default_instance(); + } + static inline const Coordinate* internal_default_instance() { + return reinterpret_cast( + &_Coordinate_default_instance_); + } + static constexpr int kIndexInFileMessages = + 0; + + friend void swap(Coordinate& a, Coordinate& b) { + a.Swap(&b); + } + inline void Swap(Coordinate* other) { + if (other == this) return; + #ifdef PROTOBUF_FORCE_COPY_IN_SWAP + if (GetOwningArena() != nullptr && + GetOwningArena() == other->GetOwningArena()) { + #else // PROTOBUF_FORCE_COPY_IN_SWAP + if (GetOwningArena() == other->GetOwningArena()) { + #endif // !PROTOBUF_FORCE_COPY_IN_SWAP + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(Coordinate* other) { + if (other == this) return; + GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + Coordinate* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { + return CreateMaybeMessage(arena); + } + using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; + void CopyFrom(const Coordinate& from); + using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; + void MergeFrom( const Coordinate& from) { + Coordinate::MergeImpl(*this, from); + } + private: + static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); + public: + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + uint8_t* _InternalSerialize( + uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _impl_._cached_size_.Get(); } + + private: + void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); + void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(Coordinate* other); + + private: + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "Behavior.Coordinate"; + } + protected: + explicit Coordinate(::PROTOBUF_NAMESPACE_ID::Arena* arena, + bool is_message_owned = false); + public: + + static const ClassData _class_data_; + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kNameFieldNumber = 1, + kLonFieldNumber = 2, + kLatFieldNumber = 3, + kDepthFieldNumber = 4, + kSpeedFieldNumber = 5, + }; + // string name = 1; + void clear_name(); + const std::string& name() const; + template + void set_name(ArgT0&& arg0, ArgT... args); + std::string* mutable_name(); + PROTOBUF_NODISCARD std::string* release_name(); + void set_allocated_name(std::string* name); + private: + const std::string& _internal_name() const; + inline PROTOBUF_ALWAYS_INLINE void _internal_set_name(const std::string& value); + std::string* _internal_mutable_name(); + public: + + // float lon = 2; + void clear_lon(); + float lon() const; + void set_lon(float value); + private: + float _internal_lon() const; + void _internal_set_lon(float value); + public: + + // float lat = 3; + void clear_lat(); + float lat() const; + void set_lat(float value); + private: + float _internal_lat() const; + void _internal_set_lat(float value); + public: + + // float depth = 4; + void clear_depth(); + float depth() const; + void set_depth(float value); + private: + float _internal_depth() const; + void _internal_set_depth(float value); + public: + + // float speed = 5; + void clear_speed(); + float speed() const; + void set_speed(float value); + private: + float _internal_speed() const; + void _internal_set_speed(float value); + public: + + // @@protoc_insertion_point(class_scope:Behavior.Coordinate) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + struct Impl_ { + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; + float lon_; + float lat_; + float depth_; + float speed_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + }; + union { Impl_ _impl_; }; + friend struct ::TableStruct_Behavior_2eproto; +}; +// ------------------------------------------------------------------- + +class WayPointBehavior final : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:Behavior.WayPointBehavior) */ { + public: + inline WayPointBehavior() : WayPointBehavior(nullptr) {} + ~WayPointBehavior() override; + explicit PROTOBUF_CONSTEXPR WayPointBehavior(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); + + WayPointBehavior(const WayPointBehavior& from); + WayPointBehavior(WayPointBehavior&& from) noexcept + : WayPointBehavior() { + *this = ::std::move(from); + } + + inline WayPointBehavior& operator=(const WayPointBehavior& from) { + CopyFrom(from); + return *this; + } + inline WayPointBehavior& operator=(WayPointBehavior&& from) noexcept { + if (this == &from) return *this; + if (GetOwningArena() == from.GetOwningArena() + #ifdef PROTOBUF_FORCE_COPY_IN_MOVE + && GetOwningArena() != nullptr + #endif // !PROTOBUF_FORCE_COPY_IN_MOVE + ) { + InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return default_instance().GetMetadata().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return default_instance().GetMetadata().reflection; + } + static const WayPointBehavior& default_instance() { + return *internal_default_instance(); + } + static inline const WayPointBehavior* internal_default_instance() { + return reinterpret_cast( + &_WayPointBehavior_default_instance_); + } + static constexpr int kIndexInFileMessages = + 1; + + friend void swap(WayPointBehavior& a, WayPointBehavior& b) { + a.Swap(&b); + } + inline void Swap(WayPointBehavior* other) { + if (other == this) return; + #ifdef PROTOBUF_FORCE_COPY_IN_SWAP + if (GetOwningArena() != nullptr && + GetOwningArena() == other->GetOwningArena()) { + #else // PROTOBUF_FORCE_COPY_IN_SWAP + if (GetOwningArena() == other->GetOwningArena()) { + #endif // !PROTOBUF_FORCE_COPY_IN_SWAP + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(WayPointBehavior* other) { + if (other == this) return; + GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + WayPointBehavior* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { + return CreateMaybeMessage(arena); + } + using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; + void CopyFrom(const WayPointBehavior& from); + using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; + void MergeFrom( const WayPointBehavior& from) { + WayPointBehavior::MergeImpl(*this, from); + } + private: + static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); + public: + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + uint8_t* _InternalSerialize( + uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _impl_._cached_size_.Get(); } + + private: + void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); + void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(WayPointBehavior* other); + + private: + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "Behavior.WayPointBehavior"; + } + protected: + explicit WayPointBehavior(::PROTOBUF_NAMESPACE_ID::Arena* arena, + bool is_message_owned = false); + public: + + static const ClassData _class_data_; + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kPointsFieldNumber = 3, + kNameFieldNumber = 1, + kPriorityFieldNumber = 2, + kDurationFieldNumber = 4, + kConstSpeedFieldNumber = 6, + kClosedLoopFieldNumber = 5, + kPerpetualFieldNumber = 8, + kRepeateFieldNumber = 7, + kMinDepthFieldNumber = 9, + kMaxDepthFieldNumber = 10, + }; + // repeated .Behavior.Coordinate points = 3; + int points_size() const; + private: + int _internal_points_size() const; + public: + void clear_points(); + ::Behavior::Coordinate* mutable_points(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::Behavior::Coordinate >* + mutable_points(); + private: + const ::Behavior::Coordinate& _internal_points(int index) const; + ::Behavior::Coordinate* _internal_add_points(); + public: + const ::Behavior::Coordinate& points(int index) const; + ::Behavior::Coordinate* add_points(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::Behavior::Coordinate >& + points() const; + + // string name = 1; + void clear_name(); + const std::string& name() const; + template + void set_name(ArgT0&& arg0, ArgT... args); + std::string* mutable_name(); + PROTOBUF_NODISCARD std::string* release_name(); + void set_allocated_name(std::string* name); + private: + const std::string& _internal_name() const; + inline PROTOBUF_ALWAYS_INLINE void _internal_set_name(const std::string& value); + std::string* _internal_mutable_name(); + public: + + // int32 priority = 2; + void clear_priority(); + int32_t priority() const; + void set_priority(int32_t value); + private: + int32_t _internal_priority() const; + void _internal_set_priority(int32_t value); + public: + + // float duration = 4; + void clear_duration(); + float duration() const; + void set_duration(float value); + private: + float _internal_duration() const; + void _internal_set_duration(float value); + public: + + // float constSpeed = 6; + void clear_constspeed(); + float constspeed() const; + void set_constspeed(float value); + private: + float _internal_constspeed() const; + void _internal_set_constspeed(float value); + public: + + // bool closedLoop = 5; + void clear_closedloop(); + bool closedloop() const; + void set_closedloop(bool value); + private: + bool _internal_closedloop() const; + void _internal_set_closedloop(bool value); + public: + + // bool perpetual = 8; + void clear_perpetual(); + bool perpetual() const; + void set_perpetual(bool value); + private: + bool _internal_perpetual() const; + void _internal_set_perpetual(bool value); + public: + + // int32 repeate = 7; + void clear_repeate(); + int32_t repeate() const; + void set_repeate(int32_t value); + private: + int32_t _internal_repeate() const; + void _internal_set_repeate(int32_t value); + public: + + // float minDepth = 9; + void clear_mindepth(); + float mindepth() const; + void set_mindepth(float value); + private: + float _internal_mindepth() const; + void _internal_set_mindepth(float value); + public: + + // float maxDepth = 10; + void clear_maxdepth(); + float maxdepth() const; + void set_maxdepth(float value); + private: + float _internal_maxdepth() const; + void _internal_set_maxdepth(float value); + public: + + // @@protoc_insertion_point(class_scope:Behavior.WayPointBehavior) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + struct Impl_ { + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::Behavior::Coordinate > points_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; + int32_t priority_; + float duration_; + float constspeed_; + bool closedloop_; + bool perpetual_; + int32_t repeate_; + float mindepth_; + float maxdepth_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + }; + union { Impl_ _impl_; }; + friend struct ::TableStruct_Behavior_2eproto; +}; +// =================================================================== + + +// =================================================================== + +#ifdef __GNUC__ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wstrict-aliasing" +#endif // __GNUC__ +// Coordinate + +// string name = 1; +inline void Coordinate::clear_name() { + _impl_.name_.ClearToEmpty(); +} +inline const std::string& Coordinate::name() const { + // @@protoc_insertion_point(field_get:Behavior.Coordinate.name) + return _internal_name(); +} +template +inline PROTOBUF_ALWAYS_INLINE +void Coordinate::set_name(ArgT0&& arg0, ArgT... args) { + + _impl_.name_.Set(static_cast(arg0), args..., GetArenaForAllocation()); + // @@protoc_insertion_point(field_set:Behavior.Coordinate.name) +} +inline std::string* Coordinate::mutable_name() { + std::string* _s = _internal_mutable_name(); + // @@protoc_insertion_point(field_mutable:Behavior.Coordinate.name) + return _s; +} +inline const std::string& Coordinate::_internal_name() const { + return _impl_.name_.Get(); +} +inline void Coordinate::_internal_set_name(const std::string& value) { + + _impl_.name_.Set(value, GetArenaForAllocation()); +} +inline std::string* Coordinate::_internal_mutable_name() { + + return _impl_.name_.Mutable(GetArenaForAllocation()); +} +inline std::string* Coordinate::release_name() { + // @@protoc_insertion_point(field_release:Behavior.Coordinate.name) + return _impl_.name_.Release(); +} +inline void Coordinate::set_allocated_name(std::string* name) { + if (name != nullptr) { + + } else { + + } + _impl_.name_.SetAllocated(name, GetArenaForAllocation()); +#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING + if (_impl_.name_.IsDefault()) { + _impl_.name_.Set("", GetArenaForAllocation()); + } +#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING + // @@protoc_insertion_point(field_set_allocated:Behavior.Coordinate.name) +} + +// float lon = 2; +inline void Coordinate::clear_lon() { + _impl_.lon_ = 0; +} +inline float Coordinate::_internal_lon() const { + return _impl_.lon_; +} +inline float Coordinate::lon() const { + // @@protoc_insertion_point(field_get:Behavior.Coordinate.lon) + return _internal_lon(); +} +inline void Coordinate::_internal_set_lon(float value) { + + _impl_.lon_ = value; +} +inline void Coordinate::set_lon(float value) { + _internal_set_lon(value); + // @@protoc_insertion_point(field_set:Behavior.Coordinate.lon) +} + +// float lat = 3; +inline void Coordinate::clear_lat() { + _impl_.lat_ = 0; +} +inline float Coordinate::_internal_lat() const { + return _impl_.lat_; +} +inline float Coordinate::lat() const { + // @@protoc_insertion_point(field_get:Behavior.Coordinate.lat) + return _internal_lat(); +} +inline void Coordinate::_internal_set_lat(float value) { + + _impl_.lat_ = value; +} +inline void Coordinate::set_lat(float value) { + _internal_set_lat(value); + // @@protoc_insertion_point(field_set:Behavior.Coordinate.lat) +} + +// float depth = 4; +inline void Coordinate::clear_depth() { + _impl_.depth_ = 0; +} +inline float Coordinate::_internal_depth() const { + return _impl_.depth_; +} +inline float Coordinate::depth() const { + // @@protoc_insertion_point(field_get:Behavior.Coordinate.depth) + return _internal_depth(); +} +inline void Coordinate::_internal_set_depth(float value) { + + _impl_.depth_ = value; +} +inline void Coordinate::set_depth(float value) { + _internal_set_depth(value); + // @@protoc_insertion_point(field_set:Behavior.Coordinate.depth) +} + +// float speed = 5; +inline void Coordinate::clear_speed() { + _impl_.speed_ = 0; +} +inline float Coordinate::_internal_speed() const { + return _impl_.speed_; +} +inline float Coordinate::speed() const { + // @@protoc_insertion_point(field_get:Behavior.Coordinate.speed) + return _internal_speed(); +} +inline void Coordinate::_internal_set_speed(float value) { + + _impl_.speed_ = value; +} +inline void Coordinate::set_speed(float value) { + _internal_set_speed(value); + // @@protoc_insertion_point(field_set:Behavior.Coordinate.speed) +} + +// ------------------------------------------------------------------- + +// WayPointBehavior + +// string name = 1; +inline void WayPointBehavior::clear_name() { + _impl_.name_.ClearToEmpty(); +} +inline const std::string& WayPointBehavior::name() const { + // @@protoc_insertion_point(field_get:Behavior.WayPointBehavior.name) + return _internal_name(); +} +template +inline PROTOBUF_ALWAYS_INLINE +void WayPointBehavior::set_name(ArgT0&& arg0, ArgT... args) { + + _impl_.name_.Set(static_cast(arg0), args..., GetArenaForAllocation()); + // @@protoc_insertion_point(field_set:Behavior.WayPointBehavior.name) +} +inline std::string* WayPointBehavior::mutable_name() { + std::string* _s = _internal_mutable_name(); + // @@protoc_insertion_point(field_mutable:Behavior.WayPointBehavior.name) + return _s; +} +inline const std::string& WayPointBehavior::_internal_name() const { + return _impl_.name_.Get(); +} +inline void WayPointBehavior::_internal_set_name(const std::string& value) { + + _impl_.name_.Set(value, GetArenaForAllocation()); +} +inline std::string* WayPointBehavior::_internal_mutable_name() { + + return _impl_.name_.Mutable(GetArenaForAllocation()); +} +inline std::string* WayPointBehavior::release_name() { + // @@protoc_insertion_point(field_release:Behavior.WayPointBehavior.name) + return _impl_.name_.Release(); +} +inline void WayPointBehavior::set_allocated_name(std::string* name) { + if (name != nullptr) { + + } else { + + } + _impl_.name_.SetAllocated(name, GetArenaForAllocation()); +#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING + if (_impl_.name_.IsDefault()) { + _impl_.name_.Set("", GetArenaForAllocation()); + } +#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING + // @@protoc_insertion_point(field_set_allocated:Behavior.WayPointBehavior.name) +} + +// int32 priority = 2; +inline void WayPointBehavior::clear_priority() { + _impl_.priority_ = 0; +} +inline int32_t WayPointBehavior::_internal_priority() const { + return _impl_.priority_; +} +inline int32_t WayPointBehavior::priority() const { + // @@protoc_insertion_point(field_get:Behavior.WayPointBehavior.priority) + return _internal_priority(); +} +inline void WayPointBehavior::_internal_set_priority(int32_t value) { + + _impl_.priority_ = value; +} +inline void WayPointBehavior::set_priority(int32_t value) { + _internal_set_priority(value); + // @@protoc_insertion_point(field_set:Behavior.WayPointBehavior.priority) +} + +// repeated .Behavior.Coordinate points = 3; +inline int WayPointBehavior::_internal_points_size() const { + return _impl_.points_.size(); +} +inline int WayPointBehavior::points_size() const { + return _internal_points_size(); +} +inline void WayPointBehavior::clear_points() { + _impl_.points_.Clear(); +} +inline ::Behavior::Coordinate* WayPointBehavior::mutable_points(int index) { + // @@protoc_insertion_point(field_mutable:Behavior.WayPointBehavior.points) + return _impl_.points_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::Behavior::Coordinate >* +WayPointBehavior::mutable_points() { + // @@protoc_insertion_point(field_mutable_list:Behavior.WayPointBehavior.points) + return &_impl_.points_; +} +inline const ::Behavior::Coordinate& WayPointBehavior::_internal_points(int index) const { + return _impl_.points_.Get(index); +} +inline const ::Behavior::Coordinate& WayPointBehavior::points(int index) const { + // @@protoc_insertion_point(field_get:Behavior.WayPointBehavior.points) + return _internal_points(index); +} +inline ::Behavior::Coordinate* WayPointBehavior::_internal_add_points() { + return _impl_.points_.Add(); +} +inline ::Behavior::Coordinate* WayPointBehavior::add_points() { + ::Behavior::Coordinate* _add = _internal_add_points(); + // @@protoc_insertion_point(field_add:Behavior.WayPointBehavior.points) + return _add; +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::Behavior::Coordinate >& +WayPointBehavior::points() const { + // @@protoc_insertion_point(field_list:Behavior.WayPointBehavior.points) + return _impl_.points_; +} + +// float duration = 4; +inline void WayPointBehavior::clear_duration() { + _impl_.duration_ = 0; +} +inline float WayPointBehavior::_internal_duration() const { + return _impl_.duration_; +} +inline float WayPointBehavior::duration() const { + // @@protoc_insertion_point(field_get:Behavior.WayPointBehavior.duration) + return _internal_duration(); +} +inline void WayPointBehavior::_internal_set_duration(float value) { + + _impl_.duration_ = value; +} +inline void WayPointBehavior::set_duration(float value) { + _internal_set_duration(value); + // @@protoc_insertion_point(field_set:Behavior.WayPointBehavior.duration) +} + +// bool closedLoop = 5; +inline void WayPointBehavior::clear_closedloop() { + _impl_.closedloop_ = false; +} +inline bool WayPointBehavior::_internal_closedloop() const { + return _impl_.closedloop_; +} +inline bool WayPointBehavior::closedloop() const { + // @@protoc_insertion_point(field_get:Behavior.WayPointBehavior.closedLoop) + return _internal_closedloop(); +} +inline void WayPointBehavior::_internal_set_closedloop(bool value) { + + _impl_.closedloop_ = value; +} +inline void WayPointBehavior::set_closedloop(bool value) { + _internal_set_closedloop(value); + // @@protoc_insertion_point(field_set:Behavior.WayPointBehavior.closedLoop) +} + +// float constSpeed = 6; +inline void WayPointBehavior::clear_constspeed() { + _impl_.constspeed_ = 0; +} +inline float WayPointBehavior::_internal_constspeed() const { + return _impl_.constspeed_; +} +inline float WayPointBehavior::constspeed() const { + // @@protoc_insertion_point(field_get:Behavior.WayPointBehavior.constSpeed) + return _internal_constspeed(); +} +inline void WayPointBehavior::_internal_set_constspeed(float value) { + + _impl_.constspeed_ = value; +} +inline void WayPointBehavior::set_constspeed(float value) { + _internal_set_constspeed(value); + // @@protoc_insertion_point(field_set:Behavior.WayPointBehavior.constSpeed) +} + +// int32 repeate = 7; +inline void WayPointBehavior::clear_repeate() { + _impl_.repeate_ = 0; +} +inline int32_t WayPointBehavior::_internal_repeate() const { + return _impl_.repeate_; +} +inline int32_t WayPointBehavior::repeate() const { + // @@protoc_insertion_point(field_get:Behavior.WayPointBehavior.repeate) + return _internal_repeate(); +} +inline void WayPointBehavior::_internal_set_repeate(int32_t value) { + + _impl_.repeate_ = value; +} +inline void WayPointBehavior::set_repeate(int32_t value) { + _internal_set_repeate(value); + // @@protoc_insertion_point(field_set:Behavior.WayPointBehavior.repeate) +} + +// bool perpetual = 8; +inline void WayPointBehavior::clear_perpetual() { + _impl_.perpetual_ = false; +} +inline bool WayPointBehavior::_internal_perpetual() const { + return _impl_.perpetual_; +} +inline bool WayPointBehavior::perpetual() const { + // @@protoc_insertion_point(field_get:Behavior.WayPointBehavior.perpetual) + return _internal_perpetual(); +} +inline void WayPointBehavior::_internal_set_perpetual(bool value) { + + _impl_.perpetual_ = value; +} +inline void WayPointBehavior::set_perpetual(bool value) { + _internal_set_perpetual(value); + // @@protoc_insertion_point(field_set:Behavior.WayPointBehavior.perpetual) +} + +// float minDepth = 9; +inline void WayPointBehavior::clear_mindepth() { + _impl_.mindepth_ = 0; +} +inline float WayPointBehavior::_internal_mindepth() const { + return _impl_.mindepth_; +} +inline float WayPointBehavior::mindepth() const { + // @@protoc_insertion_point(field_get:Behavior.WayPointBehavior.minDepth) + return _internal_mindepth(); +} +inline void WayPointBehavior::_internal_set_mindepth(float value) { + + _impl_.mindepth_ = value; +} +inline void WayPointBehavior::set_mindepth(float value) { + _internal_set_mindepth(value); + // @@protoc_insertion_point(field_set:Behavior.WayPointBehavior.minDepth) +} + +// float maxDepth = 10; +inline void WayPointBehavior::clear_maxdepth() { + _impl_.maxdepth_ = 0; +} +inline float WayPointBehavior::_internal_maxdepth() const { + return _impl_.maxdepth_; +} +inline float WayPointBehavior::maxdepth() const { + // @@protoc_insertion_point(field_get:Behavior.WayPointBehavior.maxDepth) + return _internal_maxdepth(); +} +inline void WayPointBehavior::_internal_set_maxdepth(float value) { + + _impl_.maxdepth_ = value; +} +inline void WayPointBehavior::set_maxdepth(float value) { + _internal_set_maxdepth(value); + // @@protoc_insertion_point(field_set:Behavior.WayPointBehavior.maxDepth) +} + +#ifdef __GNUC__ + #pragma GCC diagnostic pop +#endif // __GNUC__ +// ------------------------------------------------------------------- + + +// @@protoc_insertion_point(namespace_scope) + +} // namespace Behavior + +// @@protoc_insertion_point(global_scope) + +#include +#endif // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_Behavior_2eproto diff --git a/src/pClientViewer/CMakeLists.txt b/src/pClientViewer/CMakeLists.txt new file mode 100644 index 0000000..169acfd --- /dev/null +++ b/src/pClientViewer/CMakeLists.txt @@ -0,0 +1,50 @@ +#-------------------------------------------------------- +# The CMakeLists.txt for: pClientViewer +# Author(s): Xiaobin Zeng +#-------------------------------------------------------- + +SET(SRC + ClientViewer.cpp + ClientViewer_Info.cpp + main.cpp +) + +SET(CMAKE_CXX_STANDARD 11) + +FIND_LIBRARY(DUNE_LIB dune-core /usr/local/lib /usr/local/lib/DUNE) +FIND_PATH(DUNE_INCLUDE DUNE/IMC.hpp /usr/local/include /usr/local/include/DUNE) +include_directories(${DUNE_INCLUDE}) + +# include(FindProtobuf) +# find_package(Protobuf REQUIRED) +# include_directories(${Protobuf_INCLUDE_DIR}) + +# protobuf_generate_cpp(PROTO_SRC PROTO_HEADER Behavior.proto) +# add_library(proto ${PROTO_HEADER} ${PROTO_SRC}) + +include_directories(${CMAKE_CURRENT_SOURCE_DIR}) + +#find_package (jsoncpp NO_MODULE REQUIRED) + +include_directories(/usr/include/jsoncpp/) +link_directories(/usr/local/lib/) + +ADD_EXECUTABLE(pClientViewer ${SRC}) + +TARGET_LINK_LIBRARIES(pClientViewer + ${MOOS_LIBRARIES} + ${CMAKE_DL_LIBS} + ${SYSTEM_LIBS} + ${DUNE_LIB} + mbutil + m + pthread + jsoncpp + # jsoncpp_lib_static + # protobuf + # protoc + # proto + # ${PROTOBUF_LIBRARY} +) + + diff --git a/src/pClientViewer/ClientViewer.cpp b/src/pClientViewer/ClientViewer.cpp new file mode 100644 index 0000000..8d5954b --- /dev/null +++ b/src/pClientViewer/ClientViewer.cpp @@ -0,0 +1,873 @@ +/************************************************************/ +/* NAME: Xiaobin Zeng */ +/* ORGN: MIT */ +/* FILE: ClientViewer.cpp */ +/* DATE: */ +/************************************************************/ + +#include +#include "ClientViewer.h" +//#include "Behavior.pb.h" +#include + +using namespace std; + +#define UDP_RECEIVE_PORT 6001 +#define TCP_SEND_PORT 8000 +#define TCP_FILE_RECEIVE_PORT 8001 +//#define TCP_SERVER_ADDRESS "10.25.0.230" //树莓派 +#define TCP_SERVER_ADDRESS "127.0.0.1" +// #define TCP_SERVER_ADDRESS "10.25.0.163" +// #define TCP_SERVER_ADDRESS "10.25.0.160" + +//--------------------------------------------------------- +// Constructor + +ClientViewer::ClientViewer() +{ + udpReceiveBuffer = new uint8_t[65535]; + tcpReceiveBuffer = new uint8_t[65535]; +} + +//--------------------------------------------------------- +// Destructor + +ClientViewer::~ClientViewer() +{ + // udpCommEvent.Stop(); + // tcpCommEvent.Stop(); + delete udpReceiveBuffer; + delete tcpReceiveBuffer; + + // if (sock_tcp_send) + // { + // delete sock_tcp_send; + // sock_tcp_send = NULL; + // } + + // if (sock_udp_receive) + // { + // delete sock_udp_receive; + // sock_udp_receive = NULL; + // } + +} + +//--------------------------------------------------------- +// Procedure: OnNewMail + +bool ClientViewer::OnNewMail(MOOSMSG_LIST &NewMail) +{ + MOOSMSG_LIST::iterator p; + + for(p=NewMail.begin(); p!=NewMail.end(); p++) + { + CMOOSMsg &msg = *p; + string key = msg.GetKey(); + string comm = msg.GetCommunity(); + double dval = msg.GetDouble(); + string sval = msg.GetString(); + string msrc = msg.GetSource(); + double mtime = msg.GetTime(); + bool mdbl = msg.IsDouble(); + bool mstr = msg.IsString(); + std::cout << key << " : " << sval << std::endl; + if(key == "Command") + { + if (sval == "SetPlan1") //PlanDB + { + std::string systemName = "CCU Neptus 0_163"; + std::string plan_1_Spec = SetPlan1(systemName, MOOS::Time()); + DUNE::IMC::PlanDB msg; + msg.setTimeStamp(); + msg.type = DUNE::IMC::PlanDB::TypeEnum::DBT_REQUEST; + msg.op = DUNE::IMC::PlanDB::OperationEnum::DBOP_SET; + msg.plan_id.assign("BHV_Waypoint"); + msg.info = plan_1_Spec; + tcpSendToServer(&msg, TCP_SERVER_ADDRESS, TCP_SEND_PORT); + + } + if (sval == "SetPlan2") //PlanDB + { + std::string systemName = "CCU Neptus 0_163"; + std::string plan_2_Spec = SetPlan2(systemName, MOOS::Time()); + //std::cout << plan_2_Spec << std::endl; + DUNE::IMC::PlanDB msg; + msg.setTimeStamp(); + msg.type = DUNE::IMC::PlanDB::TypeEnum::DBT_REQUEST; + msg.op = DUNE::IMC::PlanDB::OperationEnum::DBOP_SET; + msg.plan_id.assign("BHV_Waypoint"); + msg.info = plan_2_Spec; + tcpSendToServer(&msg, TCP_SERVER_ADDRESS, TCP_SEND_PORT); + } + if (sval == "ModifyPlan1") //PlanDB + { + std::string systemName = "CCU Neptus 0_163"; + std::string plan_1_Spec = ModifyPlan1(systemName, MOOS::Time()); + DUNE::IMC::PlanDB msg; + msg.setTimeStamp(); + msg.type = DUNE::IMC::PlanDB::TypeEnum::DBT_REQUEST; + msg.op = DUNE::IMC::PlanDB::OperationEnum::DBOP_SET; + msg.plan_id.assign("BHV_Waypoint"); + msg.info = plan_1_Spec; + tcpSendToServer(&msg, TCP_SERVER_ADDRESS, TCP_SEND_PORT); + } + if (sval == "GetPlanList") //PlanDB + { + DUNE::IMC::PlanDB msg; + msg.setTimeStamp(); + msg.type = DUNE::IMC::PlanDB::TypeEnum::DBT_REQUEST; + msg.op = DUNE::IMC::PlanDB::OperationEnum::DBOP_GET_STATE; + msg.plan_id.assign("Test"); + tcpSendToServer(&msg, TCP_SERVER_ADDRESS, TCP_SEND_PORT); + } + if (sval == "SetThrust") //SetEntityParameters + { + double timeStamp = MOOS::Time(); + DUNE::IMC::SetEntityParameters msg; + msg.setTimeStamp(timeStamp); + msg.name = "Thrust"; + DUNE::IMC::EntityParameter subMsg; + subMsg.setTimeStamp(timeStamp); + SetEntityStatus(subMsg, "Pwm", generateEntityValue("30", "int")); + msg.params.push_back(subMsg); + tcpSendToServer(&msg, TCP_SERVER_ADDRESS, TCP_SEND_PORT); + } + if (sval == "SetIndicatorLight") //SetEntityParameters + { + double timeStamp = MOOS::Time(); + DUNE::IMC::SetEntityParameters msg; + msg.setTimeStamp(timeStamp); + msg.name = "IndicatorLight"; + DUNE::IMC::EntityParameter subMsg; + subMsg.setTimeStamp(timeStamp); + SetEntityStatus(subMsg, "Status", generateEntityValue("1", "int")); + msg.params.push_back(subMsg); + tcpSendToServer(&msg, TCP_SERVER_ADDRESS, TCP_SEND_PORT); + } + if (sval == "StartPlan1") //PlanControl + { + DUNE::IMC::PlanControl msg; + msg.setTimeStamp(); + msg.type = DUNE::IMC::PlanControl::TypeEnum::PC_REQUEST; + msg.op = DUNE::IMC::PlanControl::OperationEnum::PC_START; + msg.plan_id = "east_waypt_survey"; + tcpSendToServer(&msg, TCP_SERVER_ADDRESS, TCP_SEND_PORT); + } + if (sval == "StartPlan2") //PlanControl + { + DUNE::IMC::PlanControl msg; + msg.setTimeStamp(); + msg.type = DUNE::IMC::PlanControl::TypeEnum::PC_REQUEST; + msg.op = DUNE::IMC::PlanControl::OperationEnum::PC_START; + msg.plan_id = "west_waypt_survey"; + tcpSendToServer(&msg, TCP_SERVER_ADDRESS, TCP_SEND_PORT); + } + if (sval == "StopPlan1") //PlanControl + { + DUNE::IMC::PlanControl msg; + msg.setTimeStamp(); + msg.type = DUNE::IMC::PlanControl::TypeEnum::PC_REQUEST; + msg.op = DUNE::IMC::PlanControl::OperationEnum::PC_STOP; + msg.plan_id = "east_waypt_survey"; + tcpSendToServer(&msg, TCP_SERVER_ADDRESS, TCP_SEND_PORT); + } + if (sval == "StopPlan2") //PlanControl + { + DUNE::IMC::PlanControl msg; + msg.setTimeStamp(); + msg.type = DUNE::IMC::PlanControl::TypeEnum::PC_REQUEST; + msg.op = DUNE::IMC::PlanControl::OperationEnum::PC_STOP; + msg.plan_id = "west_waypt_survey"; + tcpSendToServer(&msg, TCP_SERVER_ADDRESS, TCP_SEND_PORT); + } + if (sval == "RemoteActions") //PlanControl + { + DUNE::IMC::RemoteActions msg; + msg.setTimeStamp(); + Json::Value executeCommand; + executeCommand["Thrust"] = -100; + executeCommand["Heading"] = -27.5; + Json::StreamWriterBuilder builder; + msg.actions = Json::writeString(builder, executeCommand); + tcpSendToServer(&msg, TCP_SERVER_ADDRESS, TCP_SEND_PORT); + } + if (sval == "VehicleCommand") //PlanControl + { + DUNE::IMC::VehicleCommand msg; + msg.setTimeStamp(); + msg.type = DUNE::IMC::VehicleCommand::TypeEnum::VC_REQUEST; + msg.command = 1; + tcpSendToServer(&msg, TCP_SERVER_ADDRESS, TCP_SEND_PORT); + } + if (sval == "GetLogBook") //PlanControl + { + DUNE::IMC::LogBookControl msg; + msg.setTimeStamp(); + msg.command = DUNE::IMC::LogBookControl::CommandEnum::LBC_GET; + DUNE::IMC::LogBookEntry msgLogBookEntry; + msgLogBookEntry.type = DUNE::IMC::LogBookEntry::TypeEnum::LBET_INFO; + msgLogBookEntry.context = "LIST"; + msg.msg.push_back(msgLogBookEntry); + tcpSendToServer(&msg, TCP_SERVER_ADDRESS, TCP_SEND_PORT); + } + if (sval == "RetrLogBook1") //PlanControl + { + DUNE::IMC::LogBookControl msg; + msg.setTimeStamp(); + msg.command = DUNE::IMC::LogBookControl::CommandEnum::LBC_GET; + DUNE::IMC::LogBookEntry msgLogBookEntry; + msgLogBookEntry.type = DUNE::IMC::LogBookEntry::TypeEnum::LBET_INFO; + msgLogBookEntry.context = "RETR"; + + Json::Value retrFile; + retrFile["lauv-150/2023-11-16/103058"]["auv"]["file"] = "auvData.mdat"; + + Json::StreamWriterBuilder builder; + msgLogBookEntry.text = Json::writeString(builder, retrFile); + msg.msg.push_back(msgLogBookEntry); + tcpSendToServer(&msg, TCP_SERVER_ADDRESS, TCP_SEND_PORT); + } + if (sval == "RetrLogBook2") //PlanControl + { + DUNE::IMC::LogBookControl msg; + msg.setTimeStamp(); + msg.command = DUNE::IMC::LogBookControl::CommandEnum::LBC_GET; + DUNE::IMC::LogBookEntry msgLogBookEntry; + msgLogBookEntry.type = DUNE::IMC::LogBookEntry::TypeEnum::LBET_INFO; + msgLogBookEntry.context = "RETR"; + + Json::Value retrFile; + retrFile["lauv-150/2023-11-16/103058"]["command"]["file"] = "clientCommand.txt"; + + Json::StreamWriterBuilder builder; + msgLogBookEntry.text = Json::writeString(builder, retrFile); + msg.msg.push_back(msgLogBookEntry); + tcpSendToServer(&msg, TCP_SERVER_ADDRESS, TCP_SEND_PORT); + } + if (sval == "RetrLogBook3") //PlanControl + { + DUNE::IMC::LogBookControl msg; + msg.setTimeStamp(); + msg.command = DUNE::IMC::LogBookControl::CommandEnum::LBC_GET; + DUNE::IMC::LogBookEntry msgLogBookEntry; + msgLogBookEntry.type = DUNE::IMC::LogBookEntry::TypeEnum::LBET_INFO; + msgLogBookEntry.context = "RETR"; + + Json::Value retrFile; + retrFile["lauv-150/2023-11-16/103058"]["mission"]["file"] = "missionHistory.txt"; + + Json::StreamWriterBuilder builder; + msgLogBookEntry.text = Json::writeString(builder, retrFile); + msg.msg.push_back(msgLogBookEntry); + tcpSendToServer(&msg, TCP_SERVER_ADDRESS, TCP_SEND_PORT); + } + if (sval == "DeleLogBook") //PlanControl + { + DUNE::IMC::LogBookControl msg; + msg.setTimeStamp(); + msg.command = DUNE::IMC::LogBookControl::CommandEnum::LBC_CLEAR; + DUNE::IMC::LogBookEntry msgLogBookEntry; + msgLogBookEntry.type = DUNE::IMC::LogBookEntry::TypeEnum::LBET_INFO; + msgLogBookEntry.context = "DELE"; + + Json::Value retrFile; + retrFile["lauv-150/2023-11-16/103058"]["auv"]["file"] = "auvData.mdat"; + retrFile["lauv-150/2023-11-16/103058"]["command"]["file"] = "clientCommand.txt"; + retrFile["lauv-150/2023-11-16/105131"]["mission"]["file"] = "missionHistory.txt"; + + Json::StreamWriterBuilder builder; + msgLogBookEntry.text = Json::writeString(builder, retrFile); + msg.msg.push_back(msgLogBookEntry); + tcpSendToServer(&msg, TCP_SERVER_ADDRESS, TCP_SEND_PORT); + } + } + } + + return(true); +} + +//--------------------------------------------------------- +// Procedure: OnConnectToServer + +bool ClientViewer::OnConnectToServer() +{ + RegisterVariables(); + return(true); +} + +bool ClientViewer::Iterate() +{ + DUNE::IMC::Message * receiveUDPMessage; + + while ((receiveUDPMessage = imcPollUDP()) != NULL) + { + processMessage(receiveUDPMessage); + free(receiveUDPMessage); + } + + DUNE::IMC::Message * receiveTCPMessage; + while ((receiveTCPMessage = imcPollTCP()) != NULL) + { + processMessage(receiveTCPMessage); + free(receiveTCPMessage); + } + + return(true); +} + +// bool processMessageCallback(DUNE::IMC::Message * message) +// { +// int type = message->getId(); +// if (type == DUNE::IMC::Announce::getIdStatic()) +// { +// DUNE::IMC::Announce * msg = dynamic_cast(message); +// // printf("server receive %s: %lf, %lf, %lf, %lf\n", \ +// // msg->getName(), msg->getTimeStamp(), msg->lat, msg->lon, msg->height); +// printf("server receive %s: %lf, %lf, %lf, %lf\n", \ +// msg->getName(), msg->getTimeStamp(), msg->lat*180/M_PI, msg->lon*180/M_PI, msg->height); +// } +// if (type == DUNE::IMC::PlanDB::getIdStatic()) +// { +// DUNE::IMC::PlanDB * msg = dynamic_cast(message); +// printf("server receive %s: %lf, %d, %d\n", msg->getName(), msg->getTimeStamp(), msg->type, msg->op); +// printf("%s\n", msg->info.c_str()); +// } +// if (type == DUNE::IMC::PlanControlState::getIdStatic()) +// { +// DUNE::IMC::PlanControlState * msg = dynamic_cast(message); + +// printf("server receive %s: %lf, %s, %s, %u\n", \ +// msg->getName(), msg->getTimeStamp(), msg->plan_id.c_str(), msg->man_id.c_str(), msg->state); +// } +// if (type == DUNE::IMC::MsgList::getIdStatic()) +// { +// DUNE::IMC::MsgList * msgList = dynamic_cast(message); +// printf("server receive %s: %lf\n", msgList->getName(), msgList->getTimeStamp()); +// DUNE::IMC::MessageList::const_iterator iter1 = msgList->msgs.begin(); +// for (; iter1 != msgList->msgs.end(); ++iter1) +// { +// DUNE::IMC::EntityParameters *entityParameter = static_cast(*iter1); +// DUNE::IMC::MessageList::const_iterator iter2 = entityParameter->params.begin(); +// for (; iter2 != entityParameter->params.end(); ++iter2) +// { +// DUNE::IMC::EntityParameter *subEntityParameter = static_cast(*iter2); +// std::cout << entityParameter->name << ": " << subEntityParameter->name << ", " << subEntityParameter->value << std::endl; +// } +// } +// } +// if (type == DUNE::IMC::EstimatedState::getIdStatic()) +// { +// DUNE::IMC::EstimatedState * msg = dynamic_cast(message); +// // printf("server receive %s: %lf, (%f, %f, %f), (%f, %f, %f)\n", +// // msg->getName(), msg->getTimeStamp(), +// // msg->lat, msg->lon, msg->depth, +// // msg->phi, msg->theta, msg->psi); +// printf("server receive %s: %lf, (%f, %f, %f), (%f, %f, %f)\n", +// msg->getName(), msg->getTimeStamp(), +// msg->lat*180/M_PI, msg->lon*180/M_PI, msg->depth*180/M_PI, +// msg->phi*180/M_PI, msg->theta*180/M_PI, msg->psi*180/M_PI); +// } +// if (type == DUNE::IMC::VehicleState::getIdStatic()) +// { +// DUNE::IMC::VehicleState * msg = dynamic_cast(message); +// printf("server receive %s: %lf, %u\n", +// msg->getName(), msg->getTimeStamp(), msg->op_mode); +// } +// if (type == DUNE::IMC::LogBookControl::getIdStatic()) +// { +// DUNE::IMC::LogBookControl * msg = dynamic_cast(message); +// printf("server receive %s: %lf, %u\n", +// msg->getName(), msg->getTimeStamp(), msg->command); + +// DUNE::IMC::MessageList::const_iterator iter = msg->msg.begin(); +// for (; iter != msg->msg.end(); ++iter) +// { +// DUNE::IMC::LogBookEntry *msgLogBookEntry = static_cast(*iter); +// std::cout << msgLogBookEntry->type << ", " << msgLogBookEntry->text << std::endl; +// } +// } + +// return true; +// } + +//--------------------------------------------------------- +// Procedure: OnStartUp() +// happens before connection is open + +bool ClientViewer::OnStartUp() +{ + initLon = -70.330400; + initLat = 43.825300; + initAlt = 0; + + // udpCommEvent.SetPeriod(1); + // udpCommEvent.SetCallback(processMessageCallback,NULL); + // udpCommEvent.Start(); + + // tcpCommEvent.SetPeriod(1); + // tcpCommEvent.SetCallback(processMessageCallback,NULL); + // tcpCommEvent.Start(); + + sock_udp_receive.bind(UDP_RECEIVE_PORT, DUNE::Network::Address::Any, false); + m_poll_0.add(sock_udp_receive); + + try + { + sock_tcp_send.connect(TCP_SERVER_ADDRESS, TCP_SEND_PORT); + sock_tcp_send.setKeepAlive(true); + m_poll_1.add(sock_tcp_send); + } + catch(const std::exception& e) + { + std::cerr << e.what() << '\n'; + } + + char local_ip2[INET_ADDRSTRLEN] = {0}; + get_local_ip_using_create_socket(local_ip2); + ethernetIP = local_ip2; + + RegisterVariables(); + + return(true); +} + +std::string ClientViewer::SetPlan1(std::string sourceName, double stamp) +{ + struct WayPointBehavior behavior; + behavior.source = sourceName; + behavior.priority = -1; + behavior.points.clear(); + behavior.name = "east_waypt_survey"; + behavior.priority = 10; + struct Landmark station_1 = {"station_1", -70.328891,43.824429, 10, 3, -1, -1, "point"}; + struct Landmark station_2 = {"station_2", -70.327885,43.824676, 8, 5, -1, -1, "point"}; + struct Landmark station_3 = {"station_3", -70.327867,43.823622, 6, 7, -1, -1, "point"}; + struct Landmark station_4 = {"station_4", -70.328765,43.823622, 4, 9, -1, -1, "point"}; + behavior.points.push_back(station_1); + behavior.points.push_back(station_2); + behavior.points.push_back(station_3); + behavior.points.push_back(station_4); + behavior.duration = -1; + behavior.constSpeed = -1; + behavior.repeat = 1; + behavior.closedLoop = true; + behavior.perpetual = false; + behavior.minDepth = -1; + behavior.maxDepth = -1; + + Json::Value behaviorConfig; + behaviorConfig["taskName"] = behavior.name; + behaviorConfig["taskId"] = "1"; + behaviorConfig["sourceName"] = behavior.source; + behaviorConfig["sourceAddress"] = ethernetIP; + behaviorConfig["clientStamp"] = stamp; + behaviorConfig["boardStamp"] = -1; + behaviorConfig["priority"] = behavior.priority; + behaviorConfig["duration"] = behavior.duration; + behaviorConfig["closedLoop"] = behavior.closedLoop; + behaviorConfig["constSpeed"] = behavior.constSpeed; + behaviorConfig["repeat"] = behavior.repeat; + behaviorConfig["perpetual"] = behavior.perpetual; + behaviorConfig["minDepth"] = behavior.minDepth; + behaviorConfig["maxDepth"] = behavior.maxDepth; + behaviorConfig["origin"]["lon"] = initLon; + behaviorConfig["origin"]["lat"] = initLat; + behaviorConfig["origin"]["altitude"] = initAlt; + + Json::Value station; + station["name"] = station_1.name; + station["lon"] = station_1.lon; + station["lat"] = station_1.lat; + station["depth"] = station_1.depth; + station["speed"] = station_1.speed; + station["north"] = station_1.north; + station["east"] = station_1.east; + station["type"] = station_1.type; + behaviorConfig["points"].append(station); + station["name"] = station_2.name; + station["lon"] = station_2.lon; + station["lat"] = station_2.lat; + station["depth"] = station_2.depth; + station["speed"] = station_2.speed; + station["north"] = station_2.north; + station["east"] = station_2.east; + station["type"] = station_2.type; + behaviorConfig["points"].append(station); + station["name"] = station_3.name; + station["lon"] = station_3.lon; + station["lat"] = station_3.lat; + station["depth"] = station_3.depth; + station["speed"] = station_3.speed; + station["north"] = station_3.north; + station["east"] = station_3.east; + station["type"] = station_3.type; + behaviorConfig["points"].append(station); + station["name"] = station_4.name; + station["lon"] = station_4.lon; + station["lat"] = station_4.lat; + station["depth"] = station_4.depth; + station["speed"] = station_4.speed; + station["north"] = station_4.north; + station["east"] = station_4.east; + station["type"] = station_4.type; + behaviorConfig["points"].append(station); + Json::StreamWriterBuilder builder; + std::string behaviorSpecString = Json::writeString(builder, behaviorConfig); + + return behaviorSpecString; +} + +std::string ClientViewer::SetPlan2(std::string sourceName, double stamp) +{ + struct WayPointBehavior behavior; + behavior.source = sourceName; + behavior.priority = -1; + behavior.points.clear(); + behavior.name = "west_waypt_survey"; + behavior.priority = 10; + struct Landmark station_1 = {"station_1", -70.331532,43.824194, 9, 4, -1, -1, "track"}; + struct Landmark station_2 = {"station_2", -70.330328,43.824299, 7, 6, -1, -1, "track"}; + struct Landmark station_3 = {"station_3", -70.330346,43.823518, 5, 8, -1, -1, "track"}; + struct Landmark station_4 = {"station_4", -70.331406,43.823206, 3, 10, -1, -1, "track"}; + behavior.points.push_back(station_1); + behavior.points.push_back(station_2); + behavior.points.push_back(station_3); + behavior.points.push_back(station_4); + behavior.duration = -1; + behavior.constSpeed = -1; + behavior.repeat = -1; + behavior.closedLoop = true; + behavior.perpetual = true; + behavior.minDepth = -1; + behavior.maxDepth = -1; + + Json::Value behaviorConfig; + behaviorConfig["taskName"] = behavior.name; + behaviorConfig["taskId"] = "2"; + behaviorConfig["sourceName"] = behavior.source; + behaviorConfig["sourceAddress"] = ethernetIP; + behaviorConfig["clientStamp"] = stamp; + behaviorConfig["boardStamp"] = -1; + behaviorConfig["priority"] = behavior.priority; + behaviorConfig["duration"] = behavior.duration; + behaviorConfig["closedLoop"] = behavior.closedLoop; + behaviorConfig["constSpeed"] = behavior.constSpeed; + behaviorConfig["repeat"] = behavior.repeat; + behaviorConfig["perpetual"] = behavior.perpetual; + behaviorConfig["minDepth"] = behavior.minDepth; + behaviorConfig["maxDepth"] = behavior.maxDepth; + behaviorConfig["origin"]["lon"] = initLon; + behaviorConfig["origin"]["lat"] = initLat; + behaviorConfig["origin"]["altitude"] = initAlt; + Json::Value station; + station["name"] = station_1.name; + station["lon"] = station_1.lon; + station["lat"] = station_1.lat; + station["depth"] = station_1.depth; + station["speed"] = station_1.speed; + station["north"] = station_1.north; + station["east"] = station_1.east; + station["type"] = station_1.type; + behaviorConfig["points"].append(station); + station["name"] = station_2.name; + station["lon"] = station_2.lon; + station["lat"] = station_2.lat; + station["depth"] = station_2.depth; + station["speed"] = station_2.speed; + station["north"] = station_2.north; + station["east"] = station_2.east; + station["type"] = station_2.type; + behaviorConfig["points"].append(station); + station["name"] = station_3.name; + station["lon"] = station_3.lon; + station["lat"] = station_3.lat; + station["depth"] = station_3.depth; + station["speed"] = station_3.speed; + station["north"] = station_3.north; + station["east"] = station_3.east; + station["type"] = station_3.type; + behaviorConfig["points"].append(station); + station["name"] = station_4.name; + station["lon"] = station_4.lon; + station["lat"] = station_4.lat; + station["depth"] = station_4.depth; + station["speed"] = station_4.speed; + station["north"] = station_4.north; + station["east"] = station_4.east; + station["type"] = station_4.type; + behaviorConfig["points"].append(station); + Json::StreamWriterBuilder builder; + std::string behaviorSpecString = Json::writeString(builder, behaviorConfig); + + return behaviorSpecString; +} + +std::string ClientViewer::ModifyPlan1(std::string sourceName, double stamp) +{ + struct WayPointBehavior behavior; + behavior.source = sourceName; + behavior.priority = -1; + behavior.points.clear(); + behavior.name = "east_waypt_survey"; + behavior.priority = 10; + struct Landmark station_1 = {"station_1", -70.328891,43.824429, 9, 2, -1, -1, "track"}; + struct Landmark station_2 = {"station_2", -70.327885,43.824676, 7, 4, -1, -1, "point"}; + struct Landmark station_3 = {"station_3", -70.327867,43.823622, 5, 6, -1, -1, "track"}; + struct Landmark station_4 = {"station_4", -70.328765,43.823622, 3, 8, -1, -1, "point"}; + behavior.points.push_back(station_1); + behavior.points.push_back(station_2); + behavior.points.push_back(station_3); + behavior.points.push_back(station_4); + behavior.duration = -1; + behavior.constSpeed = -1; + behavior.repeat = 3; + behavior.closedLoop = true; + behavior.perpetual = false; + behavior.minDepth = -1; + behavior.maxDepth = -1; + + Json::Value behaviorConfig; + behaviorConfig["taskName"] = behavior.name; + behaviorConfig["taskId"] = "1"; + behaviorConfig["sourceName"] = behavior.source; + behaviorConfig["sourceAddress"] = ethernetIP; + behaviorConfig["clientStamp"] = stamp; + behaviorConfig["boardStamp"] = -1; + behaviorConfig["priority"] = behavior.priority; + behaviorConfig["duration"] = behavior.duration; + behaviorConfig["closedLoop"] = behavior.closedLoop; + behaviorConfig["constSpeed"] = behavior.constSpeed; + behaviorConfig["repeat"] = behavior.repeat; + behaviorConfig["perpetual"] = behavior.perpetual; + behaviorConfig["minDepth"] = behavior.minDepth; + behaviorConfig["maxDepth"] = behavior.maxDepth; + behaviorConfig["origin"]["lon"] = initLon; + behaviorConfig["origin"]["lat"] = initLat; + behaviorConfig["origin"]["altitude"] = initAlt; + Json::Value station; + station["name"] = station_1.name; + station["lon"] = station_1.lon; + station["lat"] = station_1.lat; + station["depth"] = station_1.depth; + station["speed"] = station_1.speed; + station["north"] = station_1.north; + station["east"] = station_1.east; + station["type"] = station_1.type; + behaviorConfig["points"].append(station); + station["name"] = station_2.name; + station["lon"] = station_2.lon; + station["lat"] = station_2.lat; + station["depth"] = station_2.depth; + station["speed"] = station_2.speed; + station["north"] = station_2.north; + station["east"] = station_2.east; + station["type"] = station_2.type; + behaviorConfig["points"].append(station); + station["name"] = station_3.name; + station["lon"] = station_3.lon; + station["lat"] = station_3.lat; + station["depth"] = station_3.depth; + station["speed"] = station_3.speed; + station["north"] = station_3.north; + station["east"] = station_3.east; + station["type"] = station_3.type; + behaviorConfig["points"].append(station); + station["name"] = station_4.name; + station["lon"] = station_4.lon; + station["lat"] = station_4.lat; + station["depth"] = station_4.depth; + station["speed"] = station_4.speed; + station["north"] = station_4.north; + station["east"] = station_4.east; + station["type"] = station_4.type; + behaviorConfig["points"].append(station); + Json::StreamWriterBuilder builder; + std::string behaviorSpecString = Json::writeString(builder, behaviorConfig); + + return behaviorSpecString; +} + +DUNE::IMC::Message * ClientViewer::imcPollUDP() +{ + if (m_poll_0.poll(0)) + { + DUNE::Network::Address addr; + uint16_t rv = sock_udp_receive.read(udpReceiveBuffer, 65535, &addr); + DUNE::IMC::Message * msg = DUNE::IMC::Packet::deserialize(udpReceiveBuffer, rv); + return msg; + } + + return NULL; +} + +DUNE::IMC::Message * ClientViewer::imcPollTCP() +{ + if (m_poll_1.poll(0)) + { + uint16_t rv = sock_tcp_send.read(tcpReceiveBuffer, 65535); + DUNE::IMC::Message * msg = DUNE::IMC::Packet::deserialize(tcpReceiveBuffer, rv); + return msg; + } + + return NULL; +} + +bool ClientViewer::tcpSendToServer(DUNE::IMC::Message * msg, std::string addr, int port) +{ + + DUNE::Utils::ByteBuffer bb; + try { + DUNE::IMC::Packet::serialize(msg, bb); + return sock_tcp_send.write(bb.getBuffer(), msg->getSerializationSize()); + } + catch (std::runtime_error& e) + { + MOOSTrace ("ERROR sending %s to %s:%d: %s\n", msg->getName(), addr.c_str(), port, e.what()); + return false; + } + + return true; +} + + +void ClientViewer::processMessage(DUNE::IMC::Message * message) { + + int type = message->getId(); + if (type == DUNE::IMC::Announce::getIdStatic()) + { + DUNE::IMC::Announce * msg = dynamic_cast(message); + printf("server receive %s: %lf, %lf, %lf, %lf\n", \ + msg->getName(), msg->getTimeStamp(), msg->lat*180/M_PI, msg->lon*180/M_PI, msg->height); + } + if (type == DUNE::IMC::PlanDB::getIdStatic()) + { + DUNE::IMC::PlanDB * msg = dynamic_cast(message); + printf("server receive %s: %lf, %d, %d\n", msg->getName(), msg->getTimeStamp(), msg->type, msg->op); + printf("%s\n", msg->info.c_str()); + } + if (type == DUNE::IMC::PlanControlState::getIdStatic()) + { + DUNE::IMC::PlanControlState * msg = dynamic_cast(message); + + printf("server receive %s: %lf, %s, %s, %u\n", \ + msg->getName(), msg->getTimeStamp(), msg->plan_id.c_str(), msg->man_id.c_str(), msg->state); + } + if (type == DUNE::IMC::MsgList::getIdStatic()) + { + DUNE::IMC::MsgList * msgList = dynamic_cast(message); + printf("server receive %s: %lf\n", msgList->getName(), msgList->getTimeStamp()); + DUNE::IMC::MessageList::const_iterator iter1 = msgList->msgs.begin(); + for (; iter1 != msgList->msgs.end(); ++iter1) + { + DUNE::IMC::EntityParameters *entityParameter = static_cast(*iter1); + DUNE::IMC::MessageList::const_iterator iter2 = entityParameter->params.begin(); + for (; iter2 != entityParameter->params.end(); ++iter2) + { + DUNE::IMC::EntityParameter *subEntityParameter = static_cast(*iter2); + std::cout << entityParameter->name << ": " << subEntityParameter->name << ", " << subEntityParameter->value << std::endl; + } + } + } + if (type == DUNE::IMC::EstimatedState::getIdStatic()) + { + DUNE::IMC::EstimatedState * msg = dynamic_cast(message); + printf("server receive %s: %lf, (%f, %f, %f), (%f, %f, %f)\n", + msg->getName(), msg->getTimeStamp(), + msg->lat*180/M_PI, msg->lon*180/M_PI, msg->depth*180/M_PI, + msg->phi*180/M_PI, msg->theta*180/M_PI, msg->psi*180/M_PI); + } + if (type == DUNE::IMC::VehicleState::getIdStatic()) + { + DUNE::IMC::VehicleState * msg = dynamic_cast(message); + printf("server receive %s: %lf, %u\n", + msg->getName(), msg->getTimeStamp(), msg->op_mode); + } + if (type == DUNE::IMC::LogBookControl::getIdStatic()) + { + DUNE::IMC::LogBookControl * msg = dynamic_cast(message); + printf("server receive %s: %lf, %u\n", + msg->getName(), msg->getTimeStamp(), msg->command); + + DUNE::IMC::MessageList::const_iterator iter = msg->msg.begin(); + for (; iter != msg->msg.end(); ++iter) + { + DUNE::IMC::LogBookEntry *msgLogBookEntry = static_cast(*iter); + std::cout << msgLogBookEntry->type << ", " << msgLogBookEntry->context << ", " << msgLogBookEntry->text << std::endl; + } + } +} + +//--------------------------------------------------------- +// Procedure: RegisterVariables + +void ClientViewer::RegisterVariables() +{ + Register("Command", 0); + Register("Key", 0); + Register("Value", 0); +} + +int ClientViewer::SetEntityStatus(DUNE::IMC::EntityParameter& subMsg, std::string name, std::string value) +{ + int result = -1; + + subMsg.name = name; + subMsg.value = value; + + result = 0; + return result; +} + +std::string ClientViewer::generateEntityName(std::string parentName, std::string childName) +{ + Json::Value outputJsonValue; + outputJsonValue["parent"] = parentName; + outputJsonValue["child"] = childName; + Json::StreamWriterBuilder builder; + std::string outputJsonString = Json::writeString(builder, outputJsonValue); + return outputJsonString; +} + +std::string ClientViewer::generateEntityValue(std::string value, std::string type) +{ + Json::Value outputJsonValue; + outputJsonValue["value"] = value; + outputJsonValue["type"] = type; + Json::StreamWriterBuilder builder; + std::string outputJsonString = Json::writeString(builder, outputJsonValue); + return outputJsonString; +} + + +int ClientViewer::get_local_ip_using_create_socket(char* str_ip) +{ + int status = -1; + int af = AF_INET; + int sock_fd = socket(AF_INET, SOCK_DGRAM, 0); + struct sockaddr_in remote_addr; + struct sockaddr_in local_addr; + char *local_ip = NULL; + socklen_t len = 0; + + remote_addr.sin_family = AF_INET; + remote_addr.sin_port = htons(53); + remote_addr.sin_addr.s_addr = inet_addr("1.1.1.1"); + + len = sizeof(struct sockaddr_in); + status = connect(sock_fd, (struct sockaddr*)&remote_addr, len); + if(status != 0 ){ + printf("connect err \n"); + } + + len = sizeof(struct sockaddr_in); + getsockname(sock_fd, (struct sockaddr*)&local_addr, &len); + + local_ip = inet_ntoa(local_addr.sin_addr); + if(local_ip) + { + strcpy(str_ip, local_ip); + status = 0; + } + return status; +} diff --git a/src/pClientViewer/ClientViewer.h b/src/pClientViewer/ClientViewer.h new file mode 100644 index 0000000..69b02f0 --- /dev/null +++ b/src/pClientViewer/ClientViewer.h @@ -0,0 +1,101 @@ +/************************************************************/ +/* NAME: Xiaobin Zeng */ +/* ORGN: MIT */ +/* FILE: ClientViewer.h */ +/* DATE: */ +/************************************************************/ + +#ifndef ClientViewer_HEADER +#define ClientViewer_HEADER + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "MOOS/libMOOS/MOOSLib.h" +#include "MOOS/libMOOS/Utils/MOOSThread.h" +#include "MOOS/libMOOS/Utils/PeriodicEvent.h" +#include +// #include "UDPCommunicationEvent.h" +// #include "TCPCommunicationEvent.h" + +struct Landmark { + std::string name; + float lon; + float lat; + float depth; + float speed; + float north; + float east; + std::string type; +}; + +struct WayPointBehavior +{ + std::string name; + std::string source; + int priority; + std::vector points; + float duration; + bool closedLoop; + float constSpeed; + int repeat; + bool perpetual; + float minDepth; + float maxDepth; +}; + +class ClientViewer : public CMOOSApp +{ + public: + ClientViewer(); + ~ClientViewer(); + + protected: // Standard MOOSApp functions to overload + bool OnNewMail(MOOSMSG_LIST &NewMail); + bool Iterate(); + bool OnConnectToServer(); + bool OnStartUp(); + void RegisterVariables(); + void processMessage(DUNE::IMC::Message * message); + + private: + DUNE::IMC::Message * imcPollTCP(); + DUNE::IMC::Message * imcPollUDP(); + DUNE::Network::TCPSocket sock_tcp_send; + DUNE::Network::UDPSocket sock_udp_receive; + + bool tcpSendToServer(DUNE::IMC::Message * msg, std::string addr, int port); + int get_local_ip_using_create_socket(char* str_ip); + std::string SetPlan1(std::string sourceName, double stamp); + std::string SetPlan2(std::string sourceName, double stamp); + std::string ModifyPlan1(std::string sourceName, double stamp); + int SetEntityStatus(DUNE::IMC::EntityParameter& subMsg, std::string name, std::string value); + std::string generateEntityName(std::string parentName, std::string childName); + std::string generateEntityValue(std::string value, std::string type); + + DUNE::IO::Poll m_poll_0; + DUNE::IO::Poll m_poll_1; + DUNE::IO::Poll m_poll_2; + uint8_t* udpReceiveBuffer; + uint8_t* tcpReceiveBuffer; + std::string SetPlan1(); + std::string SetPlan2(); + std::string ethernetIP; + float initLon; + float initLat; + float initAlt; + + CMOOSThread udpThread; + + // UDPCommunicationEvent udpCommEvent; + // TCPCommunicationEvent tcpCommEvent; +}; + +#endif diff --git a/src/pClientViewer/ClientViewer_Info.cpp b/src/pClientViewer/ClientViewer_Info.cpp new file mode 100644 index 0000000..eefb35b --- /dev/null +++ b/src/pClientViewer/ClientViewer_Info.cpp @@ -0,0 +1,115 @@ +/****************************************************************/ +/* NAME: Xiaobin Zeng */ +/* ORGN: MIT Cambridge MA */ +/* FILE: ClientViewer_Info.cpp */ +/* DATE: Dec 29th 1963 */ +/****************************************************************/ + +#include +#include +#include "ClientViewer_Info.h" +#include "ColorParse.h" +#include "ReleaseInfo.h" + +using namespace std; + +//---------------------------------------------------------------- +// Procedure: showSynopsis + +void showSynopsis() +{ + blk("SYNOPSIS: "); + blk("------------------------------------ "); + blk(" The pClientViewer application is used for "); + blk(" "); + blk(" "); + blk(" "); + blk(" "); +} + +//---------------------------------------------------------------- +// Procedure: showHelpAndExit + +void showHelpAndExit() +{ + blk(" "); + blu("=============================================================== "); + blu("Usage: pClientViewer file.moos [OPTIONS] "); + blu("=============================================================== "); + blk(" "); + showSynopsis(); + blk(" "); + blk("Options: "); + mag(" --alias","= "); + blk(" Launch pClientViewer with the given process name "); + blk(" rather than pClientViewer. "); + mag(" --example, -e "); + blk(" Display example MOOS configuration block. "); + mag(" --help, -h "); + blk(" Display this help message. "); + mag(" --interface, -i "); + blk(" Display MOOS publications and subscriptions. "); + mag(" --version,-v "); + blk(" Display the release version of pClientViewer. "); + blk(" "); + blk("Note: If argv[2] does not otherwise match a known option, "); + blk(" then it will be interpreted as a run alias. This is "); + blk(" to support pAntler launching conventions. "); + blk(" "); + exit(0); +} + +//---------------------------------------------------------------- +// Procedure: showExampleConfigAndExit + +void showExampleConfigAndExit() +{ + blk(" "); + blu("=============================================================== "); + blu("pClientViewer Example MOOS Configuration "); + blu("=============================================================== "); + blk(" "); + blk("ProcessConfig = pClientViewer "); + blk("{ "); + blk(" AppTick = 4 "); + blk(" CommsTick = 4 "); + blk(" "); + blk("} "); + blk(" "); + exit(0); +} + + +//---------------------------------------------------------------- +// Procedure: showInterfaceAndExit + +void showInterfaceAndExit() +{ + blk(" "); + blu("=============================================================== "); + blu("pClientViewer INTERFACE "); + blu("=============================================================== "); + blk(" "); + showSynopsis(); + blk(" "); + blk("SUBSCRIPTIONS: "); + blk("------------------------------------ "); + blk(" NODE_MESSAGE = src_node=alpha,dest_node=bravo,var_name=FOO, "); + blk(" string_val=BAR "); + blk(" "); + blk("PUBLICATIONS: "); + blk("------------------------------------ "); + blk(" Publications are determined by the node message content. "); + blk(" "); + exit(0); +} + +//---------------------------------------------------------------- +// Procedure: showReleaseInfoAndExit + +void showReleaseInfoAndExit() +{ + showReleaseInfo("pClientViewer", "gpl"); + exit(0); +} + diff --git a/src/pClientViewer/ClientViewer_Info.h b/src/pClientViewer/ClientViewer_Info.h new file mode 100644 index 0000000..e1a6839 --- /dev/null +++ b/src/pClientViewer/ClientViewer_Info.h @@ -0,0 +1,18 @@ +/****************************************************************/ +/* NAME: Xiaobin Zeng */ +/* ORGN: MIT Cambridge MA */ +/* FILE: ClientViewer_Info.h */ +/* DATE: Dec 29th 1963 */ +/****************************************************************/ + +#ifndef ClientViewer_INFO_HEADER +#define ClientViewer_INFO_HEADER + +void showSynopsis(); +void showHelpAndExit(); +void showExampleConfigAndExit(); +void showInterfaceAndExit(); +void showReleaseInfoAndExit(); + +#endif + diff --git a/src/pClientViewer/main.cpp b/src/pClientViewer/main.cpp new file mode 100644 index 0000000..a259fa3 --- /dev/null +++ b/src/pClientViewer/main.cpp @@ -0,0 +1,52 @@ +/************************************************************/ +/* NAME: Xiaobin Zeng */ +/* ORGN: MIT */ +/* FILE: main.cpp */ +/* DATE: */ +/************************************************************/ + +#include +#include "MBUtils.h" +#include "ColorParse.h" +#include "ClientViewer.h" +#include "ClientViewer_Info.h" + +using namespace std; + +int main(int argc, char *argv[]) +{ + string mission_file; + string run_command = argv[0]; + + for(int i=1; i +#include +#include "MBUtils.h" +#include "DataManagement.h" +#include + +using namespace std; + +//--------------------------------------------------------- +// Constructor +DataManagement::DataManagement() +{ + + motionControlInfo.desiredHeading = 0; + motionControlInfo.desiredSpeed = 0; + motionControlInfo.desiredDepth = 0; + + nDoublePrecision = 5; + //AUV状态信息:0~99 + logVarList["uMotion_pose_log"] = 0; + //任务历史信息:100~199 + logVarList["uMission_task_log"] = 100; + //客户端操作记录:200~299 + logVarList["uClient_plandbSet_log"] = 200; + logVarList["uClient_plandbGet_log"] = 201; + logVarList["uClient_parameterSet_log"] = 202; + logVarList["uClient_planControl_log"] = 203; + logVarList["uClient_manualEnable_log"] = 204; + logVarList["uClient_manualDrive_log"] = 205; + //错误日志:300~399 + logVarList["uFH_errorMsg_log"] = 300; + //运控信息:400~499 + logVarList["uMotion_desired_log"] = 400; +} + +//--------------------------------------------------------- +// Destructor +DataManagement::~DataManagement() +{ + if(auvDataStream.is_open()) + { + auvDataStream.close(); + } + if(missionHistoryStream.is_open()) + { + missionHistoryStream.close(); + } + if(clientCommandStream.is_open()) + { + clientCommandStream.close(); + } + if(faultLogStream.is_open()) + { + faultLogStream.close(); + } + if(motionControlStream.is_open()) + { + motionControlStream.close(); + } +} + +//--------------------------------------------------------- +// Procedure: OnNewMail +bool DataManagement::OnNewMail(MOOSMSG_LIST &NewMail) +{ + AppCastingMOOSApp::OnNewMail(NewMail); + + DoAsyncLog(NewMail); + + MOOSMSG_LIST::iterator p; + + for(p=NewMail.begin(); p!=NewMail.end(); p++) + { + CMOOSMsg &msg = *p; + + string key = msg.GetKey(); + string comm = msg.GetCommunity(); + double dval = msg.GetDouble(); + string sval = msg.GetString(); + string msrc = msg.GetSource(); + double mtime = msg.GetTime(); + bool mdbl = msg.IsDouble(); + bool mstr = msg.IsString(); + + if(key == "uDevice_monitor_fb") + { + std::string err; + Json::Value estimatedStateData; + std::istringstream iss(msg.GetString()); + Json::CharReaderBuilder builder; + bool parsingResult = Json::parseFromStream(builder, iss, &estimatedStateData, &err); + if (!parsingResult) + { + std::cerr << "Failed to parse JSON string." << std::endl; + return false; + } + std::stringstream ss; + ss << std::fixed << std::setprecision(6) << MOOS::Time() << "," + << estimatedStateData["driveMode"].asUInt() << "," + << estimatedStateData["referenceLon"].asFloat() << "," + << estimatedStateData["referenceLat"].asFloat() << "," + << estimatedStateData["referenceAltitude"].asFloat() << "," + << estimatedStateData["currentLon"].asFloat() << "," + << estimatedStateData["currentLat"].asFloat() << "," + << estimatedStateData["currentAltitude"].asFloat() << "," + << estimatedStateData["north"].asFloat() << "," + << estimatedStateData["east"].asFloat() << "," + << estimatedStateData["depth"].asFloat() << "," + << estimatedStateData["roll"].asFloat() << "," + << estimatedStateData["pitch"].asFloat() << "," + << estimatedStateData["yaw"].asFloat() << "," + << estimatedStateData["insVX"].asFloat() << "," + << estimatedStateData["insVY"].asFloat() << "," + << estimatedStateData["insVZ"].asFloat() << "," + << estimatedStateData["dvlVX"].asFloat() << "," + << estimatedStateData["dvlVY"].asFloat() << "," + << estimatedStateData["dvlVZ"].asFloat() << "," + << estimatedStateData["height"].asFloat() << "," + << estimatedStateData["rpm"].asInt() << "," + << estimatedStateData["lightEnable"].asUInt() << "," + << estimatedStateData["throwingLoadEnable"].asUInt() << "," + << estimatedStateData["dvlStatus"].asUInt() << "," + << estimatedStateData["iridium"].asUInt() << "," + << estimatedStateData["batteryVoltage"].asUInt() << "," + << estimatedStateData["batteryLevel"].asUInt() << "," + << estimatedStateData["batteryTemp"].asFloat(); + Notify("uMotion_pose_log", ss.str()); + } + + if(key == "uMission_task_fb") + { + std::string err; + Json::Value missionStatusObject; + std::istringstream iss(msg.GetString()); + Json::CharReaderBuilder builder; + bool parsingResult = Json::parseFromStream(builder, iss, &missionStatusObject, &err); + try + { + if (!parsingResult) + { + throw (std::string("parse error")); + } + if (missionStatusObject["state"].asInt() == RUN) + { + std::stringstream ss; + ss << std::fixed << std::setprecision(6) << MOOS::Time() << "," + << missionStatusObject["state"].asInt() << "," + << missionStatusObject["taskName"].asString() << "," + << missionStatusObject["destName"].asString() << "," + << missionStatusObject["errorCode"].asUInt(); + Notify("uMission_task_log", ss.str()); + } + } + catch(std::string s) + { + std::cout << s << std::endl; + } + } + + if((key == "uFH_errorMsg1_fb") || (key == "uFH_errorMsg2_fb") || (key == "uFH_errorMsg3_fb")) + { + std::string err; + Json::Value errorStatus; + std::istringstream iss(msg.GetString()); + Json::CharReaderBuilder builder; + bool parsingResult = Json::parseFromStream(builder, iss, &errorStatus, &err); + // std::cout << "uFH_errorMsg: " << msg.GetString() << std::endl; + try + { + if (!parsingResult) + { + throw (std::string("parse error")); + } + if (errorStatus["FaultMsgs"].empty()) + { + throw (std::string("faultMsgs empty")); + } + + std::stringstream ss; + ss << std::fixed << std::setprecision(6) << MOOS::Time() << ","; + ss << errorStatus["FaultLevel"].asInt() << ","; + std::string prefix = ss.str(); + + Json::Value faultMsgsObject = errorStatus["FaultMsgs"]; + std::vector typeList = faultMsgsObject.getMemberNames(); + int typeSize = typeList.size(); + std::vector contentList; + for(int i=0; i< typeSize; i++) + { + ss.str(""); + std::string faultType = typeList.at(i); + ss << faultType << ","; + Json::Value faultIDArray = faultMsgsObject[faultType]["FaultID"]; + if (!faultIDArray.isArray()) + { + throw (std::string(faultType + " FaultID is not array")); + } + ss << "["; + for(int j=0; j< faultIDArray.size(); j++) + { + if (j == faultIDArray.size() - 1) + { + ss << faultIDArray[j].asInt(); + } + else + { + ss << faultIDArray[j].asInt() << ","; + } + } + ss << "],"; + ss << faultMsgsObject[faultType]["FirstRecvTime"].asString() << ","; + ss << faultMsgsObject[faultType]["Source"].asString(); + contentList.push_back(prefix + ss.str()); + } + int contentSize = contentList.size(); + ss.str(""); + for (int i = 0; i < contentSize; i++) + { + + if (i == contentSize - 1) + { + ss << contentList.at(i); + } + else + { + ss << contentList.at(i) << std::endl; + } + } + Notify("uFH_errorMsg_log", ss.str()); + } + catch(std::string s) + { + std::cout << s << std::endl; + } + } + if(key == "DESIRED_HEADING") + { + motionControlInfo.desiredHeading = msg.GetDouble(); + std::stringstream ss; + ss << std::fixed << std::setprecision(6) << MOOS::Time() << ","; + ss << motionControlInfo.desiredHeading << "," + << motionControlInfo.desiredSpeed << "," + << motionControlInfo.desiredDepth; + Notify("uMotion_desired_log", ss.str()); + } + if(key == "DESIRED_SPEED") + { + motionControlInfo.desiredSpeed = msg.GetDouble(); + std::stringstream ss; + ss << std::fixed << std::setprecision(6) << MOOS::Time() << ","; + ss << motionControlInfo.desiredHeading << "," + << motionControlInfo.desiredSpeed << "," + << motionControlInfo.desiredDepth; + Notify("uMotion_desired_log", ss.str()); + } + if(key == "DESIRED_DEPTH") + { + motionControlInfo.desiredDepth = msg.GetDouble(); + std::stringstream ss; + ss << std::fixed << std::setprecision(6) << MOOS::Time() << ","; + ss << motionControlInfo.desiredHeading << "," + << motionControlInfo.desiredSpeed << "," + << motionControlInfo.desiredDepth; + Notify("uMotion_desired_log", ss.str()); + } + } + + return(true); +} + +bool DataManagement::DoAsyncLog(MOOSMSG_LIST &NewMail) +{ + MOOSMSG_LIST::iterator q; + std::stringstream sStream; + int saveFileIndex = -1; + for(q = NewMail.begin();q!=NewMail.end();q++) + { + CMOOSMsg & rMsg = *q; + if(logVarList.find(rMsg.m_sKey)!=logVarList.end()) + { + std::map::iterator q = logVarList.find(rMsg.m_sKey); + saveFileIndex = q->second; + + std::stringstream sEntry; + sEntry.setf(ios::left); + sEntry.setf(ios::fixed); + if(rMsg.IsDataType(MOOS_STRING) || rMsg.IsDataType(MOOS_DOUBLE)) + { + sEntry << rMsg.GetAsString(12,nDoublePrecision) << ' '; + } + + if ((saveFileIndex >= 0) && (saveFileIndex < 100)) + { + if(auvDataStream.is_open()) + { + auvDataStream << sEntry.str() << std::endl; + } + } + if ((saveFileIndex >= 100) && (saveFileIndex < 200)) + { + if(missionHistoryStream.is_open()) + { + missionHistoryStream << sEntry.str() << std::endl; + } + } + if ((saveFileIndex >= 200) && (saveFileIndex < 300)) + { + if(clientCommandStream.is_open()) + { + clientCommandStream << sEntry.str() << std::endl; + } + } + if ((saveFileIndex >= 300) && (saveFileIndex < 400)) + { + if(faultLogStream.is_open()) + { + faultLogStream << sEntry.str() << std::endl; + } + } + if ((saveFileIndex >= 400) && (saveFileIndex < 500)) + { + if(motionControlStream.is_open()) + { + motionControlStream << sEntry.str() << std::endl; + } + } + contentFromStream = sEntry.str(); + } + } + return true; +} + +//--------------------------------------------------------- +// Procedure: OnConnectToServer + +bool DataManagement::OnConnectToServer() +{ + RegisterVariables(); + return(true); +} + +//--------------------------------------------------------- +// Procedure: Iterate() +// happens AppTick times per second + +bool DataManagement::Iterate() +{ + AppCastingMOOSApp::Iterate(); + + auvDataStream.flush(); + missionHistoryStream.flush(); + clientCommandStream.flush(); + faultLogStream.flush(); + motionControlStream.flush(); + AppCastingMOOSApp::PostReport(); + + return(true); +} + +//--------------------------------------------------------- +// Procedure: OnStartUp() +// happens before connection is open + +bool DataManagement::OnStartUp() +{ + AppCastingMOOSApp::OnStartUp(); + + list sParams; + m_MissionReader.EnableVerbatimQuoting(false); + if(m_MissionReader.GetConfiguration(GetAppName(), sParams)) { + list::iterator p; + for(p=sParams.begin(); p!=sParams.end(); p++) { + string line = *p; + string param = tolower(biteStringX(line, '=')); + string value = line; + + if(param == "foo") { + //handled + } + else if(param == "bar") { + //handled + } + } + } + std::string saveLogDir; + m_MissionReader.GetValue("LogDir", saveLogDir); + std::string vehicleName; + m_MissionReader.GetValue("VehicleName", vehicleName); + bool logEnable = false; + m_MissionReader.GetValue("LogEnable", logEnable); + + std::string auvDataFile; + m_MissionReader.GetValue("AuvDataLog", auvDataFile); + std::string missionHistoryFile; + m_MissionReader.GetValue("MissionHistoryLog", missionHistoryFile); + std::string clientCommandFile; + m_MissionReader.GetValue("ClientCommandLog", clientCommandFile); + std::string faultLogFile; + m_MissionReader.GetValue("FaultLog", faultLogFile); + std::string motionControlFile; + m_MissionReader.GetValue("MotionControlLog", motionControlFile); + + + if (logEnable) + { + if (access(saveLogDir.c_str(), F_OK) == -1 ) + { + mode_t mode = 0775; + mkdir(saveLogDir.c_str(), mode); + } + saveLogDir += "/" + vehicleName; + if (access(saveLogDir.c_str(), F_OK) == -1 ) + { + mode_t mode = 0775; + mkdir(saveLogDir.c_str(), mode); + } + + std::string subDir; + std::string localTime; + GenerateFileName(subDir, localTime); + saveLogDir += "/" + subDir; + if (access(saveLogDir.c_str(), F_OK) == -1 ) + { + mode_t mode = 0775; + mkdir(saveLogDir.c_str(), mode); + } + saveLogDir += "/" + localTime; + if (access(saveLogDir.c_str(), F_OK) == -1 ) + { + mode_t mode = 0775; + mkdir(saveLogDir.c_str(), mode); + } + std::string auvDataSavePath = saveLogDir + "/" + auvDataFile; + std::string missionHistorySavePath = saveLogDir + "/" + missionHistoryFile; + std::string clientCommandSavePath = saveLogDir + "/" + clientCommandFile; + std::string faultLogSavePath = saveLogDir + "/" + faultLogFile; + std::string motionControlSavePath = saveLogDir + "/" + motionControlFile; + + if(!OpenFile(auvDataStream, auvDataSavePath)) + return MOOSFail("Failed to Open auvData file"); + if(!OpenFile(missionHistoryStream, missionHistorySavePath)) + return MOOSFail("Failed to Open missionHistory file"); + if(!OpenFile(clientCommandStream, clientCommandSavePath)) + return MOOSFail("Failed to Open clientCommand file"); + if(!OpenFile(faultLogStream, faultLogSavePath)) + return MOOSFail("Failed to Open faultLog file"); + if(!OpenFile(motionControlStream, motionControlSavePath)) + return MOOSFail("Failed to Open faultLog file"); + + DoAuvDataLogBanner(auvDataStream); + DoMissionHistoryBanner(missionHistoryStream); + DoFaultHandleBanner(faultLogStream); + DoMotionControlBanner(motionControlStream); + } + + RegisterVariables(); + return(true); +} + +//--------------------------------------------------------- +// Procedure: RegisterVariables + +void DataManagement::RegisterVariables() +{ + AppCastingMOOSApp::RegisterVariables(); + + Register("uDevice_monitor_fb", 0); + Register("uMission_task_fb", 0); + Register("uMission_task_log", 0); + Register("uMotion_pose_log", 0); + Register("uClient_plandbSet_log", 0); + Register("uClient_plandbGet_log", 0); + Register("uClient_parameterSet_log", 0); + Register("uClient_planControl_log", 0); + Register("uClient_manualEnable_log", 0); + Register("uClient_manualDrive_log", 0); + Register("uFH_errorMsg1_fb", 0); + Register("uFH_errorMsg2_fb", 0); + Register("uFH_errorMsg3_fb", 0); + Register("uFH_errorMsg_log", 0); + Register("DESIRED_HEADING", 0); + Register("DESIRED_SPEED", 0); + Register("DESIRED_DEPTH", 0); + Register("uMotion_desired_log", 0); +} + +bool DataManagement::buildReport() +{ + m_msgs << contentFromStream << endl; + return true; +} + +double DataManagement::getTimeStamp() +{ + struct timeval tv; + gettimeofday(&tv,NULL); + double stamp = double(tv.tv_sec*1000000 + tv.tv_usec) / 1000000; + return stamp; +} + +void DataManagement::DoAuvDataLogBanner(std::ofstream &os) +{ + os << "stamp" << ","; + os << "mode" << ","; + os << "refLon" << ","; + os << "refLat" << ","; + os << "refAlt" << ","; + os << "curLon" << ","; + os << "curLat" << ","; + os << "curAlt" << ","; + os << "north" << ","; + os << "east" << ","; + os << "depth" << ","; + os << "roll" << ","; + os << "pitch" << ","; + os << "yaw" << ","; + os << "insVX" << ","; + os << "insVY" << ","; + os << "insVZ" << ","; + os << "dvlVX" << ","; + os << "dvlVY" << ","; + os << "dvlVZ" << ","; + os << "height" << ","; + os << "thrust" << ","; + os << "light" << ","; + os << "load" << ","; + os << "dvl" << ","; + os << "iridium" << ","; + os << "batteryVol" << ","; + os << "batteryLev" << ","; + os << "batteryTemp" << std::endl; +} + +void DataManagement::DoMissionHistoryBanner(std::ofstream &os) +{ + os << "stamp" << ","; + os << "state" << ","; + os << "taskName" << ","; + os << "destName" << ","; + os << "errorCode" << std::endl; +} + +void DataManagement::DoFaultHandleBanner(std::ofstream &os) +{ + os << "stamp" << ","; + os << "level" << ","; + os << "type" << ","; + os << "id" << ","; + os << "first" << ","; + os << "source" << std::endl; +} + +void DataManagement::DoMotionControlBanner(std::ofstream &os) +{ + os << "stamp" << ","; + os << "desired_heading" << ","; + os << "desired_speed" << ","; + os << "desired_depth" << std::endl; +} + +bool DataManagement::OpenFile(std::ofstream & of,const std::string & sName) +{ + of.open(sName.c_str()); + + if(!of.is_open()) + { + return false; + } + return true; +} + +void DataManagement::GenerateFileName(std::string &fileDir, std::string &fileName) +{ + time_t now = time(0); + tm *gmtm = localtime(&now); + int year = 1900 + gmtm->tm_year; + int monthTemp = gmtm->tm_mon+1; + std::string month; + if (monthTemp < 10) + { + month = "0" + std::to_string(monthTemp); + } + else + { + month = std::to_string(monthTemp); + } + int dayTemp = gmtm->tm_mday; + std::string day; + if (dayTemp < 10) + { + day = "0" + std::to_string(dayTemp); + } + else + { + day = std::to_string(dayTemp); + } + int hourTemp = gmtm->tm_hour; + std::string hour; + if (hourTemp < 10) + { + hour = "0" + std::to_string(hourTemp); + } + else + { + hour = std::to_string(hourTemp); + } + int minuteTemp = gmtm->tm_min; + std::string minute; + if (minuteTemp < 10) + { + minute = "0" + std::to_string(minuteTemp); + } + else + { + minute = std::to_string(minuteTemp); + } + int secondTemp = gmtm->tm_sec; + std::string second; + if (secondTemp < 10) + { + second = "0" + std::to_string(secondTemp); + } + else + { + second = std::to_string(secondTemp); + } + std::stringstream ss; + ss << year << "-" << month << "-" << day; + fileDir = ss.str(); + ss.str(""); + ss << hour << minute << second; + fileName = ss.str(); +} diff --git a/src/pDataManagement/DataManagement.h b/src/pDataManagement/DataManagement.h new file mode 100644 index 0000000..f2b57f3 --- /dev/null +++ b/src/pDataManagement/DataManagement.h @@ -0,0 +1,59 @@ +/************************************************************/ +/* NAME: Xiaobin Zeng */ +/* ORGN: MIT */ +/* FILE: DataManagement.h */ +/* DATE: */ +/************************************************************/ + +#ifndef DataManagement_HEADER +#define DataManagement_HEADER + +#include "MOOS/libMOOS/Thirdparty/AppCasting/AppCastingMOOSApp.h" +#include "MOOS/libMOOS/MOOSLib.h" + + +struct MotionControlInfo +{ + double desiredHeading; + double desiredSpeed; + double desiredDepth; +}; + +class DataManagement : public AppCastingMOOSApp +//class DataManagement : public CMOOSApp +{ +public: + DataManagement(); + ~DataManagement(); + +protected: // Standard MOOSApp functions to overload + bool OnNewMail(MOOSMSG_LIST &NewMail); + bool Iterate(); + bool OnConnectToServer(); + bool OnStartUp(); + bool DoAsyncLog(MOOSMSG_LIST & NewMail); + +protected: + enum MissionStatus{FAULT=0, UNRUN=1, MANUAL=2 ,RUN=3, CONFIG=5}; + void RegisterVariables(); + bool buildReport(); + bool OpenFile(std::ofstream & of,const std::string & sName); + void DoAuvDataLogBanner(std::ofstream &os); + void DoMissionHistoryBanner(std::ofstream &os); + void DoFaultHandleBanner(std::ofstream &os); + void DoMotionControlBanner(std::ofstream &os); + + void GenerateFileName(std::string &fileDir, std::string &fileName); + double getTimeStamp(); + int nDoublePrecision; + std::ofstream auvDataStream; + std::ofstream missionHistoryStream; + std::ofstream clientCommandStream; + std::ofstream faultLogStream; + std::ofstream motionControlStream; + std::map logVarList; + std::string contentFromStream; + struct MotionControlInfo motionControlInfo; +}; + +#endif diff --git a/src/pDataManagement/DataManagement_Info.cpp b/src/pDataManagement/DataManagement_Info.cpp new file mode 100644 index 0000000..e17d141 --- /dev/null +++ b/src/pDataManagement/DataManagement_Info.cpp @@ -0,0 +1,115 @@ +/****************************************************************/ +/* NAME: Xiaobin Zeng */ +/* ORGN: MIT Cambridge MA */ +/* FILE: DataManagement_Info.cpp */ +/* DATE: Dec 29th 1963 */ +/****************************************************************/ + +#include +#include +#include "DataManagement_Info.h" +#include "ColorParse.h" +#include "ReleaseInfo.h" + +using namespace std; + +//---------------------------------------------------------------- +// Procedure: showSynopsis + +void showSynopsis() +{ + blk("SYNOPSIS: "); + blk("------------------------------------ "); + blk(" The pDataManagement application is used for "); + blk(" "); + blk(" "); + blk(" "); + blk(" "); +} + +//---------------------------------------------------------------- +// Procedure: showHelpAndExit + +void showHelpAndExit() +{ + blk(" "); + blu("=============================================================== "); + blu("Usage: pDataManagement file.moos [OPTIONS] "); + blu("=============================================================== "); + blk(" "); + showSynopsis(); + blk(" "); + blk("Options: "); + mag(" --alias","= "); + blk(" Launch pDataManagement with the given process name "); + blk(" rather than pDataManagement. "); + mag(" --example, -e "); + blk(" Display example MOOS configuration block. "); + mag(" --help, -h "); + blk(" Display this help message. "); + mag(" --interface, -i "); + blk(" Display MOOS publications and subscriptions. "); + mag(" --version,-v "); + blk(" Display the release version of pDataManagement. "); + blk(" "); + blk("Note: If argv[2] does not otherwise match a known option, "); + blk(" then it will be interpreted as a run alias. This is "); + blk(" to support pAntler launching conventions. "); + blk(" "); + exit(0); +} + +//---------------------------------------------------------------- +// Procedure: showExampleConfigAndExit + +void showExampleConfigAndExit() +{ + blk(" "); + blu("=============================================================== "); + blu("pDataManagement Example MOOS Configuration "); + blu("=============================================================== "); + blk(" "); + blk("ProcessConfig = pDataManagement "); + blk("{ "); + blk(" AppTick = 4 "); + blk(" CommsTick = 4 "); + blk(" "); + blk("} "); + blk(" "); + exit(0); +} + + +//---------------------------------------------------------------- +// Procedure: showInterfaceAndExit + +void showInterfaceAndExit() +{ + blk(" "); + blu("=============================================================== "); + blu("pDataManagement INTERFACE "); + blu("=============================================================== "); + blk(" "); + showSynopsis(); + blk(" "); + blk("SUBSCRIPTIONS: "); + blk("------------------------------------ "); + blk(" NODE_MESSAGE = src_node=alpha,dest_node=bravo,var_name=FOO, "); + blk(" string_val=BAR "); + blk(" "); + blk("PUBLICATIONS: "); + blk("------------------------------------ "); + blk(" Publications are determined by the node message content. "); + blk(" "); + exit(0); +} + +//---------------------------------------------------------------- +// Procedure: showReleaseInfoAndExit + +void showReleaseInfoAndExit() +{ + showReleaseInfo("pDataManagement", "gpl"); + exit(0); +} + diff --git a/src/pDataManagement/DataManagement_Info.h b/src/pDataManagement/DataManagement_Info.h new file mode 100644 index 0000000..2a85845 --- /dev/null +++ b/src/pDataManagement/DataManagement_Info.h @@ -0,0 +1,18 @@ +/****************************************************************/ +/* NAME: Xiaobin Zeng */ +/* ORGN: MIT Cambridge MA */ +/* FILE: DataManagement_Info.h */ +/* DATE: Dec 29th 1963 */ +/****************************************************************/ + +#ifndef DataManagement_INFO_HEADER +#define DataManagement_INFO_HEADER + +void showSynopsis(); +void showHelpAndExit(); +void showExampleConfigAndExit(); +void showInterfaceAndExit(); +void showReleaseInfoAndExit(); + +#endif + diff --git a/src/pDataManagement/main.cpp b/src/pDataManagement/main.cpp new file mode 100644 index 0000000..280c603 --- /dev/null +++ b/src/pDataManagement/main.cpp @@ -0,0 +1,58 @@ +/************************************************************/ +/* NAME: Xiaobin Zeng */ +/* ORGN: MIT */ +/* FILE: main.cpp */ +/* DATE: */ +/************************************************************/ + +#include +#include "MBUtils.h" +#include "ColorParse.h" +#include "DataManagement.h" +#include "DataManagement_Info.h" + +// #include +// #include + +using namespace std; + +int main(int argc, char *argv[]) +{ + string mission_file; + string run_command = argv[0]; + + for(int i=1; i +#include"ACTable.h" + +bool _ListenCB(void * pParam) +{ + Emulator* pMe = (Emulator* )pParam; + return pMe->receiveUdpDate(); +} + +bool _ListenBSC(void* pParam) +{ + _150server* pMe = (_150server*)pParam; + return pMe->listenInfo(); +} + +bool _Connect(void* pParam) +{ + Emulator* pMe = (Emulator* )pParam; + return pMe->_150Connect(); +} + +bool Emulator::OnNewMail(MOOSMSG_LIST &NewMail) +{ + AppCastingMOOSApp::OnNewMail(NewMail); + MOOSMSG_LIST::iterator p; + for(p=NewMail.begin(); p!=NewMail.end(); p++) + { + CMOOSMsg &msg = *p; + string key = msg.m_sKey; + string sval = msg.m_sVal; + double dval = msg.m_dfVal; + double dfT; + msg.IsSkewed(m_curr_time, &dfT); + // if(key == "DESIRED_RUDDER") + // { + // sendBuf[0] = dval; + // remus100.rudder = dval; + // } + // else if(key == "DESIRED_ELEVATOR") + // { + // sendBuf[1] = dval; + // remus100.elevator = dval; + // } + // else if(key == "DESIRED_THRUST") + // { + // sendBuf[2] = dval; + // remus100.thrust = dval; + // } + // else + if(key == "DESIRED_DEPTH") + sendBuf[3] = dval; + else if(key == "DESIRED_HEADING") + sendBuf[4] = dval; + else if(key == "DESIRED_SPEED") + sendBuf[5] = dval; + // reportRunWarning("UnKown var:" + key); + } + + return true; +} +bool Emulator::Iterate() +{ + AppCastingMOOSApp::Iterate(); + if(_150ServerThread.IsThreadRunning()) + { // 这里需要转换数据 + if(p_150server_1._150cmd.helm_top_angle > 128) + sendBuf[0] = -(p_150server_1._150cmd.helm_top_angle - 128); + else + sendBuf[0] = p_150server_1._150cmd.helm_top_angle; + if(p_150server_1._150cmd.helm_right_angle > 128) + sendBuf[1] = -(p_150server_1._150cmd.helm_right_angle - 128); + else + sendBuf[1] = p_150server_1._150cmd.helm_right_angle; + sendBuf[2] = (uint8_t)p_150server_1._150cmd.thrust * 1525 / 100; + set150Info(); + p_150server_1.postInfo(); + isConnect = " 150 Server..."; + } + else + isConnect = "No 150 Connect..."; + udp->iSendMessageTo((void*)sendBuf, sendBufSize, matalb_port, matlab_host); + //postNodeRecordUpdate(prefix, record); + AppCastingMOOSApp::PostReport(); + return true; +} + +bool Emulator::OnConnectToServer() +{ + registerVariables(); + return true; +} + +bool Emulator::OnStartUp() +{ + AppCastingMOOSApp::OnStartUp(); +//TODO: 添加初始状态设置 + STRING_LIST sParams; + m_MissionReader.GetConfiguration(GetAppName(), sParams); + STRING_LIST::iterator p; + + for(p=sParams.begin(); p!=sParams.end(); p++) + { + bool unhandled = false; + string orig = *p; + string line = *p; + string param = toupper(biteStringX(line, '=')); + string value = line; + double dval = atof(value.c_str()); + cout << param << endl; + if(param == "MATLAB_HOST") + { + matlab_host = value; + } + else if(param == "MATLAB_PORT") + { + matalb_port = (long int)dval; + } + else if(param == "LOCAL_PORT") + { + local_port = (long int)dval; + } + else if(param == "PREFIX") + { + setNonWhiteVarOnString(prefix, value); + } + else if(param == "START_X") + { + start_x = dval; + } + else if(param == "START_Y") + { + start_y = dval; + } + else if(param == "START_Z") + { + start_z = dval; + } + else if(param == "START_HEADING") + { + start_heading = dval; + } + else + unhandled = true; + if(unhandled) + reportUnhandledConfigWarning(orig); + } + //添加UDP 设置 + //TODO:添加try + try + { + udp = new XPCUdpSocket(local_port); + udp->vSetBroadcast(true); + udp->vBindSocket(); + } + catch(const std::exception& e) + { + std::cerr << e.what() << '\n'; + reportRunWarning("Local port Open Field"); + } + //初始化数据 + receiveBufSize = receiveDateSize*sizeof(double); + receiveBuf = new char[receiveBufSize]; + sendBufSize = sendDataSize*sizeof(double); + sendBuf = new double[sendDataSize]; + for(int i=0; ip_150server_1)); + _150ServerThread.Start(); + _150ConnectThread.RequestQuit(); + isConnect = "Connected and start server"; +} +void Emulator::registerVariables() +{ + AppCastingMOOSApp::RegisterVariables(); + Register("DESIRED_RUDDER",0); + Register("DESIRED_THRUST",0); + Register("DESIRED_ELEVATOR",0); + Register("DESIRED_DEPTH"); + Register("DESIRED_HEADING"); + Register("DESIRED_SPEED"); +} +bool Emulator::buildReport() +{ + // for(int i=0; iiRecieveMessage(receiveBuf,receiveBufSize); + if(iRx) + { + for(int i=0; i +#include +#include "VarDataPair.h" +#include "MBUtils.h" +#include "AngleUtils.h" +#include +#include"MOOS/libMOOS/Comms/XPCUdpSocket.h" +#include "NodeRecord.h" +#include "MOOS/libMOOS/Utils/MOOSThread.h" +#include "_150server.hpp" + +using namespace std; +typedef struct uuv +{ + double u; + double v; + double w; + double p; + double q; + double r; + double x; + double y; + double z; + double roll; + double pitch; + double yaw; + double thrust; + double rudder; + double elevator; + double lon; + double lat; + double alt; +}; + +class Emulator : public AppCastingMOOSApp +{ + public: + Emulator(){}; + ~Emulator(){delete receiveBuf;delete sendBuf;}; + bool OnNewMail(MOOSMSG_LIST &NewMail); + bool Iterate(); + bool OnConnectToServer(); + bool OnStartUp(); + void registerVariables(); + bool buildReport(); + void postNodeRecordUpdate(std::string, const NodeRecord&); + bool receiveUdpDate(); + void set150Info(); + bool _150Connect(); + + private: + long int local_port = 8080; + long int matalb_port = 8085; + string matlab_host = "127.0.0.1"; + XPCUdpSocket* udp; + unsigned int receiveDateSize = 15; + unsigned int sendDataSize = 6; + unsigned int receiveBufSize; + unsigned int sendBufSize; + char *receiveBuf; + double *sendBuf; + NodeRecord record; + string prefix="NAV"; + bool geoOk = false; + + + //UUV init state + double start_x = 0; + double start_y = 0; + double start_z = 0; + double start_heading = 0; + uuv remus100; + string isConnect = ""; + // + CMOOSThread receiveThread; + CMOOSThread _150ServerThread; + CMOOSThread _150ConnectThread; + //150 Server + _150server p_150server_1; +}; + +#endif \ No newline at end of file diff --git a/src/pEmulator/_150server.cpp b/src/pEmulator/_150server.cpp new file mode 100644 index 0000000..ec89abf --- /dev/null +++ b/src/pEmulator/_150server.cpp @@ -0,0 +1,206 @@ +/* + * @Author: zjk 1553836110@qq.com + * @Date: 2023-11-07 14:59:47 + * @LastEditors: zjk 1553836110@qq.com + * @LastEditTime: 2023-11-08 09:19:46 + * @FilePath: /moos-ivp-pi/src/pEmulator/_150server.cpp + * @Description: + * + * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved. + */ +#include "_150server.hpp" + +uint16_t _150server::serializeFields(AUVEmbedded &embeddedInfo, uint8_t* bfr) +{ + memcpy(bfr, &(embeddedInfo.header), sizeof(embeddedInfo.header)); + bfr += sizeof(embeddedInfo.header); + + memcpy(bfr, &(embeddedInfo.count), sizeof(embeddedInfo.count)); + bfr += sizeof(embeddedInfo.count); + + memcpy(bfr, &(embeddedInfo.size), sizeof(embeddedInfo.size)); + bfr += sizeof(embeddedInfo.size); + + memcpy(bfr, &(embeddedInfo.drive_mode), sizeof(embeddedInfo.drive_mode)); + bfr += sizeof(embeddedInfo.drive_mode); + + memcpy(bfr, &(embeddedInfo.height), sizeof(embeddedInfo.height)); + bfr += sizeof(embeddedInfo.height); + + memcpy(bfr, &(embeddedInfo.depth), sizeof(embeddedInfo.depth)); + bfr += sizeof(embeddedInfo.depth); + + memcpy(bfr, &(embeddedInfo.yaw), sizeof(embeddedInfo.yaw)); + bfr += sizeof(embeddedInfo.yaw); + + memcpy(bfr, &(embeddedInfo.pitch), sizeof(embeddedInfo.pitch)); + bfr += sizeof(embeddedInfo.pitch); + + memcpy(bfr, &(embeddedInfo.roll), sizeof(embeddedInfo.roll)); + bfr += sizeof(embeddedInfo.roll); + + memcpy(bfr, &(embeddedInfo.ins_vx), sizeof(embeddedInfo.ins_vx)); + bfr += sizeof(embeddedInfo.ins_vx); + + memcpy(bfr, &(embeddedInfo.ins_vy), sizeof(embeddedInfo.ins_vy)); + bfr += sizeof(embeddedInfo.ins_vy); + + memcpy(bfr, &(embeddedInfo.ins_vz), sizeof(embeddedInfo.ins_vz)); + bfr += sizeof(embeddedInfo.ins_vz); + + memcpy(bfr, &(embeddedInfo.lon), sizeof(embeddedInfo.lon)); + bfr += sizeof(embeddedInfo.lon); + + memcpy(bfr, &(embeddedInfo.lat), sizeof(embeddedInfo.lat)); + bfr += sizeof(embeddedInfo.lat); + + memcpy(bfr, &(embeddedInfo.alt), sizeof(embeddedInfo.alt)); + bfr += sizeof(embeddedInfo.alt); + + memcpy(bfr, &(embeddedInfo.dvl_vx), sizeof(embeddedInfo.dvl_vx)); + bfr += sizeof(embeddedInfo.dvl_vx); + + memcpy(bfr, &(embeddedInfo.dvl_vy), sizeof(embeddedInfo.dvl_vy)); + bfr += sizeof(embeddedInfo.dvl_vy); + + memcpy(bfr, &(embeddedInfo.dvl_vz), sizeof(embeddedInfo.dvl_vz)); + bfr += sizeof(embeddedInfo.dvl_vz); + + memcpy(bfr, &(embeddedInfo.rpm), sizeof(embeddedInfo.rpm)); + bfr += sizeof(embeddedInfo.rpm); + + memcpy(bfr, &(embeddedInfo.lightEnable), sizeof(embeddedInfo.lightEnable)); + bfr += sizeof(embeddedInfo.lightEnable); + + memcpy(bfr, &(embeddedInfo.battery_voltage), sizeof(embeddedInfo.battery_voltage)); + bfr += sizeof(embeddedInfo.battery_voltage); + + memcpy(bfr, &(embeddedInfo.battery_level), sizeof(embeddedInfo.battery_level)); + bfr += sizeof(embeddedInfo.battery_level); + + memcpy(bfr, &(embeddedInfo.battery_temp), sizeof(embeddedInfo.battery_temp)); + bfr += sizeof(embeddedInfo.battery_temp); + + memcpy(bfr, &(embeddedInfo.fault_leakSensor), sizeof(embeddedInfo.fault_leakSensor)); + bfr += sizeof(embeddedInfo.fault_leakSensor); + + memcpy(bfr, &(embeddedInfo.fault_battery), sizeof(embeddedInfo.fault_battery)); + bfr += sizeof(embeddedInfo.fault_battery); + + memcpy(bfr, &(embeddedInfo.fault_emergencyBattery), sizeof(embeddedInfo.fault_emergencyBattery)); + bfr += sizeof(embeddedInfo.fault_emergencyBattery); + + memcpy(bfr, &(embeddedInfo.fault_thrust), sizeof(embeddedInfo.fault_thrust)); + bfr += sizeof(embeddedInfo.fault_thrust); + + memcpy(bfr, &(embeddedInfo.iridium), sizeof(embeddedInfo.iridium)); + bfr += sizeof(embeddedInfo.iridium); + + memcpy(bfr, &(embeddedInfo.throwing_load), sizeof(embeddedInfo.throwing_load)); + bfr += sizeof(embeddedInfo.throwing_load); + + memcpy(bfr, &(embeddedInfo.dvl_status), sizeof(embeddedInfo.dvl_status)); + bfr += sizeof(embeddedInfo.dvl_status); + + memcpy(bfr, &(embeddedInfo.crc), sizeof(embeddedInfo.crc)); + bfr += sizeof(embeddedInfo.crc); + + memcpy(bfr, &(embeddedInfo.footer), sizeof(embeddedInfo.footer)); + bfr += sizeof(embeddedInfo.footer); +} +void _150server::postInfo() +{ + bzero(embeddedBuffer, 0); + serializeFields(embeddedInfoSrc, embeddedBuffer); + write(cfd, embeddedBuffer, 59); +}; +bool _150server::listenInfo() +{ + while (1) + { + int lens = read(cfd, recvbuf, sizeof(recvbuf)); + if(lens>0) + { + _150_recive++; + uint16_t* buf16; + printf("header: %u, %u\n", recvbuf[0], recvbuf[1]); + printf("count: %u\n", recvbuf[2], recvbuf[3]); + printf("size: %u\n", recvbuf[4]); + printf("drive_mode: %u\n", recvbuf[5]); + printf("thrust: %u\n", recvbuf[6]); + _150cmd.thrust = (double)recvbuf[6]; + printf("yaw: %u, %u\n", recvbuf[7], recvbuf[8]); + memcpy(buf16, &recvbuf[7], 2*sizeof(recvbuf[7])); + _150cmd.yaw = *((double*)buf16); + printf("depth: %u, %u\n", recvbuf[9], recvbuf[10]); + memcpy(buf16, &recvbuf[9], 2*sizeof(recvbuf[9])); + _150cmd.depth = *((double*)buf16); + printf("helm_top_angle: %u\n", recvbuf[11]); + _150cmd.helm_top_angle = (double)recvbuf[11]; + printf("helm_bottom_angle: %u\n", recvbuf[12]); + _150cmd.helm_bottom_angle = (double)recvbuf[12]; + _150cmd.helm_left_angle = (double)recvbuf[13]; + printf("helm_left_angle: %u\n", recvbuf[13]); + _150cmd.helm_right_angle = (double)recvbuf[14]; + printf("helm_right_angle: %u\n", recvbuf[14]); + _150cmd.light_enable = (double)recvbuf[15]; + printf("light_enable: %u\n", recvbuf[15]); + printf("dvl_enable: %u\n", recvbuf[16]); + _150cmd.dvl_enable = (double)recvbuf[16]; + printf("throwing_load_enable: %u\n", recvbuf[17]); + _150cmd.throwing_load_enable = (double)recvbuf[16]; + printf("crc: %u\n", recvbuf[18]); + _150cmd.crc = (double)recvbuf[18]; + printf("footer: %u, %u\n", recvbuf[19], recvbuf[20]); + memcpy(buf16, &recvbuf[19], 2*sizeof(recvbuf[19])); + _150cmd.footer = *((double*)buf16); + } + } + return true; +} +void _150server::_150_startServer() +{ + std::cout << "--------------------" << std::endl; + lfd = socket(AF_INET, SOCK_STREAM, 0); + if(lfd==-1) + { + perror("socket"); + exit(-1); + } + //2.绑定 + struct sockaddr_in saddr; + saddr.sin_family = PF_INET; + saddr.sin_addr.s_addr = INADDR_ANY; //0.0.0.0 + saddr.sin_port = htons(8001); + int ret = bind(lfd, (struct sockaddr *)&saddr, sizeof(saddr)); + + if(ret == -1) + { + perror("bind"); + exit(-1); + } + + //3.监听 + listen(lfd, 5); + if(ret==-1) + { + perror("listen"); + exit(-1); + } + //4.接受客户端连接 + struct sockaddr_in caddr; + socklen_t len = sizeof(caddr); + cfd = accept(lfd, (struct sockaddr *)&caddr, &len); + + if(cfd==-1) + { + perror("accept"); + exit(-1); + } + std::cout << "--------------------" << std::endl; + //输出客户端的信息 + char cip[16]; + inet_ntop(AF_INET, &caddr.sin_addr.s_addr, cip, sizeof(cip)); + unsigned short cport = ntohs(caddr.sin_port); + printf("client ip is %s,port is %d\n", cip, cport); +} \ No newline at end of file diff --git a/src/pEmulator/_150server.hpp b/src/pEmulator/_150server.hpp new file mode 100644 index 0000000..f7049c5 --- /dev/null +++ b/src/pEmulator/_150server.hpp @@ -0,0 +1,96 @@ +/* + * @Author: zjk 1553836110@qq.com + * @Date: 2023-11-07 14:59:36 + * @LastEditors: zjk 1553836110@qq.com + * @LastEditTime: 2023-11-07 17:12:30 + * @FilePath: /moos-ivp-pi/src/pEmulator/_150server.hpp + * @Description: + * + * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved. + */ +#ifndef __150SERVER_H +#define __150SERVER_H +#include +#include +#include +#include +#include +#include +#include + +struct AUVEmbedded +{ + uint16_t header; //1:[0,1] hx + uint16_t count; //2:[2,3] hu + uint8_t size; //3:[4] u + uint8_t drive_mode; //4:[5] u + uint16_t height; //5:[6,7] hu + uint16_t depth; //6:[8,9] hu + uint16_t yaw; //7:[10,11] hu + int16_t pitch; //8:[12,13] hd + int16_t roll; //9:[14,15] hd + int16_t ins_vx; //10:[16,17] hd + int16_t ins_vy; //11:[18,19] hd + int16_t ins_vz; //12:[20,21] hd + int32_t lon; //13:[22,23,24,25] d + int32_t lat; //14:[26,27,28,29] d + int16_t alt; //15:[30,31] hd + int16_t dvl_vx; //16:[32,33] hd + int16_t dvl_vy; //17:[34,35] hd + int16_t dvl_vz; //18:[36,37] hd + int16_t rpm; //19:[38,39] hd + uint8_t lightEnable; //20:[40] u + uint16_t battery_voltage; //21:[41,42] hu + uint8_t battery_level; //22:[43] u + uint16_t battery_temp; //23:[44,45] hu + uint32_t fault_leakSensor; //24:[46,47,48,49] u + uint8_t fault_battery; //25:[50] u + uint8_t fault_emergencyBattery; //26:[51] u + uint8_t fault_thrust; //27:[52] u + uint8_t iridium; //28:[53] u + uint8_t throwing_load; //29:[54] u + uint8_t dvl_status; //30:[55] u + uint8_t crc; //31:[56] u + uint16_t footer; //32:[57,58] hu +}; +struct AUVCmd +{ + uint16_t header = 0xEBA2; + uint16_t count; + uint8_t size; + uint8_t mode = 0XFF; + uint8_t thrust; + uint16_t yaw; + uint16_t depth; + uint8_t helm_top_angle; + uint8_t helm_bottom_angle; + uint8_t helm_left_angle; + uint8_t helm_right_angle; + uint8_t light_enable; + uint8_t dvl_enable = 0XFF; + uint8_t throwing_load_enable = 0XFF; + uint8_t crc; + uint16_t footer = 0XEE2A; +}; + +class _150server +{ +private: + /* data */ + int lfd; + int cfd; +public: + _150server(/* args */){}; + ~_150server(){}; + + uint16_t serializeFields(AUVEmbedded &embeddedInfo, uint8_t* bfr); + bool listenInfo(); + void postInfo(); + void _150_startServer(); + AUVEmbedded embeddedInfoSrc; + AUVCmd _150cmd; + unsigned char embeddedBuffer[59]; + unsigned char recvbuf[65535] = {0}; + unsigned int _150_recive = 0; +}; +#endif \ No newline at end of file diff --git a/src/pEmulator/a.moos b/src/pEmulator/a.moos new file mode 100644 index 0000000..b5cb516 --- /dev/null +++ b/src/pEmulator/a.moos @@ -0,0 +1,249 @@ +//------------------------------------------------- +// NAME: M. Benjamin, MIT CSAIL +// FILE: alpha.moos +//------------------------------------------------- + +ServerHost = localhost +ServerPort = 9000 +Community = alpha +MOOSTimeWarp = 1 + +// Forest Lake +LatOrigin = 43.825300 +LongOrigin = -70.330400 + +// MIT Sailing Pavilion (use this one) +// LatOrigin = 42.358456 +// LongOrigin = -71.087589 + +//------------------------------------------ +// Antler configuration block +ProcessConfig = ANTLER +{ + MSBetweenLaunches = 200 + + Run = MOOSDB @ NewConsole = false + Run = pMarineViewer @ NewConsole = false + Run = uProcessWatch @ NewConsole = false + Run = pNodeReporter @ NewConsole = false + Run = pEmulator @ NewConsole = true + //Run = pLogger @ NewConsole = false + Run = pMotionControler @ NewConsole = false + Run = pTaskManger @ NewConsole = false + Run = pHelmIvP @ NewConsole = false +} +ProcessConfig = pTaskManger +{ + AppTick = 8 + CommsTick = 8 + + planConfigPath = /home/zjk/Desktop/project/moos-ivp-extend/PlanConfigure.json +} +ProcessConfig = pEmulator +{ + AppTick = 5 + CommsTick = 5 + matlab_host = 192.168.0.11 + matlab_port = 8085 + local_port = 8080 + prefix = NAV + + start_x = 10 + start_y = 9 + start_z = 1 + start_heading = 30 +} + +ProcessConfig = pLogger +{ + AppTick = 8 + CommsTick = 8 + + AsyncLog = true + + // For variables that are published in a bundle on their first post, + // explicitly declare their logging request + //Log = IVPHELM_LIFE_EVENT @ 0 NOSYNC + //Log = REPORT @ 0 NOSYNC + //Log = BHV_SETTINGS @ 0 NOSYNC + Log = OPREGION_RESET @ 0 NOSYNC + + LogAuxSrc = true + WildCardLogging = true + WildCardOmitPattern = *_STATUS + WildCardOmitPattern = DB_VARSUMMARY + WildCardOmitPattern = DB_RWSUMMARY + WildCardExclusionLog = true +} + +//------------------------------------------ +// uProcessWatch config block + +ProcessConfig = uProcessWatch +{ + AppTick = 4 + CommsTick = 4 + + watch_all = true + nowatch = uPokeDB* + nowatch = uQueryDB* + nowatch = uXMS* + nowatch = uMAC* +} + +//------------------------------------------ +// uSimMarineV22 config block +//------------------------------------------ +// pHelmIvP config block + +ProcessConfig = pHelmIvP +{ + AppTick = 4 + CommsTick = 4 + + behaviors = alpha.bhv + domain = course:0:359:360 + domain = speed:0:10:101 + domain = depth:0:100:101 + + park_on_allstop = false + //park_on_allstop = true + + +} + +//------------------------------------------ +// pMarinePID config block + +ProcessConfig = pMotionControler +{ + AppTick = 10 + CommsTick = 10 + + verbose = true + depth_control = true + + // SIM_INSTABILITY = 20 + + // Yaw PID controller + yaw_pid_kp = 10 + yaw_pid_kd = 0.0 + yaw_pid_ki = 0.01 + yaw_pid_integral_limit = 10 + + // Speed PID controller + speed_pid_kp = 20.0 + speed_pid_kd = 0.0 + speed_pid_ki = 1 + speed_pid_integral_limit = 100 + + maxpitch = 15 + maxelevator = 30 + + pitch_pid_kp = 1.5 + pitch_pid_kd = 0 + pitch_pid_ki = 1.0 + pitch_pid_integral_limit = 0 + + z_to_pitch_pid_kp = 0.12 + z_to_pitch_pid_kd = 0 + z_to_pitch_pid_ki = 0.004 + z_to_pitch_pid_integral_limit = 0.05 + + + //MAXIMUMS MAXRUDDER + maxrudder = 30 + maxthrust = 1525 + + // A non-zero SPEED_FACTOR overrides use of SPEED_PID + // Will set DESIRED_THRUST = DESIRED_SPEED * SPEED_FACTOR + speed_factor = 0 +} + +//------------------------------------------ +// pMarineViewer config block + +ProcessConfig = pMarineViewer +{ + AppTick = 4 + CommsTick = 4 + + tiff_file = forrest19.tif + //tiff_file = MIT_SP.tif + vehicles_name_mode = names+depth //+shortmode + + + set_pan_x = -90 + set_pan_y = -280 + zoom = 0.65 + vehicle_shape_scale = 1.5 + hash_delta = 50 + hash_shade = 0.22 + hash_viewable = true + + trails_point_size = 1 + + //op_vertex = x=-83, y=-47, lwidth=1,lcolor=yellow,looped=true,group=moa + //op_vertex = x=-46.4, y=-129.2, lwidth=1,lcolor=yellow,looped=true,group=moa + //op_vertex = x=94.6, y=-62.2, lwidth=1,lcolor=yellow,looped=true,group=moa + //op_vertex = x=58, y=20, lwidth=1,lcolor=yellow,looped=true,group=moa + + // Appcast configuration + appcast_height = 75 + appcast_width = 30 + appcast_viewable = true + appcast_color_scheme = indigo + nodes_font_size = xlarge + procs_font_size = xlarge + appcast_font_size = large + + // datum_viewable = true + // datum_size = 18 + // gui_size = small + + // left_context[survey-point] = DEPLOY=true + // left_context[survey-point] = MOOS_MANUAL_OVERRIDE=false + // left_context[survey-point] = RETURN=false + + right_context[return] = DEPLOY=true + right_context[return] = MOOS_MANUAL_OVERRIDE=false + right_context[return] = RETURN=false + + scope = RETURN + scope = WPT_STAT + scope = VIEW_SEGLIST + scope = VIEW_POINT + scope = VIEW_POLYGON + scope = MVIEWER_LCLICK + scope = MVIEWER_RCLICK + + //button_one = START # START=true + //button_one = MOOS_MANUAL_OVERRIDE=false + button_one = START # uMission_action_cmd={"taskName":"east_waypt_survey","action":"start"} + + button_two = STOP # uMission_action_cmd={"taskName":"east_waypt_survey","action":"stop"} + //button_two = MOOS_MANUAL_OVERRIDE=true + button_three = FaultClear # ClearFalut = true + button_four = SendSecurityZone # SendSaftRules = true + + + action = MENU_KEY=deploy # DEPLOY = true # RETURN = false + action+ = MENU_KEY=deploy # MOOS_MANUAL_OVERRIDE=false + action = RETURN=true + action = UPDATES_RETURN=speed=1.4 +} + +//------------------------------------------ +// pNodeReporter config block + +ProcessConfig = pNodeReporter +{ + AppTick = 2 + CommsTick = 2 + + //platform_type = kayak + //更改显示形状为uuv + platform_type = UUV + platform_color = red + platform_length = 4 +} diff --git a/src/pEmulator/alpha.bhv b/src/pEmulator/alpha.bhv new file mode 100644 index 0000000..7a727f1 --- /dev/null +++ b/src/pEmulator/alpha.bhv @@ -0,0 +1,181 @@ +//-------- FILE: alpha.bhv ------------- +initialize RUN = false +initialize TaskNum=t1 +initialize SendTask=false +//--------------模式判断------------------------ +set MODE = ACTIVE{ + RUN=true +} INACTIVE + +set MODE = T1{ + MODE=ACTIVE + TaskNum = t1 +} + + +//----------路径点任务---------------------------- +Behavior = BHV_Waypoint +{ + name = waypt_survey + pwt = 100 //优先权重 + condition = MODE==T1 + + //endflag = START=false + endflag = END_WayPoint=true + + configflag = CRUISE_SPD = $[SPEED] + //configflag = OSPOS = $[OSX],$[OSY] + + activeflag = INFO=$[OWNSHIP] + activeflag = INFO=$[BHVNAME] + activeflag = INFO=$[BHVTYPE] + + //cycleflag = CINFO=$[OSX],$[OSY] + + wptflag = CurrentPointComplete=true + wptflag = PREV=$(PX),$(PY) + wptflag = NEXT=$(NX),$(NY) + wptflag = TEST=$(X),$(Y) + wptflag = OSPOS=$(OSX),$(OSY) + //wptflag_on_start = true + + + updates = WPT_UPDATE + //perpetual = true + + templating = spawn + + // speed_alt = 1.2 + //use_alt_speed = true + lead = 8 + lead_damper = 1 + lead_to_start = false + speed = 1 // meters per second + capture_line = true + capture_radius = 5.0 + slip_radius = 15.0 + efficiency_measure = all + + polygon = 60,-40 + order = normal + //repeat = 3 + + visual_hints = nextpt_color=yellow + visual_hints = nextpt_vertex_size=8 + visual_hints = nextpt_lcolor=gray70 + visual_hints = vertex_color=dodger_blue, edge_color=white + visual_hints = vertex_size=5, edge_size=1 +} + + +//--------------定深任务------------------ +Behavior=BHV_ConstantDepth +{ + name = const_depth + pwt = 100 + //condition = DEPLOY = true + condition = MODE==T1 + duration = no-time-limit + updates = DEPTH_UPDATE + depth = 0 +} + +//--------------定向任务-------------------- + +Behavior=BHV_ConstantHeading +{ + name = const_heading + pwt = 100 + //condition = START_TURN = true + //condition = DEPLOY = true + condition = MODE==T3 + perpetual = true + + activeflag = TURN = started + + //endflag = TURN = done + //endflag = RETURN = true + //endflag = START_TURN = false + endflag = START=false + + heading = 225 + complete_thresh = 5 + duration = no-time-limit + } + +//--------------定速任务-------------------- +Behavior=BHV_ConstantSpeed +{ + name = const_speed + pwt = 1000 + condition = MODE==T1 + perpetual = true + updates = SPEED_UPDATE + //endflag = START=false + + speed = 5 + + duration = no-time-limit + //peakwidth = 0.5 + //basewidth = 0.5 + +} +//----------------安全模式----------------------- +//----------------计时器--------------------- +Behavior = BHV_Timer +{ + name = mtime + condition = MODE==T1 + pwt = 100 + templating = spawn + //duration_status = MSTATUS + //duration = 10 + endflag = TIME_OUT=true + + updates = TIMER_UPDATES + + //perpetual = true +} +//-------------最大深度限制-------------------------- +Behavior = BHV_MaxDepth +{ + name = maxdepth + pwt = 200 + condition = MODE==ACTIVE + updates = MAXDEEP_UPDATES + max_depth = 20 + tolerance = 0 + duration = no-time-limit +} +//--------------安全区域设置----------------------- + + Behavior = BHV_OpRegion + { + // General Behavior Parameters + // --------------------------- + name = op_region // example + pwt = 300 // default + condition = MODE==TN + updates = OPREGION_UPDATES // example + + // Parameters specific to this behavior + // ------------------------------------ + max_time = 20 // default (seconds) + max_depth = 25 // default (meters) + min_altitude = 0 // default (meters) + reset_var = OPREGION_RESET // example + trigger_entry_time = 1 // default (seconds) + trigger_exit_time = 0.5 // default (seconds) + + polygon = pts={-80,-00:-30,-175:150,-100:95,25} + + breached_altitude_flag = TaskFault = AltitudeOut + breached_depth_flag = TaskFault = DepthOut + breached_poly_flag = TaskFault = RegionOut + breached_time_flag = TaskFault = TimeOut + + visual_hints = vertex_color = brown // default + visual_hints = vertex_size = 3 // default + visual_hints = edge_color = aqua // default + visual_hints = edge_size = 1 // default + } \ No newline at end of file diff --git a/src/pEmulator/main.cpp b/src/pEmulator/main.cpp new file mode 100644 index 0000000..19f964e --- /dev/null +++ b/src/pEmulator/main.cpp @@ -0,0 +1,63 @@ +/* + * @Author: zjk 1553836110@qq.com + * @Date: 2023-10-12 09:52:06 + * @LastEditors: zjk 1553836110@qq.com + * @LastEditTime: 2023-10-20 16:52:52 + * @FilePath: /moos-ivp-extend/src/pEmulator/main.cpp + * @Description: + * + * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved. + */ +#include +using namespace std; +#include"MOOS/libMOOS/Thirdparty/AppCasting/AppCastingMOOSApp.h" +// #include "VarDataPair.h" +#include"Emulator.hpp" +#include +#include +#include "MBUtils.h" +#include "ColorParse.h" +// #include "MBUtils.h" +// #include "ColorParse.h" + +int main(int argc, char *argv[]) +{ + string mission_file; + string run_command = argv[0]; + + for(int i=1; i +#include "MBUtils.h" +#include "FaultHandle.h" +#include "ACTable.h" +#include +#include +#include + +using namespace std; + +//--------------------------------------------------------- +// Constructor + +FaultHandle::FaultHandle() +{ + m_watch_all_db = true; + m_watch_all_antler = true; + m_min_wait = -1; + m_noted_gone_wait = 10; + m_allow_retractions = -1; + m_proc_watch_summary_changed = false; + m_last_posting_time = 0; + m_Mission_fault_fb = 0; //任务管理故障状态 + m_Motion_fault_fb = 0; //运动控制故障状态 + + m_resetMsg_fb = false; + + m_faultBattery = 0; + m_faultEmergencyBattery = 0; + m_faultLeakSensor =0; + m_faultThrust = 0; + m_batteryLevel = 80; + m_CPU_temperature = 30.0; //CPU温度初始化 + + + //初始化故障上报列表 + // uFH_ErrorMsg_fb["Time"] = "null"; + // uFH_ErrorMsg_fb["Fault"] = "trouble-free"; + // uFH_ErrorMsg_fb["FaultID"] = 0; + // uFH_ErrorMsg_fb["FaultLevel"] = 0; + // uFH_ErrorMsg_fb["Source"] = "null"; + + errorMsgInit(); + + +} + +//--------------------------------------------------------- +// Destructor + +FaultHandle::~FaultHandle() +{ +} + +//--------------------------------------------------------- +// Procedure: OnNewMail + +bool FaultHandle::OnNewMail(MOOSMSG_LIST &NewMail) +{ + AppCastingMOOSApp::OnNewMail(NewMail); + MOOSMSG_LIST::iterator p; + + for(p=NewMail.begin(); p!=NewMail.end(); p++) { + CMOOSMsg &msg = *p; + + //------------------------------- + string key = msg.GetKey(); + if(key == "DB_CLIENTS") { + m_db_clients = msg.GetString(); + handleMailNewDBClients(); + } + else if(strEnds(key, "_STATUS")) + { + handleMailStatusUpdate(msg.GetString()); + } + + else if(key == "EXITED_NORMALLY") + { + m_excused_list.push_back(msg.GetString()); + } + else if (key == "uMission_fault_fb") + { + m_Mission_fault_fb = (int)msg.GetDouble(); + } + else if(key == "uMotion_fault_fb") + { + m_Motion_fault_fb = (int)msg.GetDouble(); + } + else if(key == "uDevice_monitor_fb") + { + std::string DeviceStatusString = msg.GetString(); + std::string errors; + + std::istringstream iss(DeviceStatusString); + Json::CharReaderBuilder builder; + + bool parsingSuccessful = Json::parseFromStream(builder, iss, &Device_monitor, &errors); + if (parsingSuccessful) + { + m_batteryLevel = Device_monitor["batteryLevel"].asUInt(); + m_faultBattery = Device_monitor["faultBattery"].asUInt(); + m_faultEmergencyBattery = Device_monitor["faultEmergencyBattery"].asUInt(); + m_faultLeakSensor = Device_monitor["faultLeakSensor"].asUInt(); + m_faultThrust = Device_monitor["faultThrust"].asUInt(); + // 解析成功,可以通过Device_monitor变量访问Json数据了 + } + else + { + std::cerr << "Failed to parse the JSON: " << errors << std::endl; + } + } + else + reportRunWarning("Unhandled Mail: " + key); + } + + return(true); +} + +//--------------------------------------------------------- +// Procedure: OnConnectToServer + +bool FaultHandle::OnConnectToServer() +{ + RegisterVariables(); + return(true); +} + +//--------------------------------------------------------- +// Procedure: Iterate() +// happens AppTick times per second + +bool FaultHandle::Iterate() +{ + AppCastingMOOSApp::Iterate(); + //---------------------------------------- + // bool post_based_on_time = false; + // if(m_min_wait >= 0) { + // double moos_elapsed_time = m_curr_time - m_last_posting_time; + // double real_elapsed_time = moos_elapsed_time; + // if(m_time_warp > 0) + // real_elapsed_time = moos_elapsed_time / m_time_warp; + // if(real_elapsed_time > m_min_wait) + // post_based_on_time = true; + // } + + // if(m_proc_watch_summary_changed || post_based_on_time) { + // //AppCastingMOOSApp::Notify(postVar("PROC_WATCH_SUMMARY"), m_proc_watch_summary); + // m_last_posting_time = m_curr_time; + // // if(m_proc_watch_summary == "All Present") + // // Notify("PROC_WATCH_ALL_OK", "true"); + // // else + // // Notify("PROC_WATCH_ALL_OK", "false"); + // } + + + if(m_proc_watch_summary_changed) { + checkForIndividualUpdates(); + //postFullSummary(); + //m_map_alive_prev = m_map_alive; + } + + m_proc_watch_summary_changed = false; + + CPUTempMonitor();//监控CPU温度并实时反馈 + //---------------------------------------- + AppCastingMOOSApp::PostReport(); + + return(true); +} + +//--------------------------------------------------------- +// Procedure: OnStartUp() +// happens before connection is open + +bool FaultHandle::OnStartUp() +{ + AppCastingMOOSApp::OnStartUp(); + + STRING_LIST sParams; + m_MissionReader.EnableVerbatimQuoting(false); + if(!m_MissionReader.GetConfiguration(GetAppName(), sParams)) + reportConfigWarning("No config block found for " + GetAppName()); + + STRING_LIST::iterator p; + for(p = sParams.begin(); p!=sParams.end(); p++) { + string orig = *p; + string line = *p; + string param = tolower(biteStringX(line, '=')); + string value = line; + + if(param == "watch") + handleConfigWatchList(value); + else if(param == "nowatch") + handleConfigExcludeList(value); + else if(param == "watch_all") { + string lvalue = tolower(value); + if(lvalue == "true") { + m_watch_all_antler = true; + m_watch_all_db = true; + } + else if(lvalue == "false") { + m_watch_all_antler = false; + m_watch_all_db = false; + } + else if(lvalue == "antler") { + m_watch_all_antler = true; + m_watch_all_db = false; + } + else if((lvalue == "dbclients") || (lvalue == "db_clients")) { + m_watch_all_antler = false; + m_watch_all_db = true; + } + else + reportConfigWarning("Invalide WATCH_ALL value:" + value); + } + else if(param == "summary_wait") { + if(isNumber(value)) + m_min_wait = atof(value.c_str()); + else + reportConfigWarning("SUMMARY_WAIT must be numerical value"); + } + else if(param == "allow_retractions") { + if(tolower(value) == "true") + m_allow_retractions = -1; + else if(tolower(value) == "false") + m_allow_retractions = 0; + else if(isNumber(value)) + m_allow_retractions = atof(value.c_str()); + else + reportConfigWarning("Param ALLOW_RETRACTIONS must be Boolean or numerial"); + } + else if(param == "post_mapping") + handlePostMapping(value); + else + reportUnhandledConfigWarning(orig); + } + + if(m_watch_all_antler == true) + populateAntlerList(); + + RegisterVariables(); + return(true); +} + +//buildReport测试信息发送 +//--------------------------------------------------------- +bool FaultHandle::buildReport() +{ + map::iterator p; + for(p=m_map_alive.begin(); p!=m_map_alive.end(); p++) { + string proc_name = p->first; + bool proc_here = p->second; + + if(proc_here) + { + //actab.addCell("OK", "reversegreen");//在FaultHandle可视化界面中显示 + //Notify("FaultHandle_Status" + proc_name, "OK"); + MoosAppStatus[proc_name]["Status"] = "OK"; + } + else { + if(vectorContains(m_excused_list, proc_name)) + { + //If the APP exits with MOOSDB's permission, the status changes to "EXCUSED" + //actab.addCell("EXCUSED", "reverseblue"); + MoosAppStatus[proc_name ]["Status"] = "EXCUSED"; + + } + else + { + //actab.addCell("MISSING", "reversered"); + MoosAppStatus[proc_name ]["Status"] = "MISSING"; + } + } + + //actab << doubleToString(m_map_now_cpuload[proc_name], 2); + MoosAppStatus[proc_name]["CpuLoad"] = doubleToString(m_map_now_cpuload[proc_name], 2); + //actab << doubleToString(m_map_max_cpuload[proc_name], 2); + } + //m_msgs << "TestFlag:" << testflag++ << endl; + + DeviceLeakageMonitor(); + MotionControlMonitor(); + MoosAppStatusMonitor(); + MoosAppOverloadMonitor(); + MissionFaultMonitor(); + BatteryStatusMonitor(); + EmergencyBatteryMonitor(); + ThrustStatusMonitor(); + + uFH_errorMsg1_fb["CurrentTime"] = convertSecondsToString(m_curr_time); + uFH_errorMsg2_fb["CurrentTime"] = convertSecondsToString(m_curr_time); + uFH_errorMsg3_fb["CurrentTime"] = convertSecondsToString(m_curr_time); + + //std::string uFH_ErrorMsg_fb_str = uFH_ErrorMsg_fb.toStyledString(); + std::string uFH_errorMsg1_fb_str = uFH_errorMsg1_fb.toStyledString(); + std::string uFH_errorMsg2_fb_str = uFH_errorMsg2_fb.toStyledString(); + std::string uFH_errorMsg3_fb_str = uFH_errorMsg3_fb.toStyledString(); + + std::string MoosAppStatus_str = MoosAppStatus.toStyledString(); + + //Notify("uFH_ErrorMsg_fb", uFH_ErrorMsg_fb_str); + Notify("uFH_errorMsg1_fb", uFH_errorMsg1_fb_str); + Notify("uFH_errorMsg2_fb", uFH_errorMsg2_fb_str); + Notify("uFH_errorMsg3_fb", uFH_errorMsg3_fb_str); + + Notify("MoosAppStatus", MoosAppStatus_str); + + + // m_msgs << "\n" << m_CPU_temperature; + //m_msgs << "\n"<< MoosAppStatus; + m_msgs << "\n"<< uFH_errorMsg1_fb; + m_msgs << "\n"<< uFH_errorMsg2_fb; + m_msgs << "\n"<< uFH_errorMsg3_fb; + // m_msgs << "m_faultThrust:" << m_faultThrust << endl; + + Notify("m_curr_time", m_curr_time); + //m_msgs << "\n"<< m_curr_time; + return true; +} + +//--------------------------------------------------------- +// Procedure: RegisterVariables + +void FaultHandle::RegisterVariables() +{ + AppCastingMOOSApp::RegisterVariables(); + + + Register("DB_CLIENTS", 0); + Register("EXITED_NORMALLY", 0); + Register("TIME", 0); + Register("uMission_fault_fb", 0); + Register("uDevice_monitor_fb", 0); + Register("uMotion_fault_fb", 0); + + + + #if 0 + Register("漏水信息", 0); + Register("电池信息", 0); + Register("任务超深", 0); + Register("任务超时", 0); + Register("任务超区域", 0); + #endif +} +//------------------------------------------------------------ +// Procedure: handleMailNewDBClients + +void FaultHandle::handleMailNewDBClients() +{ + // Phase 1: Possibly expand watchlist given current DB_CLIENTS + if(m_watch_all_db) { + vector svector = parseString(m_db_clients, ','); + unsigned int i, vsize = svector.size(); + for(i=0; i m_noted_gone_wait) { + if(!vectorContains(m_excused_list, proc)) { + if(m_map_alive[proc]) + procNotedGone(proc); + if(m_proc_watch_summary == "All Present") + m_proc_watch_summary = "AWOL: " + proc; + else + m_proc_watch_summary += "," + proc; + } + else { // proc IS excused and newly gone + if(m_map_alive[proc]) + procNotedExcused(proc); + } + } + } + else { + if(!m_map_alive[proc]) + procNotedHere(proc); + } + } + + if(prev_summary != m_proc_watch_summary) + m_proc_watch_summary_changed = true; +} + +//------------------------------------------------------------ +// Procedure: handleMailStatusUpdate + +void FaultHandle::handleMailStatusUpdate(string status) +{ + string procname = tokStringParse(status, "MOOSName", ',', '='); + string cpuload = tokStringParse(status, "cpuload", ',', '='); + + if(procname == "") { + reportRunWarning("Unhandled STATUS update: Missing MOOSName."); + return; + } + + if(cpuload == "") { + reportRunWarning("Unhandled STATUS update: Missing cpuload for " + procname); + return; + } + + double d_cpuload = atof(cpuload.c_str()); + + m_map_now_cpuload[procname] = d_cpuload; + if(d_cpuload > m_map_max_cpuload[procname]) + m_map_max_cpuload[procname] = d_cpuload; +} + +//----------------------------------------------------------------- +// Procedure: isAlive +// Purpose: Check the given process name against the current list +// of processes from DB_CLIENTS + +bool FaultHandle::isAlive(string procname) +{ + procname = stripBlankEnds(procname); + + vector svector = parseString(m_db_clients, ','); + unsigned int i, vsize = svector.size(); + + for(i=0; i svector = parseString(pnames, ','); + unsigned int i, vsize = svector.size(); + + if(vsize == 0) { + reportConfigWarning("Empty list provided to WATCH config param"); + return(false); + } + + bool handled = true; + for(i=0; i 0) && (procname.at(len-1) == '*')) { + prefix = true; + procname = procname.substr(0, len-1); + } + + // Check to see if this process requests a dedicated posting + // A procname of say "pFooBar:FOO_PRESENT" will request a separate + // MOOS variable FOO_PRESENT report on the presence or absense + // of the pFooBar process. + string proc = biteStringX(procname, ':'); + string post = procname; + procname = proc; + if((!prefix) && (post != "")) + m_map_proc_post[proc] = post; + + // Check to see if the process name is already present + unsigned int i, vsize = m_include_list.size(); + for(i=0; i svector = parseString(pnames, ','); + unsigned int i, vsize = svector.size(); + + if(vsize == 0) { + reportConfigWarning("Empty list provided to NOWATCH config param"); + return(false); + } + + bool handled = true; + for(i=0; i 0) && (procname.at(len-1) == '*')) { + prefix = true; + procname = procname.substr(0, len-1); + } + + // Check to see if the process name is already present + unsigned int i, vsize = m_exclude_list.size(); + for(i=0; i::iterator p; + for(p=m_map_proc_post.begin(); p!=m_map_proc_post.end(); p++) { + string proc = p->first; + string proc_post = p->second; + + bool alive_prev = m_map_alive_prev[proc]; + bool alive_curr = m_map_alive[proc]; + // if(alive_prev != alive_curr) + // Notify(proc_post, boolToString(alive_curr)); + } +} + +//----------------------------------------------------------------- +#if 0 +// Procedure: postFullSummary +// Note: + +void FaultHandle::postFullSummary() +{ + string full_summary; + unsigned int i, vsize = m_watch_list.size(); + + for(i=0; i 0) + full_summary += ","; + full_summary += msg; + } + + if(full_summary == "") + full_summary = "No processes to watch"; + + Notify(postVar("PROC_WATCH_FULL_SUMMARY"), full_summary); +} +#endif + + + +//----------------------------------------------------------------- +// Procedure: procNotedHere + +void FaultHandle::procNotedHere(string procname) +{ + procname = stripBlankEnds(procname); + + m_map_noted_here[procname]++; + m_map_alive[procname] = true; + + string msg; + if(m_map_noted_here[procname] <= 1) + msg += "Noted to be present: [" + procname + "]"; + else { + msg += "Resurrected: [" + procname + "]"; + + bool allow_this_retraction = false; + if(m_allow_retractions < 0) + allow_this_retraction = true; + else { + double moos_elapsed_time = m_curr_time - m_last_posting_time; + double real_elapsed_time = moos_elapsed_time; + if(m_time_warp > 0) + real_elapsed_time = moos_elapsed_time / m_time_warp; + if(real_elapsed_time <= m_allow_retractions) + allow_this_retraction = true; + } + + // Retraction String must match exactly. See XYZ below. + if(allow_this_retraction) + retractRunWarning("Process [" + procname + "] is missing."); + } + + // Notify(postVar("PROC_WATCH_EVENT"), msg); + reportEvent(msg); +} + +//----------------------------------------------------------------- +// Procedure: procNotedGone + +void FaultHandle::procNotedGone(string procname) +{ + procname = stripBlankEnds(procname); + + m_map_noted_gone[procname]++; + m_map_alive[procname] = false; + + // Run Warning must match exactly when/if retracting. See XYZ above. + string msg = "Process [" + procname + "] is missing."; + //Notify(postVar("PROC_WATCH_EVENT"), msg); + + reportEvent("PROC_WATCH_EVENT: " + msg); + reportRunWarning(msg); +} + +//----------------------------------------------------------------- +// Procedure: procNotedExcused + +void FaultHandle::procNotedExcused(string procname) +{ + procname = stripBlankEnds(procname); + + m_map_noted_gone[procname]++; + m_map_alive[procname] = false; + + // Run Warning must match exactly when/if retracting. See XYZ above. + string msg = "Process [" + procname + "] is gone but excused."; + //Notify(postVar("PROC_WATCH_EVENT"), msg); + + reportEvent("PROC_WATCH_EVENT: " + msg); +} + + +//----------------------------------------------------------------- +// Procedure: handlePostMapping + +void FaultHandle::handlePostMapping(string mapping) +{ + string left = biteStringX(mapping, ','); + string right = mapping; + + if(!strContainsWhite(right)) + m_map_chgpost[left] = right; +} + +//----------------------------------------------------------------- +// Procedure: postVar + +string FaultHandle::postVar(string varname) +{ + map::iterator p = m_map_chgpost.find(varname); + if(p == m_map_chgpost.end()) + return(varname); + else + return(p->second); +} + +//----------------------------------------------------------------- +// Procedure: populateAntlerList + +void FaultHandle::populateAntlerList() +{ + STRING_LIST sParams; + m_MissionReader.GetConfiguration("ANTLER", sParams); + + STRING_LIST::iterator p; + for(p = sParams.begin();p!=sParams.end();p++) { + string sLine = *p; + string param = tolower(biteStringX(sLine, '=')); + string value = stripBlankEnds(sLine); + + if(param == "run") { + string app = biteStringX(value, '@'); + + // Handle case where app is launched under an alias name with ~ alias + biteStringX(value, '~'); + if(value != "") + app = value; + + if((app != "") && (app != "uProcessWatch") && !strBegins(app, "MOOSDB")) { + m_set_antler_clients.insert(app); + bool added = addToWatchList(app); + if(added) + procNotedHere(app); + } + } + } +} + +//----------------------------------------------------------------- +// Procedure: processExcluded +// Purpose: Determine if this process is to be excluded based on +// NOWATCH params. Either by an explicit match or by a +// pattern match. + +bool FaultHandle::processExcluded(const string& procname) +{ + bool excluded = false; + unsigned int i, vsize = m_exclude_list.size(); + for(i=0; i 80) + // { + // uFH_errorMsg1_fb["FaultMsgs"]["uSoftWare_appOverload_fault"]["FaultID"] = "pOdometryTEST"; + // } + static bool BSC_OverLoadFlag = false; + static bool DM_OverLoadFlag = false; + static bool MC_OverLoadFlag = false; + static bool SSC_OverLoadFlag = false; + static bool TM_OverLoadFlag = false; + + if((BSC_cpuload > 80) && (BSC_OverLoadFlag == false)) + { + uFH_errorMsg1_fb["FaultMsgs"]["uSoftWare_appOverload_fault"]["FaultID"].append(1001); + BSC_OverLoadFlag = true; + } + if((DM_cpuload > 80) && (DM_OverLoadFlag == false)) + { + uFH_errorMsg1_fb["FaultMsgs"]["uSoftWare_appOverload_fault"]["FaultID"].append(1002); + DM_OverLoadFlag = true; + } + if((MC_cpuload > 80) && (MC_OverLoadFlag == false)) + { + uFH_errorMsg1_fb["FaultMsgs"]["uSoftWare_appOverload_fault"]["FaultID"].append(1003); + MC_OverLoadFlag = true; + } + if((SSC_cpuload > 80) && (SSC_OverLoadFlag == false)) + { + uFH_errorMsg1_fb["FaultMsgs"]["uSoftWare_appOverload_fault"]["FaultID"].append(1004); + SSC_OverLoadFlag = true; + } + if((TM_cpuload > 80) && (TM_OverLoadFlag == false)) + { + uFH_errorMsg1_fb["FaultMsgs"]["uSoftWare_appOverload_fault"]["FaultID"].append(1005); + TM_OverLoadFlag = true; + } + + //APP过载、故障ID预留:1006-1100 + // { + // uFH_errorMsg1_fb["FaultMsgs"]["uSoftWare_appOverload_fault"]["FaultID"].append(9999); + // } + +} +} + +//--------------------------------------------------------------------------- +//用于监控TaskManagement反馈的任务状态并作出处理 +void FaultHandle::MissionFaultMonitor() +{ + static bool firstRecvFlag = false; + static double FirstRecvTime = 0; + if(m_Mission_fault_fb != 0 && (firstRecvFlag == false)) + { + FirstRecvTime = MOOSTime(); + firstRecvFlag = true; + } + + static int misson_fault_lastTime = 0; + + if(m_Mission_fault_fb != 0 & misson_fault_lastTime != m_Mission_fault_fb) + { + //--------------------------------------------------------------- + //test + // m_msgs << "m_Mission_fault_fb:" << m_Mission_fault_fb << endl; + // m_msgs << "FirstRecvTime:" << FirstRecvTime << endl; + //---------------------------------------------------------------- + + uFH_errorMsg2_fb["FaultLevel"] = 2; + //uFH_errorMsg2_fb["CurrentTime"] = convertSecondsToString(m_curr_time); + uFH_errorMsg2_fb["FaultMsgs"]["uMission_status_fault"]["FirstRecvTime"] = FirstRecvTime; + uFH_errorMsg2_fb["FaultMsgs"]["uMission_status_fault"]["Source"] = "TaskManagement"; + switch (m_Mission_fault_fb) + { + case 1: + uFH_errorMsg2_fb["FaultMsgs"]["uMission_status_fault"]["FaultID"].append(801);//超出规定深度 + break; + case 2: + uFH_errorMsg2_fb["FaultMsgs"]["uMission_status_fault"]["FaultID"].append(802);//超出规定时间 + break; + case 3: + uFH_errorMsg2_fb["FaultMsgs"]["uMission_status_fault"]["FaultID"].append(803);//超出安全区域 + break; + // case 4: + // uFH_errorMsg2_fb["FaultMsgs"]["uMission_status_fault"]["FaultID"].append(804);//超出规定最小高度(暂时不用,保留) + // break; + case 11: + uFH_errorMsg2_fb["FaultMsgs"]["uMission_status_fault"]["FaultID"].append(805); + break; + case 12: + case 13: + case 14: + uFH_errorMsg2_fb["FaultMsgs"]["uMission_status_fault"]["FaultID"].append(806); + break; + //FaultID从77-90为任务管理故障预留位置 + // case 99: + // uFH_errorMsg2_fb["FaultMsgs"]["uMission_status_fault"]["FaultID"] = "807-900"; + // break;9 + default: + uFH_errorMsg2_fb["FaultMsgs"]["uMission_status_fault"]["FaultID"].append(9999); + break; + } + } + misson_fault_lastTime = m_Mission_fault_fb; + +} +//------------------------------------------------------------------------- +//用于监控MotionControl反馈的运动状态并作出处理 +void FaultHandle::MotionControlMonitor()//20231109未完成 +{ + static bool firstRecvFlag = false; + static double FirstRecvTime = 0; + if((m_Motion_fault_fb != 0) && (firstRecvFlag == false)) + { + FirstRecvTime = MOOSTime(); + firstRecvFlag = true; + } + if(m_Motion_fault_fb != 0) + { + static bool motionFaultFlag1 = false; + if((m_Motion_fault_fb == 1) && (motionFaultFlag1 == false)) + { + uFH_errorMsg2_fb["FaultLevel"] = 2; + //uFH_errorMsg2_fb["CurrentTime"] = convertSecondsToString(m_curr_time); + uFH_errorMsg2_fb["FaultMsgs"]["uMotion_control_fault"]["FirstRecvTime"] = FirstRecvTime; + uFH_errorMsg2_fb["FaultMsgs"]["uMotion_control_fault"]["Source"] = "MotionControl"; + uFH_errorMsg2_fb["FaultMsgs"]["uMotion_control_fault"]["FaultID"].append(1101); + motionFaultFlag1 = true; + + } + + static bool motionFaultFlag2 = false; + if((m_Motion_fault_fb > 2) && (motionFaultFlag2 == false)) + { + uFH_errorMsg2_fb["FaultLevel"] = 2; + //uFH_errorMsg2_fb["CurrentTime"] = convertSecondsToString(m_curr_time); + uFH_errorMsg2_fb["FaultMsgs"]["uMotion_control_fault"]["FirstRecvTime"] = FirstRecvTime; + uFH_errorMsg2_fb["FaultMsgs"]["uMotion_control_fault"]["Source"] = "MotionControl"; + uFH_errorMsg2_fb["FaultMsgs"]["uMotion_control_fault"]["FaultID"].append(1103); + motionFaultFlag2 = true; + } + + static bool motionFaultFlag3 = false; + + if((m_Motion_fault_fb == 2) && (motionFaultFlag3 == false)) + { + uFH_errorMsg1_fb["FaultLevel"] = 1; + //uFH_errorMsg1_fb["CurrentTime"] = convertSecondsToString(m_curr_time); + uFH_errorMsg1_fb["FaultMsgs"]["uMotion_control_fault"]["FirstRecvTime"] = FirstRecvTime; + uFH_errorMsg1_fb["FaultMsgs"]["uMotion_control_fault"]["Source"] = "MotionControl"; + uFH_errorMsg1_fb["FaultMsgs"]["uMotion_control_fault"]["FaultID"].append(1102); + motionFaultFlag3 = true; + } + //此处,关于uMotion_control_fault的FaultID预留了1104-1200,后续有需要可添加。 + } + +} +//------------------------------------------------------------------------- +//获取AUV设备信息,判断漏水状态 +void FaultHandle::DeviceLeakageMonitor() +{ + static bool firstRecvFlag = false; + static double FirstRecvTime = 0; + if((m_faultLeakSensor != 0) && (firstRecvFlag == false)) + { + FirstRecvTime = MOOSTime(); + firstRecvFlag = true; + } + +//----------------------changed by zhangwei 20231115--------------------------------------- + static uint32_t m_faultLeakSensorLastTime = m_faultLeakSensor; + + if((m_faultLeakSensor != 0) & (m_faultLeakSensorLastTime != m_faultLeakSensor)) + { + uFH_errorMsg3_fb["FaultLevel"] = 3; + //uFH_errorMsg3_fb["CurrentTime"] = convertSecondsToString(m_curr_time); + uFH_errorMsg3_fb["FaultMsgs"]["uSensor_leakage_fault"]["FirstRecvTime"] = FirstRecvTime; + uFH_errorMsg3_fb["FaultMsgs"]["uSensor_leakage_fault"]["Source"] = "AUV"; + + msg3_faultID_array.clear(); + for(int i = 0; i < 32; i++) + { + if (m_faultLeakSensor & (1 << i)) + { + msg3_faultID_array.append(i + 1); + } + } + uFH_errorMsg3_fb["FaultMsgs"]["uSensor_leakage_fault"]["FaultID"] = msg3_faultID_array; + m_faultLeakSensorLastTime = m_faultLeakSensor; + } + +//----------------------changed by zhangwei 20231115--------------------------------------- + +} +//------------------------------------------------------------------------- +//获取AUV设备信息,判断电池状态 +void FaultHandle::BatteryStatusMonitor() +{ + //------------------------------------------------------------------------- + //低电量警告 + + static bool FirstLowPower_flag = false; + if((m_batteryLevel < 20) && (FirstLowPower_flag == false)) + { + uFH_errorMsg1_fb["FaultLevel"] = 1; + //uFH_errorMsg1_fb["CurrentTime"] = convertSecondsToString(m_curr_time); + uFH_errorMsg1_fb["FaultMsgs"]["uBattery_level_warning"]["FirstRecvTime"] = MOOSTime(); + uFH_errorMsg1_fb["FaultMsgs"]["uBattery_level_warning"]["Source"] = "AUV"; + uFH_errorMsg1_fb["FaultMsgs"]["uBattery_level_warning"]["FaultID"].append(700); + FirstLowPower_flag = true; + } + + //--------------------------------------------------------------------------------------- + //电池状态监控 + static bool firstRecvFlag = false; + static double FirstRecvTime = 0; + if((m_faultBattery != 0) && (firstRecvFlag == false)) + { + FirstRecvTime = MOOSTime(); + firstRecvFlag = true; + } + static uint32_t m_faultBatteryLastTime = m_faultBattery; + + if((m_faultBattery != 0) && (m_faultBatteryLastTime != m_faultBattery)) + { + uFH_errorMsg2_fb["FaultLevel"] = 2; + //uFH_errorMsg2_fb["CurrentTime"] = convertSecondsToString(m_curr_time); + uFH_errorMsg2_fb["FaultMsgs"]["uBattery_status_fault"]["FirstRecvTime"] = FirstRecvTime; + uFH_errorMsg2_fb["FaultMsgs"]["uBattery_status_fault"]["Source"] = "AUV"; + + msg2_PSfaultID_array.clear(); + for(int i = 0; i < 32; i++) + { + if (m_faultBattery & (1 << i)) + { + msg2_PSfaultID_array.append(i + 501); + } + } + uFH_errorMsg2_fb["FaultMsgs"]["uBattery_status_fault"]["FaultID"] = msg2_PSfaultID_array; + m_faultBatteryLastTime = m_faultBattery; + } +} +//------------------------------------------------------------------------- +//获取AUV设备信息,判断以及反馈应急电池状态//20231110修改 +void FaultHandle::EmergencyBatteryMonitor() +{ + static bool firstRecvFlag = false; + static double FirstRecvTime = 0; + if((m_faultEmergencyBattery != 0) && (firstRecvFlag == false)) + { + FirstRecvTime = MOOSTime(); + firstRecvFlag = true; + } + +//----------------------changed by zhangwei 20231115--------------------------------------- + static uint32_t m_faultEmergencyBatteryLastTime = m_faultEmergencyBattery; + + if((m_faultEmergencyBattery != 0) & (m_faultEmergencyBatteryLastTime != m_faultEmergencyBattery)) + { + uFH_errorMsg2_fb["FaultLevel"] = 2; + //uFH_errorMsg2_fb["CurrentTime"] = convertSecondsToString(m_curr_time); + uFH_errorMsg2_fb["FaultMsgs"]["uEmergency_Battery_fault"]["FirstRecvTime"] = FirstRecvTime; + uFH_errorMsg2_fb["FaultMsgs"]["uEmergency_Battery_fault"]["Source"] = "AUV"; + + msg2_emergencyPS_array.clear(); + for(int i = 0; i < 32; i++) + { + if (m_faultEmergencyBattery & (1 << i)) + { + msg2_emergencyPS_array.append(i + 509); + } + } + uFH_errorMsg2_fb["FaultMsgs"]["uEmergency_Battery_fault"]["FaultID"] = msg2_emergencyPS_array; + m_faultEmergencyBatteryLastTime = m_faultEmergencyBattery; + } + +//----------------------changed by zhangwei 20231115--------------------------------------- +} + +//------------------------------------------------------------------------- +//获取AUV设备信息,判断以及反馈推进器状态 +void FaultHandle::ThrustStatusMonitor() +{ + + static bool firstRecvFlag = false; + static double FirstRecvTime = 0; + if((m_faultThrust != 0) && (firstRecvFlag == false)) + { + FirstRecvTime = MOOSTime(); + firstRecvFlag = true; + } + + static uint32_t m_faultThrustLastTime = m_faultThrust; + + if((m_faultThrust != 0) & (m_faultThrustLastTime != m_faultThrust)) + { + uFH_errorMsg2_fb["FaultLevel"] = 2; + //uFH_errorMsg2_fb["CurrentTime"] = convertSecondsToString(m_curr_time); + uFH_errorMsg2_fb["FaultMsgs"]["uPropeller_status_fault"]["FirstRecvTime"] = FirstRecvTime; + uFH_errorMsg2_fb["FaultMsgs"]["uPropeller_status_fault"]["Source"] = "AUV"; + + msg2_thrust_Status_array.clear(); + for(int i = 0; i < 32; i++) + { + if (m_faultThrust & (1 << i)) + { + msg2_thrust_Status_array.append(i + 701); + } + } + //注意:此处针对推进器状态仍有预留,后续如果有需求,推进器故障ID可以在后面继续添加 + + uFH_errorMsg2_fb["FaultMsgs"]["uPropeller_status_fault"]["FaultID"] = msg2_thrust_Status_array; + m_faultThrustLastTime = m_faultThrust; + } + + +} + + +//------------------------------------------------------------------------- +//added by zhangwei 20231101 +//获取当前时间(秒),转换为string格式时间,用于故障日志记录 +string FaultHandle::convertSecondsToString(double seconds) +{ + // 获取当前时间的时间点 + //time_t now = (int)seconds; + time_t now = time(0); + + tm* localTime = localtime(&now); + // 设置时间格式 + stringstream ss; + ss << setw(2) << setfill('0') << localTime->tm_year + 1900 << '-' + << setw(2) << setfill('0') << localTime->tm_mon + 1 << '-' + << setw(2) << setfill('0') << localTime->tm_mday << ' ' + << setw(2) << setfill('0') << localTime->tm_hour << ':' + << setw(2) << setfill('0') << localTime->tm_min << ':' + << setw(2) << setfill('0') << localTime->tm_sec; + // 返回时间字符串 + return ss.str(); +} + +//--------------------------------------------------------------------------- +//获取CPU温度并反馈到MOOSDB +void FaultHandle::CPUTempMonitor() +{ + std::ifstream file("/sys/class/thermal/thermal_zone0/temp"); + if (file.is_open()) { + std::string line; + if (std::getline(file, line)) + { + std::istringstream iss(line); + if (iss >> m_CPU_temperature) + { + //std::ostringstream os; + m_CPU_temperature = m_CPU_temperature/1000; + //os << m_CPU_temperature; + //std::string CPUTemperature = os.str() + "°C"; + // Notify("CPUTemperature", m_CPU_temperature); + + std::stringstream ss; + ss << m_CPU_temperature; + Notify("CPUTemperature", ss.str()); + } + else + { + Notify("CPUTemperature", "Failed"); + } + } + else + { + Notify("CPUTemperature", "Failed"); + } + file.close(); + } + else + { + Notify("CPUTemperature", "Failed"); + } + +} + +void FaultHandle::errorMsgInit() +{ + uFH_errorMsg1_fb["FaultLevel"] = 0; + uFH_errorMsg1_fb["CurrentTime"] = convertSecondsToString(m_curr_time); + uFH_errorMsg1_fb["FaultMsgs"]; + + uFH_errorMsg2_fb["FaultLevel"] = 0; + uFH_errorMsg2_fb["CurrentTime"] = convertSecondsToString(m_curr_time); + uFH_errorMsg2_fb["FaultMsgs"]; + + uFH_errorMsg3_fb["FaultLevel"] = 0; + uFH_errorMsg3_fb["CurrentTime"] = convertSecondsToString(m_curr_time); + uFH_errorMsg3_fb["FaultMsgs"]; +} + +//----------------------------------------------------------------------------- +//MOOSAPP运行是否异常 +bool FaultHandle::MoosAppMissing() +{ + if ((BSC_StatusStr == "MISSING")||(DM_StatusStr == "MISSING")||(MC_StatusStr == "MISSING")||(SSC_StatusStr == "MISSING")||(TM_StatusStr == "MISSING")) + { + return true; + } + else + return false; +} + +//----------------------------------------------------------------------- +//MOOSAPP占用CPU是否超限 +bool FaultHandle::MoosAppOverload() +{ + if ((BSC_cpuload > 80)|| + (DM_cpuload > 80)|| + (MC_cpuload > 80)|| + (SSC_cpuload > 80)|| + (TM_cpuload > 80)) + { + return true; + } + else + return false; +} +//----------------------------------------------------------------------- +//接收外部故障复位命令,将故障上报信息重置,暂时未启用 20231121 +void FaultHandle::FaultReset() +{ + if(m_resetMsg_fb) + { + Json::Value empty; + uFH_errorMsg1_fb["FaultLevel"] = 0; + uFH_errorMsg1_fb["CurrentTime"] = convertSecondsToString(m_curr_time); + uFH_errorMsg1_fb["FaultMsgs"] = empty; + + uFH_errorMsg2_fb["FaultLevel"] = 0; + uFH_errorMsg2_fb["CurrentTime"] = convertSecondsToString(m_curr_time); + uFH_errorMsg2_fb["FaultMsgs"] = empty; + + uFH_errorMsg3_fb["FaultLevel"] = 0; + uFH_errorMsg3_fb["CurrentTime"] = convertSecondsToString(m_curr_time); + uFH_errorMsg3_fb["FaultMsgs"] = empty; + } + + +} +//----------------------------------------------------------------------- diff --git a/src/pFaultHandle/FaultHandle.h b/src/pFaultHandle/FaultHandle.h new file mode 100644 index 0000000..8ed1889 --- /dev/null +++ b/src/pFaultHandle/FaultHandle.h @@ -0,0 +1,211 @@ +/************************************************************/ +/* NAME: wade */ +/* ORGN: MIT */ +/* FILE: FaultHandle.h */ +/* DATE: */ +/************************************************************/ + +#ifndef FaultHandle_HEADER +#define FaultHandle_HEADER + +#include "MOOS/libMOOS/Thirdparty/AppCasting/AppCastingMOOSApp.h" +#include "MOOS/libMOOS/MOOSLib.h" +//#include "moos.h" +#include +#include +#include +#include +#include +#include +#include +#include + +//class FaultHandle : public CMOOSApp +class FaultHandle : public AppCastingMOOSApp +{ + public: + FaultHandle(); + ~FaultHandle(); + + + protected: // Standard MOOSApp functions to overload + bool OnNewMail(MOOSMSG_LIST &NewMail); + bool Iterate(); + bool OnConnectToServer(); + bool OnStartUp(); + bool buildReport(); + + void RegisterVariables(); + + protected: + void handleMailNewDBClients(); + void handleMailStatusUpdate(std::string); + + bool handleConfigWatchList(std::string); + bool handleConfigWatchItem(std::string); + + bool handleConfigExcludeList(std::string); + bool handleConfigExcludeItem(std::string); + + protected: + bool addToWatchList(std::string); + + void checkForIndividualUpdates(); + void postFullSummary(); + + bool isAlive(std::string); + void procNotedHere(std::string); + void procNotedGone(std::string); + void procNotedExcused(std::string); + + void handlePostMapping(std::string); + std::string postVar(std::string); + + void populateAntlerList(); + + bool processIncluded(const std::string& procname); + bool processExcluded(const std::string& procname); + + protected: + std::string convertSecondsToString(double); + + void errorMsgInit(); + + void MoosAppStatusMonitor(); + void MoosAppOverloadMonitor(); + void MissionFaultMonitor(); + void MotionControlMonitor(); + void DeviceLeakageMonitor(); + void BatteryStatusMonitor(); + void EmergencyBatteryMonitor(); + void ThrustStatusMonitor(); + void CPUTempMonitor(); + void FaultReset(); + + + bool MoosAppMissing(); + bool MoosAppOverload(); + + + protected: // State Variables + bool m_proc_watch_summary_changed; + double m_last_posting_time; + + // Clients and Summary stored across iterations + std::string m_db_clients; + std::string m_proc_watch_summary; + + std::vector m_watch_list; + std::vector m_excused_list; + + // Mapping from proc name to data + std::map m_map_alive; + std::map m_map_alive_prev; + std::map m_map_noted_gone; + std::map m_map_noted_here; + std::map m_map_now_cpuload; + std::map m_map_max_cpuload; + + std::set m_set_db_clients; + std::set m_set_watch_clients; + std::set m_set_antler_clients; + + protected: // Configurations Variables + bool m_watch_all_db; + bool m_watch_all_antler; + double m_allow_retractions; + double m_min_wait; + double m_noted_gone_wait; + + // Include List + std::vector m_include_list; + std::vector m_include_list_prefix; + + // Exclude List + std::vector m_exclude_list; + std::vector m_exclude_list_prefix; + + // A dedicated MOOS var for posting when a proc chgs status + std::map m_map_proc_post; + + // A map for changing the MOOS variable posted. + std::map m_map_chgpost; + + protected: + int m_Mission_fault_fb; + int m_Motion_fault_fb; + double m_CPU_temperature; + bool m_resetMsg_fb; + + uint32_t m_faultBattery; + uint32_t m_faultEmergencyBattery; + uint32_t m_faultLeakSensor; + uint32_t m_faultThrust; + uint32_t m_batteryLevel; + + Json::Value Device_monitor; + Json::Value MoosApp_cpuLoad; + Json::Value MoosAppStatus; + Json::Value uFH_ErrorMsg_fb; + + Json::Value uFH_errorMsg1_fb; + Json::Value uFH_errorMsg2_fb; + Json::Value uFH_errorMsg3_fb; + + + Json::Value msg3_faultID_array; + Json::Value msg2_PSfaultID_array; + Json::Value msg2_emergencyPS_array; + Json::Value msg2_thrust_Status_array; + + Json::Value msg1_faultID_array; + +//--------------------------------------test------------------------------ + //std::string ODO_StatusStr; + + std::string BSC_StatusStr; + std::string DM_StatusStr; + std::string MC_StatusStr; + std::string SSC_StatusStr; + std::string TM_StatusStr; + + + std::string pOdometryCPUload; + std::string BSC_CPUloadStr; + std::string DM_CPUloadStr; + std::string MC_CPUloadStr; + std::string SSC_CPUloadStr; + std::string TM_CPUloadStr; + + + //double ABC; + double BSC_cpuload; + double DM_cpuload; + double MC_cpuload; + double SSC_cpuload; + double TM_cpuload; + + + + + +//--------------------------------------test------------------------------ + protected: + //Contingency variable + + // bool uSensor_leakage_fb; + // bool uMission_deepOut_fb; + // bool uMission_timeOut_fb; + // bool uDrive_batteryLow_fb; + // double uSoftWare_appMiss_fb; //AppID + + //------------------------------------------------ + //subscribe variables + + + private: // Configuration variables + + private: // State variables +}; + +#endif diff --git a/src/pFaultHandle/FaultHandle_Info.cpp b/src/pFaultHandle/FaultHandle_Info.cpp new file mode 100644 index 0000000..0885bcc --- /dev/null +++ b/src/pFaultHandle/FaultHandle_Info.cpp @@ -0,0 +1,115 @@ +/****************************************************************/ +/* NAME: wade */ +/* ORGN: MIT Cambridge MA */ +/* FILE: FaultHandle_Info.cpp */ +/* DATE: Dec 29th 1963 */ +/****************************************************************/ + +#include +#include +#include "FaultHandle_Info.h" +#include "ColorParse.h" +#include "ReleaseInfo.h" + +using namespace std; + +//---------------------------------------------------------------- +// Procedure: showSynopsis + +void showSynopsis() +{ + blk("SYNOPSIS: "); + blk("------------------------------------ "); + blk(" The pFaultHandle application is used for "); + blk(" "); + blk(" "); + blk(" "); + blk(" "); +} + +//---------------------------------------------------------------- +// Procedure: showHelpAndExit + +void showHelpAndExit() +{ + blk(" "); + blu("=============================================================== "); + blu("Usage: pFaultHandle file.moos [OPTIONS] "); + blu("=============================================================== "); + blk(" "); + showSynopsis(); + blk(" "); + blk("Options: "); + mag(" --alias","= "); + blk(" Launch pFaultHandle with the given process name "); + blk(" rather than pFaultHandle. "); + mag(" --example, -e "); + blk(" Display example MOOS configuration block. "); + mag(" --help, -h "); + blk(" Display this help message. "); + mag(" --interface, -i "); + blk(" Display MOOS publications and subscriptions. "); + mag(" --version,-v "); + blk(" Display the release version of pFaultHandle. "); + blk(" "); + blk("Note: If argv[2] does not otherwise match a known option, "); + blk(" then it will be interpreted as a run alias. This is "); + blk(" to support pAntler launching conventions. "); + blk(" "); + exit(0); +} + +//---------------------------------------------------------------- +// Procedure: showExampleConfigAndExit + +void showExampleConfigAndExit() +{ + blk(" "); + blu("=============================================================== "); + blu("pFaultHandle Example MOOS Configuration "); + blu("=============================================================== "); + blk(" "); + blk("ProcessConfig = pFaultHandle "); + blk("{ "); + blk(" AppTick = 4 "); + blk(" CommsTick = 4 "); + blk(" "); + blk("} "); + blk(" "); + exit(0); +} + + +//---------------------------------------------------------------- +// Procedure: showInterfaceAndExit + +void showInterfaceAndExit() +{ + blk(" "); + blu("=============================================================== "); + blu("pFaultHandle INTERFACE "); + blu("=============================================================== "); + blk(" "); + showSynopsis(); + blk(" "); + blk("SUBSCRIPTIONS: "); + blk("------------------------------------ "); + blk(" NODE_MESSAGE = src_node=alpha,dest_node=bravo,var_name=FOO, "); + blk(" string_val=BAR "); + blk(" "); + blk("PUBLICATIONS: "); + blk("------------------------------------ "); + blk(" Publications are determined by the node message content. "); + blk(" "); + exit(0); +} + +//---------------------------------------------------------------- +// Procedure: showReleaseInfoAndExit + +void showReleaseInfoAndExit() +{ + showReleaseInfo("pFaultHandle", "gpl"); + exit(0); +} + diff --git a/src/pFaultHandle/FaultHandle_Info.h b/src/pFaultHandle/FaultHandle_Info.h new file mode 100644 index 0000000..e5c7f64 --- /dev/null +++ b/src/pFaultHandle/FaultHandle_Info.h @@ -0,0 +1,18 @@ +/****************************************************************/ +/* NAME: wade */ +/* ORGN: MIT Cambridge MA */ +/* FILE: FaultHandle_Info.h */ +/* DATE: Dec 29th 1963 */ +/****************************************************************/ + +#ifndef FaultHandle_INFO_HEADER +#define FaultHandle_INFO_HEADER + +void showSynopsis(); +void showHelpAndExit(); +void showExampleConfigAndExit(); +void showInterfaceAndExit(); +void showReleaseInfoAndExit(); + +#endif + diff --git a/src/pFaultHandle/main.cpp b/src/pFaultHandle/main.cpp new file mode 100644 index 0000000..4fcb35a --- /dev/null +++ b/src/pFaultHandle/main.cpp @@ -0,0 +1,52 @@ +/************************************************************/ +/* NAME: wade */ +/* ORGN: MIT */ +/* FILE: main.cpp */ +/* DATE: */ +/************************************************************/ + +#include +#include "MBUtils.h" +#include "ColorParse.h" +#include "FaultHandle.h" +#include "FaultHandle_Info.h" + +using namespace std; + +int main(int argc, char *argv[]) +{ + string mission_file; + string run_command = argv[0]; + + for(int i=1; i 0) + // m_desired_rudder = setDesiredRudder(); + + // if(m_desired_thrust > 0 && m_depth_control) + // m_desired_elevator = setDesiredElevator(); + return true; +} +//TODO: 添加操控权判断 +bool Controler::overrived(string sval) +{ + if(tolower(sval) == "true") + { + if(has_override == false) + addPosting("HAS_CONTROL", "false"); + has_override = true; + } + else if(tolower(sval) == "false") + { + // Upon lifting an override, the timestamps are reset. New values + // for all will need to be received before desired_* outputs will + // be produced. If we do not reset, it's possible we may + // interpret older pubs as being stale but they may have been + // paused also during an override. + if(has_override == true) + { + desired_speed.time = 0; + desired_heading.time = 0; + desired_depth.time = 0; + desired_pitch.time = 0; + + current_speed.time = 0; + current_heading.time = 0; + current_pitch.time = 0; + current_depth.time = 0; + } + has_override = false; + addPosting("HAS_CONTROL", "true"); + } + return true; +} + +bool Controler::checkForStaleness() +{ + bool is_stale = false; + + // ========================================================= + // Part 1: Check for Helm staleness + // ========================================================= + double hdg_delta = (current_time - desired_heading.time); + if(hdg_delta > tardy_helm_thresh) { + string staleness = doubleToStringX(hdg_delta,3); + addPosting("PID_STALE", "Stale DesHdg:" + staleness); + is_stale = true; + } + double spd_delta = (current_time - desired_speed.time); + if(spd_delta > tardy_helm_thresh) { + string staleness = doubleToStringX(spd_delta,3); + addPosting("PID_STALE", "Stale DesSpd:" + staleness); + is_stale = true; + } + + // ========================================================= + // Part 2B: Check for Nav staleness + // ========================================================= + double nav_hdg_delta = (current_time - current_heading.time); + if(nav_hdg_delta > tardy_nav_thresh) { + string staleness = doubleToStringX(nav_hdg_delta,3); + addPosting("PID_STALE", "Stale NavHdg:" + staleness); + is_stale = true; + } + double nav_spd_delta = (current_time - current_speed.time); + if(nav_spd_delta > tardy_nav_thresh) { + string staleness = doubleToStringX(nav_spd_delta,3); + addPosting("PID_STALE", "Stale NavSpd:" + staleness); + is_stale = true; + } + // ========================================================= + // Part 2C: If depth control, check for Helm Depth staleness + // ========================================================= + if(has_depthCtrl) { + double dep_delta = (current_time - desired_depth.time); + if(dep_delta > tardy_helm_thresh) { + string staleness = doubleToStringX(dep_delta,3); + addPosting("PID_STALE", "Stale DesDepth:" + staleness); + is_stale = true; + } + } + + // ========================================================= + // Part 2D: If depth control, check for Nav Depth staleness + // ========================================================= + if(has_depthCtrl) { + double nav_dep_delta = (current_time - current_depth.time); + if(nav_dep_delta > tardy_nav_thresh) { + string staleness = doubleToStringX(nav_dep_delta,3); + addPosting("PID_STALE", "Stale NavDep:" + staleness); + is_stale = true; + } + double nav_pit_delta = (current_time - current_pitch.time); + if(nav_pit_delta > tardy_nav_thresh) { + string staleness = doubleToStringX(nav_pit_delta,3); + addPosting("PID_STALE", "Stale NavPitch:" + staleness); + is_stale = true; + } + } + return(is_stale); +} + +// bool Controler::setLimit(double max_thrush, double min_thrush, double max_rudder, double min_rubber, double max_elevator, double min_elevator) +// { +// limit_thrust[0] = min_thrush; +// limit_thrust[1] = max_thrush; + +// limit_rudder[0] = min_rubber; +// limit_rudder[1] = max_rudder; + +// limit_elevator[0] = min_elevator; +// limit_elevator[1] = max_elevator; +// } + +bool Controler::Limit(double &a, double max, double min) +{ + a = (a < min) ? min : a; + a = (a > max) ? max : a; + return true; +} + +bool Controler::setCtrl(bool speed, bool heading, bool depth) +{ + has_speedCtrl = speed; + has_headCtrl = heading; + has_depthCtrl = depth; + return true; +} + +void Controler::addPosting(std::string var, std::string sval) +{ + VarDataPair pair(var, sval); + postings.push_back(pair); +} + +void Controler::addPosting(std::string var, double val) +{ + VarDataPair pair(var, val); + postings.push_back(pair); +} + +double Controler::getFrequency() const +{ + double elapsed = current_time - start_time; + + double frequency = 0; + if(elapsed > 0) + frequency = ((double)(iterations)) / elapsed; + + return(frequency); +} + +bool Controler::ClearValTim(vlaTim &a) +{ + if(&a == NULL) + return false; + else + { + a.value = 0; + a.time = 0; + } + +} +//TODO: 控制器参数配置函数 +list Controler::setConfigParams(std::list) +{ + list unhandled_params; + list::iterator p; +// for(p=param_lines.begin(); p!=param_lines.end(); p++) { +// string orig = *p; +// string line = tolower(orig); +// string param = biteStringX(line, '='); +// if(param == "speed_factor") +// m_config_params.push_front(orig); +// else if(param == "simulation") +// m_config_params.push_front(orig); +// else if(param == "sim_instability") +// m_config_params.push_front(orig); +// else if(param == "tardy_helm_threshold") +// m_config_params.push_front(orig); +// else if(param == "tardy_nav_threshold") +// m_config_params.push_front(orig); +// else if(param == "yaw_pid_kp") +// m_config_params.push_front(orig); +// else if(param == "yaw_pid_kd") +// m_config_params.push_front(orig); +// else if(param == "yaw_pid_ki") +// m_config_params.push_front(orig); +// else if(param == "yaw_pid_integral_limit") +// m_config_params.push_front(orig); +// else if(param == "yaw_pid_ki_limit") +// m_config_params.push_front(orig); +// else if(param == "maxrudder") +// m_config_params.push_front(orig); +// else if(param == "heading_debug") +// m_config_params.push_front(orig); + +// else if(param == "speed_pid_kp") +// m_config_params.push_front(orig); +// else if(param == "speed_pid_kd") +// m_config_params.push_front(orig); +// else if(param == "speed_pid_ki") +// m_config_params.push_front(orig); +// else if(param == "speed_pid_integral_limit") +// m_config_params.push_front(orig); +// else if(param == "maxthrust") +// m_config_params.push_front(orig); +// else if(param == "speed_debug") +// m_config_params.push_front(orig); + +// else if(param == "depth_control") +// m_config_params.push_front(orig); +// else if(param == "z_to_pitch_pid_kp") +// m_config_params.push_front(orig); +// else if(param == "z_to_pitch_pid_kd") +// m_config_params.push_front(orig); +// else if(param == "z_to_pitch_pid_ki") +// m_config_params.push_front(orig); +// else if(param == "z_to_pitch_pid_integral_limit") +// m_config_params.push_front(orig); +// else if(param == "maxpitch") +// m_config_params.push_front(orig); +// else if(param == "depth_debug") +// m_config_params.push_front(orig); + +// else if(param == "pitch_pid_kp") +// m_config_params.push_front(orig); +// else if(param == "pitch_pid_kd") +// m_config_params.push_front(orig); +// else if(param == "pitch_pid_ki") +// m_config_params.push_front(orig); +// else if(param == "pitch_pid_integral_limit") +// m_config_params.push_front(orig); +// else if(param == "maxelevator") +// m_config_params.push_front(orig); + +// else +// unhandled_params.push_front(orig); +// } + return(unhandled_params); +} + +Json::Value Controler::getConfig(string path) +{ + ifstream ifs; + ifs.open(path, ios::in); + Json::Reader taskConfigureReader; + Json::Value inputJsonValue; + taskConfigureReader.parse(ifs, inputJsonValue); + ifs.close(); + return inputJsonValue; +} + +void Controler::setCheakStalensee(string s) +{ + if(s == "true") + cheakStalensee = true; + else + cheakStalensee = false; +} \ No newline at end of file diff --git a/src/pMotionControler/Controler.hpp b/src/pMotionControler/Controler.hpp new file mode 100644 index 0000000..7aee711 --- /dev/null +++ b/src/pMotionControler/Controler.hpp @@ -0,0 +1,155 @@ +/* + * @Author: zjk 1553836110@qq.com + * @Date: 2023-10-16 14:05:16 + * @LastEditors: zjk 1553836110@qq.com + * @LastEditTime: 2023-11-02 14:31:16 + * @FilePath: /moos-ivp-pi/src/pMotionControler/Controler.hpp + * @Description: + * + * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved. + */ +#ifndef __COBTROLLER_H +#define __CONTROLLER_H +#include +#include +#include "VarDataPair.h" +#include "MBUtils.h" +#include "AngleUtils.h" +#include +#include "json/json.h" +#include +#include + +// #include "VarDataPair.h" + +using namespace std; + +typedef struct +{ + double value; + double time; +} vlaTim; + +class Controler +{ + public: + Controler(); + ~Controler(){}; + + virtual int step(){return 0;} + virtual bool setConfigParams(){return false;} + virtual bool overrived(string sval); + + virtual bool handleYawSettings(){return false;} + virtual bool handleSpeedSettings(){return false;}; + virtual bool handleDepthSettings(){return false;}; + virtual bool hasConfigSettings() const{return false;}; + // bool setError(double err); + + bool setDesSpeed(double spd, double tim); + bool setDesDepth(double dph, double tim); + bool setDesPitch(double pth, double tim); + bool setDesHeading(double hdg, double tim); + + bool setCurSpeed(double spd, double tim); + bool setCurDepth(double dph, double tim); + bool setCurPitch(double pth, double tim); + bool setCurHeading(double hdg, double tim); + // bool setCurTime(double tim){current_time = tim;} + void updateTime(double tim){current_time = tim;} + double getCurTime(){return current_time;} + void setStartTime(double tim){start_time = tim;} + void setOverride(bool v){has_override = v;} + void setTardyHelm(double t){ tardy_helm_thresh = t;} + void setTardyNav(double t){ tardy_nav_thresh = t;} + void setCheakStalensee(string s); + void setConstThrust(double v){const_thrust = v;} + void setDeadZone(double v){dead_zone=v;} + void setDepthControl(bool v){has_depthCtrl=v;} + void setSpeedControl(bool v){has_speedCtrl=v;} + void setHeadingControl(bool v){has_headCtrl=v;} + bool setDesiredValues(); + + // bool setLimit(double max_thrush, double min_thrush, double max_rudder, double min_rubber, double max_elevator, double min_elevator); + bool setCtrl(bool speed, bool heading, bool depth); + bool Limit(double &a, double max, double min); + + bool checkForStaleness(); + void addPosting(std::string var, std::string sval); + void addPosting(std::string var, double val); + vector getPostings() {return(postings);} + void clearPostings() {postings.clear();} + bool ClearValTim(vlaTim &a); + list setConfigParams(std::list); //使用MOOS风格配置参数函数 + Json::Value getConfig(string path); + + double getFrequency() const; + bool hasControl(){return(!has_override);} + bool hasSpdCtrl(){return has_speedCtrl;} + bool hasDphCtrl(){return has_depthCtrl;} + bool hasHdgCtrl(){return has_headCtrl;} + + double getDesiredRudder() const {return(desired_rudder.value);} + double getDesiredThrust() const {return(desired_thrust.value);} + double getDesiredElevator() const {return(desired_elevator.value);} + // bool setErrorCap(int c){Error_capacity = c;} + + inline void initVariable(); + list getConfigParams(){return config_params;} + vector getConfigErrors(){return config_errors;} + vector getConfigInfo(){return config_info;} + vector getRunMsg(){return runMsg;} + Json::Value getReport(){return RepList;} + void ClearRunMsg(){runMsg.clear();} + + protected: + vlaTim desired_speed; + vlaTim desired_heading; + vlaTim desired_depth; + vlaTim desired_pitch; + + vlaTim current_speed; + vlaTim current_heading; + vlaTim current_pitch; + vlaTim current_depth; + double current_time; + double start_time; + + vlaTim desired_thrust; + vlaTim desired_rudder; + vlaTim desired_elevator; + + double limit_thrust[2]; + double limit_rudder[2]; + double limit_elevator[2]; + double max_rudder; + double max_thrust; + double max_pitch; + double max_elevator; + + bool has_speedCtrl = true; + bool has_headCtrl = true; + bool has_depthCtrl = true; + bool has_override = true; + bool cheakStalensee = true; + + vector postings; + unsigned int iterations; + + double tardy_helm_thresh; + double tardy_nav_thresh; + double const_thrust; + double dead_zone; + + + + double is_rad = false; + + list config_params; + vector config_errors; + vector config_info; + vector runMsg; + Json::Value RepList; +}; + +#endif \ No newline at end of file diff --git a/src/pMotionControler/MotionControler.cpp b/src/pMotionControler/MotionControler.cpp new file mode 100644 index 0000000..fbc7d91 --- /dev/null +++ b/src/pMotionControler/MotionControler.cpp @@ -0,0 +1,242 @@ +/* + * @Author: zjk 1553836110@qq.com + * @Date: 2023-10-12 09:52:27 + * @LastEditors: zjk 1553836110@qq.com + * @LastEditTime: 2023-11-07 12:01:57 + * @FilePath: /moos-ivp-pi/src/pMotionControler/MotionControler.cpp + * @Description: + * + * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved. + */ +// #define DEBUG +#include"MotionControler.hpp" +//TODO:增加启用哪个控制器功能 +bool MotionControler::OnNewMail(MOOSMSG_LIST &NewMail) +{ + AppCastingMOOSApp::OnNewMail(NewMail); + MOOSMSG_LIST::iterator p; + for(p=NewMail.begin(); p!=NewMail.end(); p++) + { + CMOOSMsg &msg = *p; + + string key = msg.m_sKey; + string sval = msg.m_sVal; + double dval = msg.m_dfVal; + double dfT; + msg.IsSkewed(m_curr_time, &dfT); + if(fabs(dfT) < ok_skew) + { + if((key == "MOOS_MANUAL_OVERIDE") || (key == "MOOS_MANUAL_OVERRIDE")) + pengine.overrived(sval); + else if(key == "DESIRED_HEADING") + pengine.setDesHeading(dval, MOOSTime()); + else if(key == "DESIRED_SPEED") + pengine.setDesSpeed(dval, MOOSTime()); + else if(key == "DESIRED_DEPTH") + pengine.setDesDepth(dval, MOOSTime()); + else if(key == "NAV_HEADING") + pengine.setCurHeading(angle360(dval), MOOSTime()); + else if(key == "NAV_SPEED") + pengine.setCurSpeed(dval, MOOSTime()); + else if(key == "NAV_DEPTH") + pengine.setCurDepth(dval, MOOSTime()); + else if(key == "NAV_PITCH") + pengine.setCurPitch(dval, MOOSTime()); + else if(key == MSG_ReadConfig) //重新读取配置参数可以清除故障码 + { + int e = pengine.setParam(configFilePath); + pengine.setOverride(true); + if(e != 0) + faultCode = 10 + e; + else + faultCode = 0; + } + } + } + return true; +} +bool MotionControler::Iterate() +{ + bool a; + AppCastingMOOSApp::Iterate(); + pengine.updateTime(m_curr_time); + int i = pengine.step(); + switch (i) + { + case 0: + RepList["State : "] = "Run"; + break; + case 1: + RepList["State : "] = "Ready"; + break; + case -1: + RepList["State : "] = "Fault"; + faultCode = 1;//信息超时 + break; + default: + break; + } + postPengineResults(); + postPenginePostings(); + postCharStatus(); + Notify(MSG_FALUT,faultCode); + AppCastingMOOSApp::PostReport(); + return true; +} +bool MotionControler::OnConnectToServer() +{ + registerVariables(); + return true; +} +bool MotionControler::OnStartUp() +{ + AppCastingMOOSApp::OnStartUp(); + pengine.setStartTime(MOOSTime()); + STRING_LIST sParams; + m_MissionReader.GetConfiguration(GetAppName(), sParams); + //pengine.setConfigParams(sParams); + //bool handled = true; + STRING_LIST::iterator p; + for(p=sParams.begin(); p!=sParams.end(); p++) { + string orig = *p; + string line = (orig); //识别大小写 + string param = biteStringX(line, '='); + string value = line; + double dval = atof(value.c_str()); + if(param == "config_file") + configFilePath = value; + else if(param == "tardy_helm_thresh") + pengine.setTardyHelm(dval); + else if(param == "tardy_nav_thresh") + pengine.setTardyNav(dval); + else if(param == "cheak_stalensee") + pengine.setCheakStalensee(value); + else if(param == "AppTick") + setFrequency = dval; + else if(param == "delta_freqency") + frequency_delta = dval; + else + reportUnhandledConfigWarning(orig); + } + int e = pengine.setParam(configFilePath); + if(e != 0) + { + faultCode = 10 + e; + return false; + } + return true; +} + +void MotionControler::registerVariables() +{ + AppCastingMOOSApp::RegisterVariables(); + + Register("NAV_HEADING", 0); + Register("NAV_SPEED", 0); + Register("NAV_DEPTH", 0); + Register("NAV_PITCH", 0); + Register("DESIRED_HEADING", 0); + Register("DESIRED_SPEED", 0); + Register("DESIRED_DEPTH", 0); + Register("PID_VERBOSE", 0); + Register("SPEED_FACTOR", 0); + Register("MOOS_MANUAL_OVERIDE", 0); + Register("MOOS_MANUAL_OVERRIDE", 0); + Register(MSG_ReadConfig,0); +} +bool MotionControler::buildReport() +{ + double frequency = pengine.getFrequency(); + double delta_freq = 100.0*(setFrequency - frequency) / setFrequency; + if(abs(delta_freq) > frequency_delta) + faultCode = 2; + + m_msgs << "Frequency Delta : " << frequency << endl; + m_msgs << "PID has_control : " << boolToString(pengine.hasControl()) << endl; + m_msgs << "Config File Path : " << configFilePath << endl; + m_msgs << "S : H : D : | " << intToString(pengine.hasSpdCtrl())+ " | " + << intToString(pengine.hasHdgCtrl())+" | " + << intToString(pengine.hasDphCtrl())+" |" << endl; + + RepList["to BS"] = colVar; + RepList["PID"] = pengine.getReport()["W"]; + string rep = Json::writeString(RepJsBuilder, RepList); + m_msgs << rep << endl; + + return(true); +} + +void MotionControler::postPenginePostings() +{ + vector m_postings = pengine.getPostings(); + for(unsigned int i=0; i +#include"pidControl.hpp" +#include +// #include"MOOS/libMOOS/Comms/XPCUdpSocket.h" +using namespace std; +class MotionControler : public AppCastingMOOSApp +{ + public: + MotionControler(){}; + ~MotionControler(){}; + bool OnNewMail(MOOSMSG_LIST &NewMail); + bool Iterate(); + bool OnConnectToServer(); + bool OnStartUp(); + void registerVariables(); + bool buildReport(); + + void postPenginePostings(); + void postPengineResults(); + void postColVarToBS(int T, int S, int R); + void postCharStatus(); + + const string MSG_FALUT = "uMotion_fault_fb"; + const string MSG_ReadConfig = "uMotion_config_cmd"; + const string MSG_TO_BS = "uMotion_control_cmd"; + + private: + bool ignore_nav_yaw; + bool allstop_posted; + bool verbose; + bool override; + double ok_skew = 2; + int faultCode = 0; + double setFrequency; + double frequency_delta; + + Json::Value RepList; + Json::StreamWriterBuilder RepJsBuilder; + Json::Value colVar; + + pidControl pengine; + string configFilePath; + int e; + + + +}; + +#endif + +//1.读取参数配置错误 faultCode = 10~ +//2.信息过时错误 faultCode=1 +//3.频率相差过大错误 faultCode=2 \ No newline at end of file diff --git a/src/pMotionControler/a.moos b/src/pMotionControler/a.moos new file mode 100644 index 0000000..f3aea08 --- /dev/null +++ b/src/pMotionControler/a.moos @@ -0,0 +1,46 @@ +ServerHost = localhost +ServerPort = 9000 + +ProcessConfig = pMotionControler +{ + AppTick = 20 + CommsTick = 20 + verbose = true + depth_control = true + + // SIM_INSTABILITY = 20 + + // Yaw PID controller + yaw_pid_kp = 1.2 + yaw_pid_kd = 0.0 + yaw_pid_ki = 0.3 + yaw_pid_integral_limit = 0.07 + + // Speed PID controller + speed_pid_kp = 1.0 + speed_pid_kd = 0.0 + speed_pid_ki = 0.1 + speed_pid_integral_limit = 0.07 + + maxpitch = 15 + maxelevator = 13 + + pitch_pid_kp = 1.5 + pitch_pid_kd = 0 + pitch_pid_ki = 1.0 + pitch_pid_integral_limit = 0 + + z_to_pitch_pid_kp = 0.12 + z_to_pitch_pid_kd = 0 + z_to_pitch_pid_ki = 0.004 + z_to_pitch_pid_integral_limit = 0.05 + + + //MAXIMUMS + maxrudder = 100 + maxthrust = 100 + + // A non-zero SPEED_FACTOR overrides use of SPEED_PID + // Will set DESIRED_THRUST = DESIRED_SPEED * SPEED_FACTOR + speed_factor = 0 +} \ No newline at end of file diff --git a/src/pMotionControler/alpha.bhv b/src/pMotionControler/alpha.bhv new file mode 100644 index 0000000..65b258e --- /dev/null +++ b/src/pMotionControler/alpha.bhv @@ -0,0 +1,181 @@ +//-------- FILE: alpha.bhv ------------- +initialize RUN = false +initialize TaskNum=t1 +initialize SendTask=false +//--------------模式判断------------------------ +set MODE = ACTIVE{ + RUN=true +} INACTIVE + +set MODE = T1{ + MODE=ACTIVE + TaskNum = t1 +} + + +//----------路径点任务---------------------------- +Behavior = BHV_Waypoint +{ + name = waypt_survey + pwt = 100 //优先权重 + condition = MODE==T1 + + //endflag = START=false + endflag = END_WayPoint=true + + configflag = CRUISE_SPD = $[SPEED] + //configflag = OSPOS = $[OSX],$[OSY] + + activeflag = INFO=$[OWNSHIP] + activeflag = INFO=$[BHVNAME] + activeflag = INFO=$[BHVTYPE] + + //cycleflag = CINFO=$[OSX],$[OSY] + + wptflag = CurrentPointComplete=true + wptflag = PREV=$(PX),$(PY) + wptflag = NEXT=$(NX),$(NY) + wptflag = TEST=$(X),$(Y) + wptflag = OSPOS=$(OSX),$(OSY) + //wptflag_on_start = true + + + updates = WPT_UPDATE + //perpetual = true + + templating = spawn + + // speed_alt = 1.2 + //use_alt_speed = true + lead = 8 + lead_damper = 1 + lead_to_start = false + speed = 1 // meters per second + capture_line = true + capture_radius = 5.0 + slip_radius = 15.0 + efficiency_measure = all + + polygon = 60,-40 + order = normal + //repeat = 3 + + visual_hints = nextpt_color=yellow + visual_hints = nextpt_vertex_size=8 + visual_hints = nextpt_lcolor=gray70 + visual_hints = vertex_color=dodger_blue, edge_color=white + visual_hints = vertex_size=5, edge_size=1 +} + + +//--------------定深任务------------------ +Behavior=BHV_ConstantDepth +{ + name = const_depth + pwt = 100 + //condition = DEPLOY = true + condition = MODE==T1 + duration = no-time-limit + updates = DEPTH_UPDATE + depth = 0 +} + +//--------------定向任务-------------------- + +Behavior=BHV_ConstantHeading +{ + name = const_heading + pwt = 100 + //condition = START_TURN = true + //condition = DEPLOY = true + condition = MODE==T3 + perpetual = true + + activeflag = TURN = started + + //endflag = TURN = done + //endflag = RETURN = true + //endflag = START_TURN = false + endflag = START=false + + heading = 225 + complete_thresh = 5 + duration = no-time-limit + } + +//--------------定速任务-------------------- +Behavior=BHV_ConstantSpeed +{ + name = const_speed + pwt = 1000 + condition = MODE==T1 + perpetual = true + updates = SPEED_UPDATE + //endflag = START=false + + speed = 5 + + duration = no-time-limit + //peakwidth = 0.5 + //basewidth = 0.5 + +} +//----------------安全模式----------------------- +//----------------计时器--------------------- +Behavior = BHV_Timer +{ + name = mtime + condition = MODE==T1 + pwt = 100 + templating = spawn + //duration_status = MSTATUS + //duration = 10 + endflag = TIME_OUT=true + + updates = TIMER_UPDATES + + //perpetual = true +} +//-------------最大深度限制-------------------------- +Behavior = BHV_MaxDepth +{ + name = maxdepth + pwt = 200 + condition = MODE==ACTIVE + updates = MAXDEEP_UPDATES + max_depth = 20 + tolerance = 0 + duration = no-time-limit +} +//--------------安全区域设置----------------------- + + Behavior = BHV_OpRegion + { + // General Behavior Parameters + // --------------------------- + name = op_region // example + pwt = 300 // default + condition = MODE==T5 + updates = OPREGION_UPDATES // example + + // Parameters specific to this behavior + // ------------------------------------ + max_time = 20 // default (seconds) + max_depth = 25 // default (meters) + min_altitude = 0 // default (meters) + reset_var = OPREGION_RESET // example + trigger_entry_time = 1 // default (seconds) + trigger_exit_time = 0.5 // default (seconds) + + polygon = pts={-80,-00:-30,-175:150,-100:95,25} + + breached_altitude_flag = TaskFault = AltitudeOut + breached_depth_flag = TaskFault = DepthOut + breached_poly_flag = TaskFault = RegionOut + breached_time_flag = TaskFault = TimeOut + + visual_hints = vertex_color = brown // default + visual_hints = vertex_size = 3 // default + visual_hints = edge_color = aqua // default + visual_hints = edge_size = 1 // default + } \ No newline at end of file diff --git a/src/pMotionControler/alpha.moos b/src/pMotionControler/alpha.moos new file mode 100644 index 0000000..1d506b7 --- /dev/null +++ b/src/pMotionControler/alpha.moos @@ -0,0 +1,285 @@ +//------------------------------------------------- +// NAME: M. Benjamin, MIT CSAIL +// FILE: alpha.moos +//------------------------------------------------- + +ServerHost = localhost +ServerPort = 9000 +Community = alpha +MOOSTimeWarp = 1 + +// Forest Lake +LatOrigin = 43.825300 +LongOrigin = -70.330400 + +// MIT Sailing Pavilion (use this one) +// LatOrigin = 42.358456 +// LongOrigin = -71.087589 + +//------------------------------------------ +// Antler configuration block +ProcessConfig = ANTLER +{ + MSBetweenLaunches = 200 + + Run = MOOSDB @ NewConsole = false + Run = pLogger @ NewConsole = false + //Run = uSimMarineV22 @ NewConsole = false + //Run = pMarinePIDV22 @ NewConsole = false + Run = pHelmIvP @ NewConsole = false + Run = pMarineViewer @ NewConsole = false + Run = uProcessWatch @ NewConsole = false + Run = pNodeReporter @ NewConsole = false + Run = pRealm @ NewConsole = false + Run = pTaskManger @ NewConsole = false + Run = pMotionControler @ NewConsole = false + Run = pEmulator @ NewConsole = true + //Run = uTimerScript @ NewConsole = false +} +ProcessConfig = pTaskManger +{ + AppTick = 8 + CommsTick = 8 + + planConfigPath = /home/zjk/Desktop/project/moos-ivp-extend/PlanConfigure.json +} +ProcessConfig = pEmulator +{ + AppTick = 5 + CommsTick = 5 + matlab_host = 192.168.0.11 + matlab_port = 8085 + local_port = 8080 + prefix = NAV + + start_x = 10 + start_y = 9 + start_z = 1 + start_heading = 30 +} + +//------------------------------------------ +// pLogger config block + +ProcessConfig = pLogger +{ + AppTick = 8 + CommsTick = 8 + + AsyncLog = true + + // For variables that are published in a bundle on their first post, + // explicitly declare their logging request + //Log = IVPHELM_LIFE_EVENT @ 0 NOSYNC + //Log = REPORT @ 0 NOSYNC + //Log = BHV_SETTINGS @ 0 NOSYNC + Log = OPREGION_RESET @ 0 NOSYNC + + LogAuxSrc = true + WildCardLogging = true + WildCardOmitPattern = *_STATUS + WildCardOmitPattern = DB_VARSUMMARY + WildCardOmitPattern = DB_RWSUMMARY + WildCardExclusionLog = true +} + +//------------------------------------------ +// uProcessWatch config block + +ProcessConfig = uProcessWatch +{ + AppTick = 4 + CommsTick = 4 + + watch_all = true + nowatch = uPokeDB* + nowatch = uQueryDB* + nowatch = uXMS* + nowatch = uMAC* +} + +//------------------------------------------ +// uSimMarineV22 config block + +ProcessConfig = uSimMarineV22 +{ + AppTick = 4 + CommsTick = 4 + + start_pos = x=0, y=-20, heading=180, speed=5 + + prefix = NAV + + turn_rate = 40 + thrust_map = 0:0, 20:1, 40:2, 60:3, 80:4, 100:5 + //thrust_reflect = true + + buoyancy_rate = 0.075 + max_depth_rate = 5 + max_depth_rate_speed = 2.0 + default_water_depth = 400 +} + +//------------------------------------------ +// pHelmIvP config block + +ProcessConfig = pHelmIvP +{ + AppTick = 4 + CommsTick = 4 + + behaviors = alpha.bhv + domain = course:0:359:360 + domain = speed:0:10:101 + domain = depth:0:100:101 + + park_on_allstop = false + //park_on_allstop = true + + +} + +//------------------------------------------ +// pMarinePID config block + +ProcessConfig = pMotionControler +{ + AppTick = 10 + CommsTick = 10 + + verbose = true + depth_control = true + + // SIM_INSTABILITY = 20 + + // Yaw PID controller + yaw_pid_kp = 3.0 + yaw_pid_kd = 0.0 + yaw_pid_ki = 0.01 + yaw_pid_integral_limit = 5.0 + + // Speed PID controller + speed_pid_kp = 50.0 + speed_pid_kd = 0.0 + speed_pid_ki = 10.0 + speed_pid_integral_limit = 500.0 + + maxpitch = 10 + maxelevator = 30 + + pitch_pid_kp = 10.0 + pitch_pid_kd = 0 + pitch_pid_ki = 0.1 + pitch_pid_integral_limit = 5.0 + + z_to_pitch_pid_kp = 10.0 + z_to_pitch_pid_kd = 0 + z_to_pitch_pid_ki = 0.1 + z_to_pitch_pid_integral_limit = 1.0 + + + //MAXIMUMS MAXRUDDER + maxrudder = 35 + maxthrust = 1525 + + // A non-zero SPEED_FACTOR overrides use of SPEED_PID + // Will set DESIRED_THRUST = DESIRED_SPEED * SPEED_FACTOR + speed_factor = 0 +} + +//------------------------------------------ +// pMarineViewer config block + +ProcessConfig = pMarineViewer +{ + AppTick = 4 + CommsTick = 4 + + tiff_file = forrest19.tif + //tiff_file = MIT_SP.tif + vehicles_name_mode = names+depth //+shortmode + + + set_pan_x = -90 + set_pan_y = -280 + zoom = 0.65 + vehicle_shape_scale = 1.5 + hash_delta = 50 + hash_shade = 0.22 + hash_viewable = true + + trails_point_size = 1 + + //op_vertex = x=-83, y=-47, lwidth=1,lcolor=yellow,looped=true,group=moa + //op_vertex = x=-46.4, y=-129.2, lwidth=1,lcolor=yellow,looped=true,group=moa + //op_vertex = x=94.6, y=-62.2, lwidth=1,lcolor=yellow,looped=true,group=moa + //op_vertex = x=58, y=20, lwidth=1,lcolor=yellow,looped=true,group=moa + + // Appcast configuration + appcast_height = 75 + appcast_width = 30 + appcast_viewable = true + appcast_color_scheme = indigo + nodes_font_size = xlarge + procs_font_size = xlarge + appcast_font_size = large + + // datum_viewable = true + // datum_size = 18 + // gui_size = small + + // left_context[survey-point] = DEPLOY=true + // left_context[survey-point] = MOOS_MANUAL_OVERRIDE=false + // left_context[survey-point] = RETURN=false + + right_context[return] = DEPLOY=true + right_context[return] = MOOS_MANUAL_OVERRIDE=false + right_context[return] = RETURN=false + + scope = RETURN + scope = WPT_STAT + scope = VIEW_SEGLIST + scope = VIEW_POINT + scope = VIEW_POLYGON + scope = MVIEWER_LCLICK + scope = MVIEWER_RCLICK + + button_one = START # uMission_action_cmd={"taskName":"east_waypt_survey","action":"start"} + //button_one = MOOS_MANUAL_OVERRIDE=false + button_two = STOP # START=false + //button_two = MOOS_MANUAL_OVERRIDE=true + button_three = FaultClear # ClearFalut = true + button_four = SendSecurityZone # SendSaftRules = true + + + action = MENU_KEY=deploy # DEPLOY = true # RETURN = false + action+ = MENU_KEY=deploy # MOOS_MANUAL_OVERRIDE=false + action = RETURN=true + action = UPDATES_RETURN=speed=1.4 +} + +//------------------------------------------ +// pNodeReporter config block + +ProcessConfig = pNodeReporter +{ + AppTick = 2 + CommsTick = 2 + + //platform_type = kayak + //更改显示形状为uuv + platform_type = UUV + platform_color = red + platform_length = 4 +} + +ProcessConfig = uTimerScript +{ + AppTick = 4 + CommsTick = 4 + + condition = DEPLOY = true + randvar = varname = RND_DEPTH, min=20, max=80, key=at_reset + event = var = DEPTH_UPDATE, val=depth=$[RND_DEPTH], time=120 + reset_max = nolimit reset_time = all-posted +} \ No newline at end of file diff --git a/src/pMotionControler/main.cpp b/src/pMotionControler/main.cpp new file mode 100644 index 0000000..ab9c11e --- /dev/null +++ b/src/pMotionControler/main.cpp @@ -0,0 +1,61 @@ +/* + * @Author: zjk 1553836110@qq.com + * @Date: 2023-10-12 09:52:06 + * @LastEditors: zjk 1553836110@qq.com + * @LastEditTime: 2023-10-24 15:11:21 + * @FilePath: /moos-ivp-extend/src/pMotionControler/main.cpp + * @Description: + * + * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved. + */ +#include +using namespace std; +#include"MOOS/libMOOS/Thirdparty/AppCasting/AppCastingMOOSApp.h" +// #include "VarDataPair.h" +#include"MotionControler.hpp" +#include +#include +#include "MBUtils.h" +#include "ColorParse.h" +// #include "MBUtils.h" +// #include "ColorParse.h" + +int main(int argc, char *argv[]) +{ + string mission_file; + string run_command = argv[0]; + + for(int i=1; i::const_iterator p; + for(p=config_params.begin(); p!=config_params.end(); p++) + { + string line = *p; + string param = tolower(biteStringX(line, '=')); + + // if(param == "yaw_pid_kp") + // return(true); + // else if(param == "yaw_pid_kd") + // return(true); + // else if(param == "yaw_pid_ki") + // return(true); + // else if(param == "yaw_pid_integral_limit") + // return(true); + // else if(param == "yaw_pid_ki_limit") + // return(true); + return true; + } + + return(false); +} + +bool pidControl::setParam(char n, double param, pidInc *pid_t) +{ + if(pid_t == NULL) + return false; + + switch (n) + { + case 'p': + pid_t->kp = param; + break; + case 'i': + pid_t->ki = param; + break; + case 'd': + pid_t->kd = param; + break; + default: + return false; + break; + } + + return true; + +} +int pidControl::setParam(string filePath) +{ + Json::Value paramList = getConfig(filePath); + if(paramList.empty()) + return 1; + if(paramList["speed"].empty() || paramList["pitch"].empty() + || paramList["depth"].empty() || paramList["pitch"].empty() + || paramList["speedCol"].empty() || paramList["depthCol"].empty() + || paramList["HeadingCol"].empty()) + return 2; //重要参数不全 + Json::Value param = paramList["speed"]; + if(!setParam(param, pid_speed)) + return 3; + RepList["speed-param"] = param; + param = paramList["heading"]; + if(!setParam(param, pid_heading)) + return 4; + RepList["heading-param"] = param; + param = paramList["pitch"]; + if(!setParam(param, pid_pitch)) + return 5; + RepList["pitch-param"] = param; + param = paramList["depth"]; + if(!setParam(param, pid_depth)) + return 6; + RepList["depth-param"] = param; + setSpeedControl(paramList["speedCol"].asBool()); + setDepthControl(paramList["depthCol"].asBool()); + setHeadingControl(paramList["HeadingCol"].asBool()); + //次要参数 + if(!paramList["dead_zone"].empty()) + { + dead_zone = paramList["dead_zone"].asDouble(); + RepList["dead_zone"] = dead_zone; + } + if(!paramList["const_thrust"].empty()) + { + const_thrust = paramList["const_thrust"].asDouble(); + RepList["const_thrust"] = const_thrust; + } + return 0; +} +bool pidControl::setParam(Json::Value param, pidInc &pid) +{ + if(param.empty()) + return false; + if(param["Kp"].empty() || param["Ki"].empty() || param["Kd"].empty()) + return false; + pid.kp = param["Kp"].asDouble(); + pid.ki = param["Ki"].asDouble(); + pid.kd = param["Kd"].asDouble(); + if(param["LimitDelta"].empty() || param["MaxOut"].empty() || param["MinOut"].empty()) + return false; + pid.limit_delta = param["LimitDelta"].asDouble(); + pid.max_out = param["MaxOut"].asDouble(); + pid.min_out = param["MinOut"].asDouble(); + return true; +} \ No newline at end of file diff --git a/src/pMotionControler/pidControl.hpp b/src/pMotionControler/pidControl.hpp new file mode 100644 index 0000000..67254c5 --- /dev/null +++ b/src/pMotionControler/pidControl.hpp @@ -0,0 +1,77 @@ +/* + * @Author: zjk 1553836110@qq.com + * @Date: 2023-10-16 15:14:26 + * @LastEditors: zjk 1553836110@qq.com + * @LastEditTime: 2023-11-02 18:03:14 + * @FilePath: /moos-ivp-pi/src/pMotionControler/pidControl.hpp + * @Description: + * + * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved. + */ +#ifndef _PIDCONTROL_H +#define _PIDCONTROL_H +#include"Controler.hpp" + +typedef struct +{ + double kp; + double ki; + double kd; + + double error_0; + double error_1; + double error_2; + + double limit_delta; + double max_out; + double min_out; + + double delta_output; + double output; +} pidInc; + + +class pidControl : public Controler +{ +private: + /* data */ + pidInc pid_speed; + pidInc pid_heading; + pidInc pid_pitch; + pidInc pid_depth; + + double current_error; + double last_error; + vector Error; + int Error_capacity; + +public: + pidControl(/* args */); + ~pidControl(){}; + + int step(); + + bool setParam(double p, double i, double d, double limitDelta, double max, double min, pidInc &pid); + bool setParam(char n, double param, pidInc *pid_t); + int setParam(string filePath); + bool setParam(Json::Value param, pidInc &pid); + + bool hasConfigSettings() const; + + double pidStep(double error, pidInc &pid); + //double picStep_p(double error, pidInc &pid); + + bool overrived(string svar); + + inline void pidClear(pidInc &pid) + { + pid.error_0 = 0; + pid.error_1 = 0; + pid.error_2 = 0; + pid.delta_output = 0; + pid.output = 0; + } + +}; + +#endif \ No newline at end of file diff --git a/src/pMotionControler/simMat.moos b/src/pMotionControler/simMat.moos new file mode 100644 index 0000000..f345908 --- /dev/null +++ b/src/pMotionControler/simMat.moos @@ -0,0 +1,260 @@ +//------------------------------------------------- +// NAME: M. Benjamin, MIT CSAIL +// FILE: alpha.moos +//------------------------------------------------- + +ServerHost = localhost +ServerPort = 9000 +Community = alpha +MOOSTimeWarp = 1 + +// Forest Lake +LatOrigin = 43.825300 +LongOrigin = -70.330400 + +// MIT Sailing Pavilion (use this one) +// LatOrigin = 42.358456 +// LongOrigin = -71.087589 + +//------------------------------------------ +// Antler configuration block +ProcessConfig = ANTLER +{ + MSBetweenLaunches = 200 + + Run = MOOSDB @ NewConsole = false + Run = pMarineViewer @ NewConsole = false + Run = uProcessWatch @ NewConsole = false + Run = pNodeReporter @ NewConsole = false + Run = pEmulator @ NewConsole = false + //Run = pLogger @ NewConsole = false + Run = pMotionControler @ NewConsole = false + Run = pTaskManger @ NewConsole = false + Run = pHelmIvP @ NewConsole = false +} +ProcessConfig = pHelmIvP +{ + AppTick = 4 + CommsTick = 4 + + behaviors = alpha.bhv + domain = course:0:359:360 + domain = speed:0:10:101 + domain = depth:0:100:101 + + park_on_allstop = false + //park_on_allstop = true + + +} +ProcessConfig = pTaskManger +{ + AppTick = 8 + CommsTick = 8 +} +ProcessConfig = pEmulator +{ + AppTick = 5 + CommsTick = 5 + matlab_host = 192.168.0.11 + matlab_port = 8085 + local_port = 8080 + prefix = NAV + + start_x = 10 + start_y = 9 + start_z = 1 + start_heading = 30 +} + +ProcessConfig = pLogger +{ + AppTick = 8 + CommsTick = 8 + + AsyncLog = true + + // For variables that are published in a bundle on their first post, + // explicitly declare their logging request + //Log = IVPHELM_LIFE_EVENT @ 0 NOSYNC + //Log = REPORT @ 0 NOSYNC + //Log = BHV_SETTINGS @ 0 NOSYNC + Log = OPREGION_RESET @ 0 NOSYNC + + LogAuxSrc = true + WildCardLogging = true + WildCardOmitPattern = *_STATUS + WildCardOmitPattern = DB_VARSUMMARY + WildCardOmitPattern = DB_RWSUMMARY + WildCardExclusionLog = true +} + +//------------------------------------------ +// uProcessWatch config block + +ProcessConfig = uProcessWatch +{ + AppTick = 4 + CommsTick = 4 + + watch_all = true + nowatch = uPokeDB* + nowatch = uQueryDB* + nowatch = uXMS* + nowatch = uMAC* +} + +//------------------------------------------ +// uSimMarineV22 config block +//------------------------------------------ +// pHelmIvP config block + +ProcessConfig = pHelmIvP +{ + AppTick = 4 + CommsTick = 4 + + behaviors = alpha.bhv + domain = course:0:359:360 + domain = speed:0:10:101 + domain = depth:0:100:101 + + park_on_allstop = false + //park_on_allstop = true + + +} + +//------------------------------------------ +// pMarinePID config block + +ProcessConfig = pMotionControler +{ + AppTick = 5 + CommsTick = 5 + + verbose = true + depth_control = true + + // SIM_INSTABILITY = 20 + + // Yaw PID controller + yaw_pid_kp = 10 + yaw_pid_kd = 0.0 + yaw_pid_ki = 0.01 + yaw_pid_integral_limit = 10 + + // Speed PID controller + speed_pid_kp = 20.0 + speed_pid_kd = 0.0 + speed_pid_ki = 1 + speed_pid_integral_limit = 100 + + maxpitch = 15 + maxelevator = 30 + + pitch_pid_kp = 1.5 + pitch_pid_kd = 0 + pitch_pid_ki = 1.0 + pitch_pid_integral_limit = 0 + + z_to_pitch_pid_kp = 0.12 + z_to_pitch_pid_kd = 0 + z_to_pitch_pid_ki = 0.004 + z_to_pitch_pid_integral_limit = 0.05 + + + //MAXIMUMS MAXRUDDER + maxrudder = 30 + maxthrust = 1525 + + // A non-zero SPEED_FACTOR overrides use of SPEED_PID + // Will set DESIRED_THRUST = DESIRED_SPEED * SPEED_FACTOR + speed_factor = 0 +} + +//------------------------------------------ +// pMarineViewer config block + +ProcessConfig = pMarineViewer +{ + AppTick = 4 + CommsTick = 4 + + tiff_file = forrest19.tif + //tiff_file = MIT_SP.tif + vehicles_name_mode = names+depth //+shortmode + + + set_pan_x = -90 + set_pan_y = -280 + zoom = 0.65 + vehicle_shape_scale = 1.5 + hash_delta = 50 + hash_shade = 0.22 + hash_viewable = true + + trails_point_size = 1 + + //op_vertex = x=-83, y=-47, lwidth=1,lcolor=yellow,looped=true,group=moa + //op_vertex = x=-46.4, y=-129.2, lwidth=1,lcolor=yellow,looped=true,group=moa + //op_vertex = x=94.6, y=-62.2, lwidth=1,lcolor=yellow,looped=true,group=moa + //op_vertex = x=58, y=20, lwidth=1,lcolor=yellow,looped=true,group=moa + + // Appcast configuration + appcast_height = 75 + appcast_width = 30 + appcast_viewable = true + appcast_color_scheme = indigo + nodes_font_size = xlarge + procs_font_size = xlarge + appcast_font_size = large + + // datum_viewable = true + // datum_size = 18 + // gui_size = small + + // left_context[survey-point] = DEPLOY=true + // left_context[survey-point] = MOOS_MANUAL_OVERRIDE=false + // left_context[survey-point] = RETURN=false + + right_context[return] = DEPLOY=true + right_context[return] = MOOS_MANUAL_OVERRIDE=false + right_context[return] = RETURN=false + + scope = RETURN + scope = WPT_STAT + scope = VIEW_SEGLIST + scope = VIEW_POINT + scope = VIEW_POLYGON + scope = MVIEWER_LCLICK + scope = MVIEWER_RCLICK + + button_one = START # START=true + //button_one = MOOS_MANUAL_OVERRIDE=false + button_two = STOP # START=false + //button_two = MOOS_MANUAL_OVERRIDE=true + button_three = FaultClear # ClearFalut = true + button_four = SendSecurityZone # SendSaftRules = true + + + action = MENU_KEY=deploy # DEPLOY = true # RETURN = false + action+ = MENU_KEY=deploy # MOOS_MANUAL_OVERRIDE=false + action = RETURN=true + action = UPDATES_RETURN=speed=1.4 +} + +//------------------------------------------ +// pNodeReporter config block + +ProcessConfig = pNodeReporter +{ + AppTick = 2 + CommsTick = 2 + + //platform_type = kayak + //更改显示形状为uuv + platform_type = UUV + platform_color = red + platform_length = 4 +} \ No newline at end of file diff --git a/src/pStateManagement/CMakeLists.txt b/src/pStateManagement/CMakeLists.txt new file mode 100644 index 0000000..bde6d92 --- /dev/null +++ b/src/pStateManagement/CMakeLists.txt @@ -0,0 +1,35 @@ +#-------------------------------------------------------- +# The CMakeLists.txt for: pStateManagement +# Author(s): chenlizhi +#-------------------------------------------------------- + +SET(SRC + StateManagement.cpp + StateManagement_Info.cpp + main.cpp +) + +FIND_LIBRARY(DUNE_LIB dune-core /usr/local/lib /usr/local/lib/DUNE) +FIND_PATH(DUNE_INCLUDE DUNE/IMC.hpp /usr/local/include /usr/local/include/DUNE) +include_directories(${DUNE_INCLUDE}) + +include_directories(${CMAKE_CURRENT_SOURCE_DIR}) + +#find_package (jsoncpp NO_MODULE REQUIRED) + +include_directories(/usr/include/jsoncpp/) +link_directories(/usr/local/lib/) + +ADD_EXECUTABLE(pStateManagement ${SRC}) + +TARGET_LINK_LIBRARIES(pStateManagement + ${MOOS_LIBRARIES} + ${CMAKE_DL_LIBS} + ${SYSTEM_LIBS} + ${DUNE_LIB} + mbutil + m + pthread + jsoncpp +) + diff --git a/src/pStateManagement/StateManagement.cpp b/src/pStateManagement/StateManagement.cpp new file mode 100644 index 0000000..787cf75 --- /dev/null +++ b/src/pStateManagement/StateManagement.cpp @@ -0,0 +1,154 @@ +/************************************************************/ +/* NAME: chenlizhi */ +/* ORGN: MIT */ +/* FILE: StateManagement.cpp */ +/* DATE: */ +/************************************************************/ + +#include +#include "MBUtils.h" +#include "StateManagement.h" +#include + +using namespace std; + +//--------------------------------------------------------- +// Constructor + +StateManagement::StateManagement() +{ +} + +//--------------------------------------------------------- +// Destructor + +StateManagement::~StateManagement() +{ +} + +//--------------------------------------------------------- +// Procedure: OnNewMail + +bool StateManagement::OnNewMail(MOOSMSG_LIST &NewMail) +{ + MOOSMSG_LIST::iterator p; + + for(p=NewMail.begin(); p!=NewMail.end(); p++) { + CMOOSMsg &msg = *p; + +#if 1 // Keep these around just for template + string key = msg.GetKey(); + string comm = msg.GetCommunity(); + double dval = msg.GetDouble(); + string sval = msg.GetString(); + string msrc = msg.GetSource(); + double mtime = msg.GetTime(); + bool mdbl = msg.IsDouble(); + bool mstr = msg.IsString(); +#endif + + Json::Value deviceState; + double manualState; + double missionState; + + if(key == "uManual_enable_cmd") + { + manualState = msg.GetDouble(); + } + if(key == "uMission_task_fb") + { + std::string missionStateString = msg.GetString(); + std::string errMission; + Json::Value missionStateData; + std::istringstream issm(missionStateString); + Json::CharReaderBuilder builderMission; + bool parsingResultMission = Json::parseFromStream(builderMission, issm, &missionStateData, &errMission); + if (!parsingResultMission) { + std::cerr << "Failed to parse JSON string." << std::endl; + return -1; + } + missionState = missionStateData["state"].asInt(); + } + + if(fabs(manualState - 1) < 1e-6) //manualState=1 + { + deviceState["opMode"] = opModeLists.external; + } + else if (fabs(manualState - 0) < 1e-6) //manualState=0 + { + if(missionState == 0) + { + deviceState["opMode"] = opModeLists.error; + } + if(missionState == 1) + { + deviceState["opMode"] = opModeLists.service; + } + else if((missionState == 3) ) + { + deviceState["opMode"] = opModeLists.maneuver; + } + } + + Json::StreamWriterBuilder builder; + std::string deviceStateString = Json::writeString(builder, deviceState); + Notify("uDevice_state_fb", deviceStateString); + } + + return(true); +} + +//--------------------------------------------------------- +// Procedure: OnConnectToServer + +bool StateManagement::OnConnectToServer() +{ + RegisterVariables(); + return(true); +} + +//--------------------------------------------------------- +// Procedure: Iterate() +// happens AppTick times per second + +bool StateManagement::Iterate() +{ + return(true); +} + +//--------------------------------------------------------- +// Procedure: OnStartUp() +// happens before connection is open + +bool StateManagement::OnStartUp() +{ + list sParams; + m_MissionReader.EnableVerbatimQuoting(false); + if(m_MissionReader.GetConfiguration(GetAppName(), sParams)) { + list::iterator p; + for(p=sParams.begin(); p!=sParams.end(); p++) { + string line = *p; + string param = tolower(biteStringX(line, '=')); + string value = line; + + if(param == "foo") { + //handled + } + else if(param == "bar") { + //handled + } + } + } + + RegisterVariables(); + return(true); +} + +//--------------------------------------------------------- +// Procedure: RegisterVariables + +void StateManagement::RegisterVariables() +{ + // Register("FOOBAR", 0); +} + diff --git a/src/pStateManagement/StateManagement.h b/src/pStateManagement/StateManagement.h new file mode 100644 index 0000000..5da5f97 --- /dev/null +++ b/src/pStateManagement/StateManagement.h @@ -0,0 +1,52 @@ +/************************************************************/ +/* NAME: chenlizhi */ +/* ORGN: MIT */ +/* FILE: StateManagement.h */ +/* DATE: */ +/************************************************************/ + +#ifndef StateManagement_HEADER +#define StateManagement_HEADER + +#include "MOOS/libMOOS/MOOSLib.h" + +class StateManagement : public CMOOSApp +{ + public: + StateManagement(); + ~StateManagement(); + + struct DeviceState + { + int opMode; // auv当前状态 + int errorCount; // 处于错误状态的子设备数量 + std::string errorEnts; // 处于错误状态的子设备列表 + }; + + struct OpModeLists // auv当前状态列表 + { + int service = 0; // 正常 + int calibration = 1; // 校准状态 + int error = 2; // 错误状态 + int maneuver = 3; // 正在执行使命任务 + int external = 4; // 外部控制状态(手操考虑用这个状态) + int boot = 5; // 只能在启动的 + }; + + protected: // Standard MOOSApp functions to overload + bool OnNewMail(MOOSMSG_LIST &NewMail); + bool Iterate(); + bool OnConnectToServer(); + bool OnStartUp(); + struct DeviceState deviceState; + struct OpModeLists opModeLists; + + protected: + void RegisterVariables(); + + private: // Configuration variables + + private: // State variables +}; + +#endif diff --git a/src/pStateManagement/StateManagement_Info.cpp b/src/pStateManagement/StateManagement_Info.cpp new file mode 100644 index 0000000..e5d5090 --- /dev/null +++ b/src/pStateManagement/StateManagement_Info.cpp @@ -0,0 +1,115 @@ +/****************************************************************/ +/* NAME: chenlizhi */ +/* ORGN: MIT Cambridge MA */ +/* FILE: StateManagement_Info.cpp */ +/* DATE: Dec 29th 1963 */ +/****************************************************************/ + +#include +#include +#include "StateManagement_Info.h" +#include "ColorParse.h" +#include "ReleaseInfo.h" + +using namespace std; + +//---------------------------------------------------------------- +// Procedure: showSynopsis + +void showSynopsis() +{ + blk("SYNOPSIS: "); + blk("------------------------------------ "); + blk(" The pStateManagement application is used for "); + blk(" "); + blk(" "); + blk(" "); + blk(" "); +} + +//---------------------------------------------------------------- +// Procedure: showHelpAndExit + +void showHelpAndExit() +{ + blk(" "); + blu("=============================================================== "); + blu("Usage: pStateManagement file.moos [OPTIONS] "); + blu("=============================================================== "); + blk(" "); + showSynopsis(); + blk(" "); + blk("Options: "); + mag(" --alias","= "); + blk(" Launch pStateManagement with the given process name "); + blk(" rather than pStateManagement. "); + mag(" --example, -e "); + blk(" Display example MOOS configuration block. "); + mag(" --help, -h "); + blk(" Display this help message. "); + mag(" --interface, -i "); + blk(" Display MOOS publications and subscriptions. "); + mag(" --version,-v "); + blk(" Display the release version of pStateManagement. "); + blk(" "); + blk("Note: If argv[2] does not otherwise match a known option, "); + blk(" then it will be interpreted as a run alias. This is "); + blk(" to support pAntler launching conventions. "); + blk(" "); + exit(0); +} + +//---------------------------------------------------------------- +// Procedure: showExampleConfigAndExit + +void showExampleConfigAndExit() +{ + blk(" "); + blu("=============================================================== "); + blu("pStateManagement Example MOOS Configuration "); + blu("=============================================================== "); + blk(" "); + blk("ProcessConfig = pStateManagement "); + blk("{ "); + blk(" AppTick = 4 "); + blk(" CommsTick = 4 "); + blk(" "); + blk("} "); + blk(" "); + exit(0); +} + + +//---------------------------------------------------------------- +// Procedure: showInterfaceAndExit + +void showInterfaceAndExit() +{ + blk(" "); + blu("=============================================================== "); + blu("pStateManagement INTERFACE "); + blu("=============================================================== "); + blk(" "); + showSynopsis(); + blk(" "); + blk("SUBSCRIPTIONS: "); + blk("------------------------------------ "); + blk(" NODE_MESSAGE = src_node=alpha,dest_node=bravo,var_name=FOO, "); + blk(" string_val=BAR "); + blk(" "); + blk("PUBLICATIONS: "); + blk("------------------------------------ "); + blk(" Publications are determined by the node message content. "); + blk(" "); + exit(0); +} + +//---------------------------------------------------------------- +// Procedure: showReleaseInfoAndExit + +void showReleaseInfoAndExit() +{ + showReleaseInfo("pStateManagement", "gpl"); + exit(0); +} + diff --git a/src/pStateManagement/StateManagement_Info.h b/src/pStateManagement/StateManagement_Info.h new file mode 100644 index 0000000..67342cb --- /dev/null +++ b/src/pStateManagement/StateManagement_Info.h @@ -0,0 +1,18 @@ +/****************************************************************/ +/* NAME: chenlizhi */ +/* ORGN: MIT Cambridge MA */ +/* FILE: StateManagement_Info.h */ +/* DATE: Dec 29th 1963 */ +/****************************************************************/ + +#ifndef StateManagement_INFO_HEADER +#define StateManagement_INFO_HEADER + +void showSynopsis(); +void showHelpAndExit(); +void showExampleConfigAndExit(); +void showInterfaceAndExit(); +void showReleaseInfoAndExit(); + +#endif + diff --git a/src/pStateManagement/main.cpp b/src/pStateManagement/main.cpp new file mode 100644 index 0000000..aa13369 --- /dev/null +++ b/src/pStateManagement/main.cpp @@ -0,0 +1,52 @@ +/************************************************************/ +/* NAME: chenlizhi */ +/* ORGN: MIT */ +/* FILE: main.cpp */ +/* DATE: */ +/************************************************************/ + +#include +#include "MBUtils.h" +#include "ColorParse.h" +#include "StateManagement.h" +#include "StateManagement_Info.h" + +using namespace std; + +int main(int argc, char *argv[]) +{ + string mission_file; + string run_command = argv[0]; + + for(int i=1; i (pParam); + return pMe->DoWork(); + } + + void SetCallback(bool (*pfn)(DUNE::IMC::Message * msg), void * pCallerParam) + { +UNUSED_PARAMETER(pCallerParam); + pfn_ = pfn; + //pParamCaller_ = pCallerParam; + + } + + bool SetPeriod(double PeriodSeconds) + { + if(PeriodSeconds<0) + return false; + Period_ = PeriodSeconds; + + return true; + } + + bool Stop() + { + Thread_.Stop(); + return true; + } + + + bool Start() + { + if(Thread_.IsThreadRunning()) + return false; + else + { + Thread_.Initialise(PeriodicTCPEventDispatch,this); + return Thread_.Start(); + } + } + + bool DoWork() + { + + double TimeLast = MOOS::Time(); + MOOS::BoostThisThread(); + sock_tcp_receive.bind(TCP_RECEIVE_PORT); + sock_tcp_receive.listen(5); + while(!Thread_.IsQuitRequested()) + { + double TimeScheduled=TimeLast+Period_; + size_t size = sock_tcp_receive.read(tcpReceiveBuffer, sizeof(tcpReceiveBuffer)/sizeof(uint8_t)); + if (size > 0) + { + DUNE::IMC::Message * msg = DUNE::IMC::Packet::deserialize(tcpReceiveBuffer, size); + + if(!(*pfn_)(msg)) + { + break; + } + } + + } + + return true; + } + + CMOOSThread Thread_; + bool (*pfn_)(DUNE::IMC::Message * msg); + void * pParamCaller_; + double Period_; + // DUNE::Network::UDPSocket sock_udp_send; + DUNE::Network::TCPSocket sock_tcp_receive; + uint8_t tcpReceiveBuffer[65535]; + CMOOSLock m_Lock; + // std::stack msgBuffer; +}; + +void PeriodicTCPEvent::SetCallback(bool (*pfn)(DUNE::IMC::Message * msg), void * pCallerParam) +{ + Impl_->SetCallback(pfn,pCallerParam); +} + +PeriodicTCPEvent::PeriodicTCPEvent(): Impl_(new PeriodicTCPEvent::Impl ) +{ + +} + +bool PeriodicTCPEvent::SetPeriod(double PeriodSeconds) +{ + return Impl_->SetPeriod(PeriodSeconds); +} + +bool PeriodicTCPEvent::Start() +{ + return Impl_->Start(); +} + +bool PeriodicTCPEvent::Stop() +{ + return Impl_->Stop(); +} + + +// bool PeriodicTCPEvent::Push(DUNE::IMC::Message* msg) +// { +// Impl_->msgBuffer.push(msg); +// } \ No newline at end of file diff --git a/src/pSurfaceSupportComm/PeriodicTCPEvent.h b/src/pSurfaceSupportComm/PeriodicTCPEvent.h new file mode 100644 index 0000000..0743328 --- /dev/null +++ b/src/pSurfaceSupportComm/PeriodicTCPEvent.h @@ -0,0 +1,39 @@ +#include "MOOS/libMOOS/Utils/MOOSUtilityFunctions.h" +#include "MOOS/libMOOS/Utils/ThreadPriority.h" + +#include "MOOS/libMOOS/Utils/MOOSThread.h" + +#include + + +#include +#include +#include +#include + +class PeriodicTCPEvent +{ +public: + PeriodicTCPEvent(); + /** + * this sets the callback you wish to have called + */ + void SetCallback(bool (*pfn)(DUNE::IMC::Message * msg), void * pCallerParam); + + /** + * Set the period of the event + */ + bool SetPeriod(double PeriodSeconds); + + /** start the service*/ + bool Start(); + + /** stop the service */ + bool Stop(); + +private: + class Impl; + Impl * Impl_; + + +}; \ No newline at end of file diff --git a/src/pSurfaceSupportComm/PeriodicUDPEvent.cpp b/src/pSurfaceSupportComm/PeriodicUDPEvent.cpp new file mode 100644 index 0000000..b7bd04a --- /dev/null +++ b/src/pSurfaceSupportComm/PeriodicUDPEvent.cpp @@ -0,0 +1,156 @@ + +#include "PeriodicUDPEvent.h" + +#define UDP_SEND_PORT 6001 +#define DEST_IP_ADDRESS "127.0.0.1" + +class PeriodicUDPEvent::Impl +{ +public: + + Impl() + { + pfn_ = DefaultCallback; + pParamCaller_= NULL; + Period_ = 1.0; + + + } + + static bool DefaultCallback(double TimeNow,double TimeLastRun,double TimeScheduled, void * pParamCaller) + { +UNUSED_PARAMETER(pParamCaller); + + std::cout.setf(std::ios::fixed); + + std::cout< (pParam); + return pMe->DoWork(); + } + + void SetCallback(bool (*pfn)(double TimeNow,double TimeLastRun,double TimeScheduled, void * pParamCaller), void * pCallerParam) + { +UNUSED_PARAMETER(pCallerParam); + pfn_ = pfn; + //pParamCaller_ = pCallerParam; + + } + + bool SetPeriod(double PeriodSeconds) + { + if(PeriodSeconds<0) + return false; + Period_ = PeriodSeconds; + + return true; + } + + bool Stop() + { + Thread_.Stop(); + return true; + } + + + bool Start() + { + if(Thread_.IsThreadRunning()) + return false; + else + { + Thread_.Initialise(PeriodicUDPEventDispatch,this); + return Thread_.Start(); + } + } + + bool DoWork() + { + + double TimeLast = MOOS::Time(); + MOOS::BoostThisThread(); + + while(!Thread_.IsQuitRequested()) + { + double TimeScheduled=TimeLast+Period_; + std::string addr = DEST_IP_ADDRESS; + int size = -1; + int type = -1; + m_Lock.Lock(); + if (!msgBuffer.empty()) + { + DUNE::Utils::ByteBuffer bb; + DUNE::IMC::Message *msg = msgBuffer.top(); + DUNE::IMC::Packet::serialize(msg, bb); + size = sock_udp_send.write(bb.getBuffer(), msg->getSerializationSize(), + DUNE::Network::Address(addr.c_str()), UDP_SEND_PORT); + type = msg->getId(); + // delete msg; + msgBuffer.pop(); + } + m_Lock.UnLock(); + + double TimeNow = MOOS::Time(); + + if(!(*pfn_)(MOOS::Time(), TimeLast,TimeScheduled,pParamCaller_)) + { + break; + } + + TimeLast = TimeNow; + + } + + return true; + } + + CMOOSThread Thread_; + bool (*pfn_)(double TimeNow,double TimeLastRun,double TimeScheduled, void* pParam); + void * pParamCaller_; + double Period_; + DUNE::Network::UDPSocket sock_udp_send; + uint8_t udpReceiveBuffer[65535]; + CMOOSLock m_Lock; + std::stack msgBuffer; +}; + +void PeriodicUDPEvent::SetCallback(bool (*pfn)(double Now,double LastRun,double Scheduled, void * pParamCaller), void * pCallerParam) +{ + Impl_->SetCallback(pfn,pCallerParam); +} + +PeriodicUDPEvent::PeriodicUDPEvent(): Impl_(new PeriodicUDPEvent::Impl ) +{ + +} + +bool PeriodicUDPEvent::SetPeriod(double PeriodSeconds) +{ + return Impl_->SetPeriod(PeriodSeconds); +} + +bool PeriodicUDPEvent::Start() +{ + return Impl_->Start(); +} + +bool PeriodicUDPEvent::Stop() +{ + return Impl_->Stop(); +} + + +bool PeriodicUDPEvent::Push(DUNE::IMC::Message* msg) +{ + Impl_->msgBuffer.push(msg); +} \ No newline at end of file diff --git a/src/pSurfaceSupportComm/PeriodicUDPEvent.h b/src/pSurfaceSupportComm/PeriodicUDPEvent.h new file mode 100644 index 0000000..a56458f --- /dev/null +++ b/src/pSurfaceSupportComm/PeriodicUDPEvent.h @@ -0,0 +1,42 @@ +#include "MOOS/libMOOS/Utils/MOOSUtilityFunctions.h" +#include "MOOS/libMOOS/Utils/ThreadPriority.h" + +#include "MOOS/libMOOS/Utils/MOOSThread.h" + +#include + + +#include +#include +#include +#include + +class PeriodicUDPEvent +{ +public: + PeriodicUDPEvent(); + /** + * this sets the callback you wish to have called + */ + // void SetCallback(bool (*pfn)(int type, int size), void * pCallerParam); + void SetCallback(bool (*pfn)(double Now,double LastRun,double Scheduled, void * pParamCaller), void * pCallerParam); + + /** + * Set the period of the event + */ + bool SetPeriod(double PeriodSeconds); + + /** start the service*/ + bool Start(); + + /** stop the service */ + bool Stop(); + + bool Push(DUNE::IMC::Message* msg); + +private: + class Impl; + Impl * Impl_; + + +}; \ No newline at end of file diff --git a/src/pSurfaceSupportComm/SurfaceSupportComm.cpp b/src/pSurfaceSupportComm/SurfaceSupportComm.cpp new file mode 100644 index 0000000..11d61dd --- /dev/null +++ b/src/pSurfaceSupportComm/SurfaceSupportComm.cpp @@ -0,0 +1,1349 @@ +/************************************************************/ +/* NAME: Xiaobin Zeng */ +/* ORGN: MIT */ +/* FILE: SurfaceSupportComm.cpp */ +/* DATE: */ +/************************************************************/ + +#include +#include "MBUtils.h" +#include "SurfaceSupportComm.h" +#include +#include + +#include +#include + +using namespace std; + +#define UDP_SEND_PORT 6001 +#define TCP_RECEIVE_PORT 8000 +#define TCP_SEND_FILE_PORT 8002 + +// #define DEST_IP_ADDRESS "10.25.0.230" //树莓派 +#define DEST_IP_ADDRESS "127.0.0.1" +//#define DEST_IP_ADDRESS "10.25.0.163" +//#define DEST_IP_ADDRESS "10.25.0.160" + +//--------------------------------------------------------- +// Constructor +SurfaceSupportComm::SurfaceSupportComm() +{ + header_src = 0x14; + header_src_ent = 62; + header_dst = 0; + header_dst_ent = 255; + + estimatedState.currentLon = 0; + estimatedState.currentLat = 0; + estimatedState.currentAltitude = 0; + estimatedState.referenceLon = 0; + estimatedState.referenceLat = 0; + estimatedState.referenceAltitude = 0; + estimatedState.offsetNorth = 0; + estimatedState.offsetEast = 0; + estimatedState.offsetDown = 0; + estimatedState.roll = 0; + estimatedState.pitch = 0; + estimatedState.yaw = 0; + estimatedState.linearVelocityNorth = 0; + estimatedState.linearVelocityEast = 0; + estimatedState.linearVelocityDown = 0; + estimatedState.height = 0; + estimatedState.depth = 0; + + deviceStatus.batteryVoltage = 0; + deviceStatus.batteryLevel = 0; + deviceStatus.batteryTemp = 0; + deviceStatus.controllerTemp = 0; + deviceStatus.thrustRpm = 0; + deviceStatus.lightEnable = 0; + deviceStatus.throwingLoadEnable = 0; + deviceStatus.dvlStatus = 0; + + tcpSockFD = -1; + tcpBindRet = -1; + tcpListenRet = -1; + tcpSockConnect = -1; + c_block_size = 128 * 1024; +} + +//--------------------------------------------------------- +// Destructor +SurfaceSupportComm::~SurfaceSupportComm() +{ +} + + +// Procedure: OnNewMail +bool SurfaceSupportComm::OnNewMail(MOOSMSG_LIST &NewMail) +{ + // AppCastingMOOSApp::OnNewMail(NewMail); + MOOSMSG_LIST::iterator p; + + for(p=NewMail.begin(); p!=NewMail.end(); p++) + { + CMOOSMsg &msg = *p; + + string key = msg.GetKey(); + string comm = msg.GetCommunity(); + double dval = msg.GetDouble(); + string sval = msg.GetString(); + string msrc = msg.GetSource(); + double mtime = msg.GetTime(); + bool mdbl = msg.IsDouble(); + bool mstr = msg.IsString(); + + if(key == "uDevice_monitor_fb") + { + std::string estimatedStateString = msg.GetString(); + std::string err; + Json::Value estimatedStateData; + std::istringstream iss(estimatedStateString); + Json::CharReaderBuilder builder; + bool parsingResult = Json::parseFromStream(builder, iss, &estimatedStateData, &err); + if (parsingResult) + { + estimatedState.currentLon = estimatedStateData["currentLon"].asFloat(); + estimatedState.currentLat = estimatedStateData["currentLat"].asFloat(); + estimatedState.currentAltitude = estimatedStateData["currentAltitude"].asFloat(); + estimatedState.referenceLon = estimatedStateData["referenceLon"].asFloat(); + estimatedState.referenceLat = estimatedStateData["referenceLat"].asFloat(); + estimatedState.referenceAltitude = estimatedStateData["referenceAltitude"].asFloat(); + estimatedState.offsetNorth = estimatedStateData["north"].asFloat(); + estimatedState.offsetEast = estimatedStateData["east"].asFloat(); + estimatedState.offsetDown = estimatedStateData["depth"].asFloat(); + estimatedState.roll = estimatedStateData["roll"].asFloat(); + estimatedState.pitch = estimatedStateData["pitch"].asFloat(); + estimatedState.yaw = estimatedStateData["yaw"].asFloat(); //弧度 + estimatedState.linearVelocityNorth = estimatedStateData["dvlVX"].asFloat(); + estimatedState.linearVelocityEast = estimatedStateData["dvlVY"].asFloat(); + estimatedState.linearVelocityDown = estimatedStateData["dvlVZ"].asFloat(); + estimatedState.height = estimatedStateData["height"].asFloat(); + estimatedState.depth = estimatedStateData["depth"].asFloat(); + + deviceStatus.batteryVoltage = estimatedStateData["batteryVoltage"].asUInt(); + deviceStatus.batteryLevel = estimatedStateData["batteryLevel"].asUInt(); + deviceStatus.batteryTemp = estimatedStateData["batteryTemp"].asFloat(); + deviceStatus.thrustRpm = estimatedStateData["rpm"].asInt(); + deviceStatus.lightEnable = estimatedStateData["lightEnable"].asUInt(); + deviceStatus.throwingLoadEnable = estimatedStateData["throwingLoadEnable"].asUInt(); + deviceStatus.dvlStatus = estimatedStateData["dvlStatus"].asUInt(); + } + } + if(key == "uMission_task_fb") + { + missionStatusString = msg.GetString(); + } + if(key == "CPUTemperature") + { + if (msg.GetString() != "Failed") + { + deviceStatus.controllerTemp = atof(msg.GetString().c_str()); + } + } + + } + + return(true); +} + +//--------------------------------------------------------- +// Procedure: OnConnectToServer +bool SurfaceSupportComm::OnConnectToServer() +{ + RegisterVariables(); + return(true); +} + +bool SurfaceSupportComm::udpSendToServer(DUNE::IMC::Message * msg, std::string addr, int port) +{ + + DUNE::Utils::ByteBuffer bb; + try { + DUNE::IMC::Packet::serialize(msg, bb); + return sock_udp_send.write(bb.getBuffer(), msg->getSerializationSize(), + DUNE::Network::Address(addr.c_str()), port); + } + catch (std::runtime_error& e) + { + MOOSTrace ("ERROR sending %s to %s:%d: %s\n", msg->getName(), addr.c_str(), port, e.what()); + return false; + } + return true; +} + +bool SurfaceSupportComm::Iterate() +{ + // AppCastingMOOSApp::Iterate(); + + DUNE::IMC::Announce announceMsg; + announceMsg.setTimeStamp(); + announceMsg.setSource(header_src); + announceMsg.setSourceEntity(header_src_ent); + announceMsg.setDestination(header_dst); + announceMsg.setDestinationEntity(header_dst_ent); + announceMsg.sys_name.assign(vehicleName); + announceMsg.sys_type = 2; + // announceMsg.owner = 65535; + announceMsg.lat = estimatedState.currentLat * M_PI / 180; + announceMsg.lon = estimatedState.currentLon * M_PI / 180; + announceMsg.height = estimatedState.depth; + // announceMsg.services.assign("dune://0.0.0.0/version/2022.04.0;imc+info://0.0.0.0/version/5.4.30-8be592a;imc+udp://127.0.0.1:6001/;imc+tcp://127.0.0.1:8000/"); + announceMsg.services.assign("dune://0.0.0.0/version/2022.04.0;imc+info://0.0.0.0/version/5.4.30-8be592a;imc+tcp://10.25.0.230:8000/"); + //announceMsg.services.assign("dune://0.0.0.0/version/2022.04.0;imc+info://0.0.0.0/version/5.4.30-8be592a;imc+udp://10.25.0.160:6001/;imc+tcp://10.25.0.160:8000/"); + + + DUNE::IMC::PlanControlState planControlStateMsg; + planControlStateMsg.setTimeStamp(); + planControlStateMsg.setSource(header_src); + planControlStateMsg.setSourceEntity(header_src_ent); + planControlStateMsg.setDestination(header_dst); + planControlStateMsg.setDestinationEntity(header_dst_ent); + + DUNE::IMC::VehicleState vehicleStateMsg; //用于上报故障信息或正常状态 + vehicleStateMsg.setTimeStamp(); + vehicleStateMsg.setSource(header_src); + vehicleStateMsg.setSourceEntity(header_src_ent); + vehicleStateMsg.setDestination(header_dst); + vehicleStateMsg.setDestinationEntity(header_dst_ent); + + if (!missionStatusString.empty()) + { + std::string err; + Json::Value missionStatusObject; + std::istringstream iss(missionStatusString); + Json::CharReaderBuilder builder; + bool parsingResult = Json::parseFromStream(builder, iss, &missionStatusObject, &err); + if (parsingResult) + { + if (missionStatusObject["state"].asInt() == FAULT) + { + planControlStateMsg.state == DUNE::IMC::VehicleState::OperationModeEnum::VS_ERROR; + } + else if (missionStatusObject["state"].asInt() == UNRUN) + { + planControlStateMsg.state == DUNE::IMC::VehicleState::OperationModeEnum::VS_SERVICE; + } + else if (missionStatusObject["state"].asInt() == MANUAL) + { + planControlStateMsg.state == DUNE::IMC::VehicleState::OperationModeEnum::VS_EXTERNAL; + } + else if (missionStatusObject["state"].asInt() == RUN) + { + planControlStateMsg.state == DUNE::IMC::VehicleState::OperationModeEnum::VS_MANEUVER; + } + else + { + planControlStateMsg.state == DUNE::IMC::VehicleState::OperationModeEnum::VS_ERROR; + } + planControlStateMsg.plan_id = missionStatusObject["taskName"].asString(); //子任务名称,对应PlanDB info的[taskName] + planControlStateMsg.plan_eta = -1; //缺省值 + planControlStateMsg.plan_progress = -1; //缺省值 + planControlStateMsg.man_id = missionStatusObject["destName"].asString(); //对应PlanDB info的[points][name] + planControlStateMsg.man_type = 450; //未知 + planControlStateMsg.man_eta = -1; //缺省值 + planControlStateMsg.last_outcome = missionStatusObject["errorCode"].asUInt(); + + + vehicleStateMsg.op_mode = planControlStateMsg.state; + vehicleStateMsg.error_count = 0; + vehicleStateMsg.error_ents = ""; + vehicleStateMsg.maneuver_type = 0xffff; + vehicleStateMsg.maneuver_stime = -1; + vehicleStateMsg.maneuver_eta = 65535; + vehicleStateMsg.control_loops = DUNE::IMC::CLoopsMask::CL_NONE; + vehicleStateMsg.flags = 0; + vehicleStateMsg.last_error = ""; + vehicleStateMsg.last_error_time = -1; + } + } + else + { + planControlStateMsg.state = DUNE::IMC::PlanControlState::StateEnum::PCS_READY; + planControlStateMsg.plan_id = ""; //子任务名称,对应PlanDB info的[taskName] + planControlStateMsg.plan_eta = -1; //缺省值 + planControlStateMsg.plan_progress = -1; //缺省值 + planControlStateMsg.man_id = ""; //对应PlanDB info的[points][name] + planControlStateMsg.man_type = 450; //未知 + planControlStateMsg.man_eta = -1; //缺省值 + planControlStateMsg.last_outcome = DUNE::IMC::PlanControlState::LastPlanOutcomeEnum::LPO_NONE; + + vehicleStateMsg.op_mode = DUNE::IMC::VehicleState::OperationModeEnum::VS_SERVICE; + vehicleStateMsg.error_count = 0; + vehicleStateMsg.error_ents = ""; + vehicleStateMsg.maneuver_type = 0xffff; + vehicleStateMsg.maneuver_stime = -1; + vehicleStateMsg.maneuver_eta = 65535; + vehicleStateMsg.control_loops = DUNE::IMC::CLoopsMask::CL_NONE; + vehicleStateMsg.flags = 0; + vehicleStateMsg.last_error = ""; + vehicleStateMsg.last_error_time = -1; + } + + DUNE::IMC::MsgList equipmentMsgList; + equipmentMsgList.setTimeStamp(); + equipmentMsgList.setSource(header_src); + equipmentMsgList.setSourceEntity(header_src_ent); + equipmentMsgList.setDestination(header_dst); + equipmentMsgList.setDestinationEntity(header_dst_ent); + retrieveEntityStatus(equipmentMsgList); + + DUNE::IMC::EstimatedState estimatedStateMsg; + estimatedStateMsg.setTimeStamp(); + estimatedStateMsg.setSource(header_src); + estimatedStateMsg.setSourceEntity(header_src_ent); + estimatedStateMsg.setDestination(header_dst); + estimatedStateMsg.setDestinationEntity(header_dst_ent); + estimatedStateMsg.lat = estimatedState.currentLat * M_PI / 180; + estimatedStateMsg.lon = estimatedState.currentLon * M_PI / 180; + estimatedStateMsg.depth = estimatedState.depth; + estimatedStateMsg.height = estimatedState.height; + estimatedStateMsg.phi = estimatedState.roll; //x axis radian + estimatedStateMsg.theta = estimatedState.pitch; //y axis radian + + float yawTemp = estimatedState.yaw; + if ((yawTemp >= 0) && (yawTemp <= M_PI)) + { + estimatedStateMsg.psi = yawTemp; + } + + if ((yawTemp > M_PI) && (yawTemp <= 2 * M_PI)) + { + estimatedStateMsg.psi = -1 * (2 * M_PI - yawTemp); + } + + estimatedStateMsg.vx = estimatedState.linearVelocityNorth; //x axis + estimatedStateMsg.vy = estimatedState.linearVelocityEast; //y axis + estimatedStateMsg.vz = estimatedState.linearVelocityDown; //z axis + + double TimeScheduled = TimeLast + 0.5; + // double TimeScheduled = TimeLast + 1.0; + int MillisecondsSleep = static_cast( ( TimeScheduled-MOOS::Time() )*1000.0 ); + if(MillisecondsSleep>0) + { + MOOS::Pause(MillisecondsSleep); + } + sendCount++; + + if (sendCount % 2 == 0) + { + // udpEvent.Push(static_cast(&announceMsg)); + udpSendToServer(&announceMsg, DEST_IP_ADDRESS, UDP_SEND_PORT); + sendCount = 0; + } + // udpEvent.Push(static_cast(&planControlStateMsg)); + // udpEvent.Push(static_cast(&equipmentMsgList)); + // udpEvent.Push(static_cast(&estimatedStateMsg)); + // udpEvent.Push(static_cast(&vehicleStateMsg)); + udpSendToServer(&planControlStateMsg, DEST_IP_ADDRESS, UDP_SEND_PORT); + udpSendToServer(&equipmentMsgList, DEST_IP_ADDRESS, UDP_SEND_PORT); + udpSendToServer(&estimatedStateMsg, DEST_IP_ADDRESS, UDP_SEND_PORT); + udpSendToServer(&vehicleStateMsg, DEST_IP_ADDRESS, UDP_SEND_PORT); + + double TimeNow = MOOS::Time(); + TimeLast = TimeNow; + + tcpReceiveFromClient(recv_buf, sizeof(recv_buf)/sizeof(char), 0.005); + + // AppCastingMOOSApp::PostReport(); + + return(true); +} + +// double dfMean = 0; +// double dfVar = 0; +// unsigned int N = 0; + +// bool periodicCallback(double TimeNow,double TimeLastRun,double TimeScheduled, void * /*pParamCaller*/) +// { +// //lets wait a while +// MOOSPause(2); + +// //some stats +// double dfE = TimeNow-TimeScheduled; +// N=N+1; +// dfMean = dfMean*(N-1)/N+(dfE)/N; + +// if(N>1) +// dfVar = dfE/(N-1)+(N-1)/N*dfVar; + +// std::cout.setf(std::ios::fixed); +// std::cout<getId(); +// #if 1 +// if (type == DUNE::IMC::Announce::getIdStatic()) +// { +// DUNE::IMC::Announce * msg = dynamic_cast(message); +// // printf("server receive %s: %lf, %lf, %lf, %lf\n", \ +// // msg->getName(), msg->getTimeStamp(), msg->lat, msg->lon, msg->height); +// printf("server receive %s: %lf, %lf, %lf, %lf\n", \ +// msg->getName(), msg->getTimeStamp(), msg->lat*180/M_PI, msg->lon*180/M_PI, msg->height); +// } +// #endif +// if (type == DUNE::IMC::PlanDB::getIdStatic()) +// { +// DUNE::IMC::PlanDB * msg = dynamic_cast(message); +// printf("server receive %s: %lf, %d, %d\n", msg->getName(), msg->getTimeStamp(), msg->type, msg->op); +// printf("%s\n", msg->info.c_str()); +// } +// #if 1 +// if (type == DUNE::IMC::PlanControlState::getIdStatic()) +// { +// DUNE::IMC::PlanControlState * msg = dynamic_cast(message); + +// printf("server receive %s: %lf, %s, %s, %u\n", \ +// msg->getName(), msg->getTimeStamp(), msg->plan_id.c_str(), msg->man_id.c_str(), msg->state); +// } +// if (type == DUNE::IMC::MsgList::getIdStatic()) +// { +// DUNE::IMC::MsgList * msgList = dynamic_cast(message); +// printf("server receive %s: %lf\n", msgList->getName(), msgList->getTimeStamp()); +// DUNE::IMC::MessageList::const_iterator iter1 = msgList->msgs.begin(); +// for (; iter1 != msgList->msgs.end(); ++iter1) +// { +// DUNE::IMC::EntityParameters *entityParameter = static_cast(*iter1); +// DUNE::IMC::MessageList::const_iterator iter2 = entityParameter->params.begin(); +// for (; iter2 != entityParameter->params.end(); ++iter2) +// { +// DUNE::IMC::EntityParameter *subEntityParameter = static_cast(*iter2); +// std::cout << entityParameter->name << ": " << subEntityParameter->name << ", " << subEntityParameter->value << std::endl; +// } +// } +// } +// if (type == DUNE::IMC::EstimatedState::getIdStatic()) +// { +// DUNE::IMC::EstimatedState * msg = dynamic_cast(message); +// // printf("server receive %s: %lf, (%f, %f, %f), (%f, %f, %f)\n", +// // msg->getName(), msg->getTimeStamp(), +// // msg->lat, msg->lon, msg->depth, +// // msg->phi, msg->theta, msg->psi); +// printf("server receive %s: %lf, (%f, %f, %f), (%f, %f, %f)\n", +// msg->getName(), msg->getTimeStamp(), +// msg->lat*180/M_PI, msg->lon*180/M_PI, msg->depth*180/M_PI, +// msg->phi*180/M_PI, msg->theta*180/M_PI, msg->psi*180/M_PI); +// } +// if (type == DUNE::IMC::VehicleState::getIdStatic()) +// { +// DUNE::IMC::VehicleState * msg = dynamic_cast(message); +// printf("server receive %s: %lf, %u\n", +// msg->getName(), msg->getTimeStamp(), msg->op_mode); +// } +// if (type == DUNE::IMC::PlanControl::getIdStatic()) +// { +// DUNE::IMC::PlanControl * msg = dynamic_cast(message); +// printf("server receive %s: %lf, %u,\n", +// msg->getName(), msg->getTimeStamp(), msg->type, msg->plan_id.c_str()); +// } +// #endif +// return true; +// } + +int SurfaceSupportComm::retrieveEntityStatus(DUNE::IMC::MsgList& equipmentMsgList) +{ + int result = -1; + + DUNE::IMC::EntityParameters paramBattery; + paramBattery.name = "Battery"; + getEntityStatus(paramBattery, "Voltage", deviceStatus.batteryVoltage); + getEntityStatus(paramBattery, "FuelLevel", deviceStatus.batteryLevel); + getEntityStatus(paramBattery, "Temp", deviceStatus.batteryTemp); + equipmentMsgList.msgs.push_back(paramBattery); + + DUNE::IMC::EntityParameters paramController; + paramController.name = "Controller"; + getEntityStatus(paramController, "Temp", deviceStatus.controllerTemp); + equipmentMsgList.msgs.push_back(paramController); + + DUNE::IMC::EntityParameters paramThrust; + paramThrust.name = "Thrust"; + getEntityStatus(paramThrust, "Rpm", deviceStatus.thrustRpm); + equipmentMsgList.msgs.push_back(paramThrust); + + DUNE::IMC::EntityParameters paramDVL; + paramDVL.name = "DVL"; + getEntityStatus(paramDVL, "Status", deviceStatus.dvlStatus); //取值范围{0, 1} + equipmentMsgList.msgs.push_back(paramDVL); + + DUNE::IMC::EntityParameters paramIndicatorLight; + paramIndicatorLight.name = "IndicatorLight"; + getEntityStatus(paramIndicatorLight, "Status", deviceStatus.lightEnable); //取值范围{0, 1} + equipmentMsgList.msgs.push_back(paramIndicatorLight); + + DUNE::IMC::EntityParameters paramThrowingLoad; + paramThrowingLoad.name = "ThrowingLoad"; + getEntityStatus(paramThrowingLoad, "Status", deviceStatus.throwingLoadEnable ); //取值范围{0, 1} + equipmentMsgList.msgs.push_back(paramThrowingLoad); + + result = 0; + return result; +} + +template +inline int SurfaceSupportComm::getEntityStatus(DUNE::IMC::EntityParameters& entityParameter, std::string name, Type& value) +{ + int result = -1; + + DUNE::IMC::EntityParameter subMsg; + subMsg.name = name; + std::stringstream ss; + ss << value; + subMsg.value = ss.str(); + ss.clear(); + ss.str(""); + entityParameter.params.push_back(subMsg); + + result = 0; + return result; + +} + +void SurfaceSupportComm::tcpReceiveFromClient(char* buf, unsigned int cap, double timeout) +{ + // Poll for connections and client data + if (!m_poll.poll(timeout)) + return; + + // Check for new clients. + if (m_poll.wasTriggered(sock_tcp_receive)) + acceptNewClient(); + + // Check for client data + handleClients(buf, cap); +} + +void SurfaceSupportComm::tcpSendToClient(char* buf, unsigned int cap) +{ + ClientList::iterator itr = m_clients.begin(); + + while (itr != m_clients.end()) + { + try + { + itr->socket->write(buf, cap); + } + catch (std::runtime_error& e) + { + closeConnection(*itr, e); + itr = m_clients.erase(itr); + continue; + } + ++itr; + } +} + +void SurfaceSupportComm::acceptNewClient(void) +{ + Client c; + c.socket = 0; + try + { + c.socket = sock_tcp_receive.accept(&c.address, &c.port); + c.socket->setKeepAlive(true); + c.socket->setNoDelay(true); + c.socket->setReceiveTimeout(5); + c.socket->setSendTimeout(5); + m_poll.add(*c.socket); + m_clients.push_back(c); + } + catch (std::runtime_error& e) + { + if (c.socket) + delete c.socket; + } +} + +void SurfaceSupportComm::handleClients(char* buf, unsigned int cap) +{ + // Check for new data from clients. + ClientList::iterator itr = m_clients.begin(); + while (itr != m_clients.end()) + { + if (!m_poll.wasTriggered(*itr->socket)) + { + ++itr; + continue; + } + + int n; + + try + { + n = itr->socket->read(buf, cap); + } + catch (std::runtime_error& e) + { + closeConnection(*itr, e); + itr = m_clients.erase(itr); + continue; + } + + if (n > 0) + { + DUNE::IMC::Message * m = DUNE::IMC::Packet::deserialize((uint8_t *)buf, cap); + processMessage(m); + free(m); + } + ++itr; + } +} + +void SurfaceSupportComm::processMessage(DUNE::IMC::Message * message) +{ + int type = message->getId(); + if (type == DUNE::IMC::PlanDB::getIdStatic()) + { + DUNE::IMC::PlanDB * msg = dynamic_cast(message); + printf("server receive %s: %lf, %u, %u, %s\n", \ + msg->getName(), msg->getTimeStamp(), msg->type, msg->op, msg->plan_id.c_str()); + if (msg->type == DUNE::IMC::PlanDB::DBT_REQUEST && msg->op == DUNE::IMC::PlanDB::DBOP_SET) + { + std::string behaviorSpecString = msg->info; + std::string err; + Json::Value behaviorSpecData; + std::istringstream iss(behaviorSpecString); + Json::CharReaderBuilder builder; + bool parsingResult = Json::parseFromStream(builder, iss, &behaviorSpecData, &err); + if (!parsingResult) { + std::cerr << "Failed to parse JSON string." << std::endl; + return; + } + + behaviorSpecData["boardStamp"] = MOOS::Time(); + BatchConvertCoordinate(behaviorSpecData); + + std::string queryMemberName = behaviorSpecData["taskName"].asString(); + struct stat info; + if (stat(planConfigPath.c_str(), &info) != 0) + { + Json::Value saveJsonValue; + saveJsonValue[queryMemberName] = behaviorSpecData; + Json::StreamWriterBuilder builder; + std::ofstream ofs; + ofs.open(planConfigPath, std::ios::out); + ofs << Json::writeString(builder, saveJsonValue) << std::endl; + ofs.close(); + } + else + { + std::ifstream ifs; + ifs.open(planConfigPath, std::ios::in); + Json::Reader taskConfigureReader; + Json::Value tempJsonValue; + taskConfigureReader.parse(ifs, tempJsonValue); + ifs.close(); + + Json::StreamWriterBuilder builder; + tempJsonValue[queryMemberName] = behaviorSpecData; + std::ofstream ofs; + ofs.open(planConfigPath, std::ios::out); + ofs << Json::writeString(builder, tempJsonValue) << std::endl; + ofs.close(); + } + std::stringstream ss; + ss << std::fixed << std::setprecision(6) + << "PlanDB Set" << ":" + << MOOS::Time() << "," + << behaviorSpecData["taskName"].asString(); + Notify("uClient_plandbSet_log", ss.str()); + } + if (msg->type == DUNE::IMC::PlanDB::DBT_REQUEST && msg->op == DUNE::IMC::PlanDB::DBOP_GET_STATE) + { + std::ifstream ifs; + ifs.open(planConfigPath, std::ios::in); + Json::Reader taskConfigureReader; + Json::Value inputJsonValue; + taskConfigureReader.parse(ifs, inputJsonValue); + ifs.close(); + + int taskCount = inputJsonValue.size(); + std::vector taskList = inputJsonValue.getMemberNames(); + Json::Value outputJsonValue; + for (int i=0; i(message); + printf("server receive %s: %lf\n", msg->getName(), msg->getTimeStamp()); + DUNE::IMC::MessageList::const_iterator iter = msg->params.begin(); + std::stringstream ss2; + ss2 << std::fixed << std::setprecision(6) + << "SetEntityParameters" << ":" + << MOOS::Time(); + for(; iter < msg->params.end(); iter++) + { + DUNE::IMC::EntityParameter *subEntityParameter = static_cast(*iter); + + std::string err; + + Json::Value parameterValue; + std::istringstream iss(subEntityParameter->value); + Json::CharReaderBuilder builder; + bool parsingResult = Json::parseFromStream(builder, iss, ¶meterValue, &err); + if (!parsingResult) { + std::cerr << "Failed to parse JSON string." << std::endl; + return; + } + + std::string parentName = msg->name; + std::string childName = subEntityParameter->name; + std::string dataType = parameterValue["type"].asString(); + std::string dataValueTemp = parameterValue["value"].asString(); + if (dataType == "float") + { + std::stringstream ss(dataValueTemp); + float dataValue; + ss >> dataValue; + printf("%s, %s: %s, %f\n", parentName.c_str(), childName.c_str(), dataType.c_str(), dataValue); + } + else if (dataType == "bool") + { + std::stringstream ss(dataValueTemp); + bool dataValue; + ss >> dataValue; + printf("%s, %s: %s, %d\n", parentName.c_str(), childName.c_str(), dataType.c_str(), dataValue); + } + else if (dataType == "int") + { + std::stringstream ss(dataValueTemp); + int dataValue; + ss >> dataValue; + printf("%s, %s: %s, %d\n", parentName.c_str(), childName.c_str(), dataType.c_str(), dataValue); + } + else + { + std::stringstream ss(dataValueTemp); + std::string dataValue; + ss >> dataValue; + printf("%s, %s: %s, %s\n", parentName.c_str(), childName.c_str(), dataType.c_str(), dataValue.c_str()); + } + ss2 << "," << parentName << "," << childName << "," << dataValueTemp; + } + Notify("uClient_parameterSet_log", ss2.str()); + } + if (type == DUNE::IMC::PlanControl::getIdStatic()) + { + DUNE::IMC::PlanControl * msg = dynamic_cast(message); + printf("server receive %s: %lf, %s\n", msg->getName(), msg->getTimeStamp(), msg->plan_id.c_str()); + if (msg->type == DUNE::IMC::PlanControl::TypeEnum::PC_REQUEST) + { + std::string action = ""; + if (msg->op == DUNE::IMC::PlanControl::OperationEnum::PC_START) + { + action = "start"; + } + if (msg->op == DUNE::IMC::PlanControl::OperationEnum::PC_STOP) + { + action = "stop"; + } + + Json::Value outputTaskValue; + outputTaskValue["taskName"] = msg->plan_id; + outputTaskValue["action"] = action; + Json::StreamWriterBuilder builder2; + std::string outputTaskString = Json::writeString(builder2, outputTaskValue); + if (action == "start") + { + std::ifstream ifs; + ifs.open(planConfigPath, std::ios::in); + Json::Reader taskConfigureReader; + Json::Value tempJsonValue; + taskConfigureReader.parse(ifs, tempJsonValue); + ifs.close(); + float originAlt = tempJsonValue[msg->plan_id]["origin"]["altitude"].asFloat(); + float originLat = tempJsonValue[msg->plan_id]["origin"]["lat"].asFloat(); + float originLon = tempJsonValue[msg->plan_id]["origin"]["lon"].asFloat(); + Json::Value outputOrginValue; + outputOrginValue["alt"] = originAlt; + outputOrginValue["lat"] = originLat; + outputOrginValue["lon"] = originLon; + outputOrginValue["task"] = msg->plan_id; + Json::StreamWriterBuilder builder1; + std::string outputOriginString = Json::writeString(builder1, outputOrginValue); + Notify("uMission_origin_cmd", outputOriginString); + MOOS::Pause(2000); + Notify("uMission_action_cmd", outputTaskString); + } + if (action == "stop") + { + Notify("uMission_action_cmd", outputTaskString); + } + std::stringstream ss; + ss << std::fixed << std::setprecision(6) + << "PlanControl" << ":" + << MOOS::Time() << "," + << msg->plan_id << "," + << action; + Notify("uClient_planControl_log", ss.str()); + } + } + if (type == DUNE::IMC::VehicleCommand::getIdStatic()) + { + DUNE::IMC::VehicleCommand * msg = dynamic_cast(message); + printf("server receive %s: %lf, %u, %u\n", msg->getName(), msg->getTimeStamp(), msg->type, msg->command); + if (msg->type == DUNE::IMC::VehicleCommand::TypeEnum::VC_REQUEST) + { + if (msg->command == DUNE::IMC::VehicleCommand::CommandEnum::VC_EXEC_MANEUVER) + { + Notify("uManual_enable_cmd", (double)msg->command); + } + if (msg->command == DUNE::IMC::VehicleCommand::CommandEnum::VC_STOP_MANEUVER) + { + Notify("uManual_enable_cmd", (double)msg->command); + } + } + std::stringstream ss; + ss << std::fixed << std::setprecision(6) + << "VehicleCommand" << ":" + << MOOS::Time() << "," + << (int)msg->command; + Notify("uClient_manualEnable_log", ss.str()); + } + if (type == DUNE::IMC::RemoteActions::getIdStatic()) + { + DUNE::IMC::RemoteActions * msg = dynamic_cast(message); + printf("server receive %s: %lf, %s\n", msg->getName(), msg->getTimeStamp(), msg->actions); + Notify("uManual_drive_cmd", msg->actions); + std::string err; + Json::Value recvCommand; + std::istringstream iss(msg->actions); + Json::CharReaderBuilder builder; + bool parsingResult = Json::parseFromStream(builder, iss, &recvCommand, &err); + std::stringstream ss; + ss << std::fixed << std::setprecision(6) + << "RemoteActions" << ":" + << MOOS::Time() << "," + << "Thrust" << "," + << recvCommand["Thrust"].asInt() << "," + << "Heading" << "," + << recvCommand["Heading"].asFloat(); + Notify("uClient_manualDrive_log", ss.str()); + } + if (type == DUNE::IMC::LogBookControl::getIdStatic()) + { + DUNE::IMC::LogBookControl * msg = dynamic_cast(message); + + uint8_t logBookType = 0; + std::string logBookContext = ""; + std::string logBookText = ""; + DUNE::IMC::MessageList::const_iterator iter = msg->msg.begin(); + for (; iter != msg->msg.end(); ++iter) + { + DUNE::IMC::LogBookEntry *msgLogBookEntry = static_cast(*iter); + logBookType = msgLogBookEntry->type; + logBookContext = msgLogBookEntry->context; + logBookText = msgLogBookEntry->text; + } + + printf("server receive %s: %lf, %u, %u, %s\n", msg->getName(), msg->getTimeStamp(), + msg->command, logBookType, logBookContext.c_str()); + + std::string saveLogDir; + m_MissionReader.GetValue("LogDir", saveLogDir); + char lastChar = saveLogDir.at(saveLogDir.size()-1); + if (std::string(1, lastChar) != std::string("/")) + { + saveLogDir += "/"; + } + if (msg->command == DUNE::IMC::LogBookControl::CommandEnum::LBC_GET) + { + if (logBookType == DUNE::IMC::LogBookEntry::TypeEnum::LBET_INFO && logBookContext == "LIST") + { + std::vector localAUVNamePath; + getAllFiles(saveLogDir.c_str(), localAUVNamePath); + std::vector localDayPath; + for (int i=0; i localTimePath; + for (int i=0; i localFilePath; + for (int i=0; i dirList = retrFileObject.getMemberNames(); + int dirCount = dirList.size(); + for (int i=0; i fileList = retrFileObject[fileDir].getMemberNames(); + int fileCount = fileList.size(); + for (int j=0; jcommand == DUNE::IMC::LogBookControl::CommandEnum::LBC_CLEAR) + { + if (logBookType == DUNE::IMC::LogBookEntry::TypeEnum::LBET_INFO && logBookContext == "DELE") + { + std::string err; + Json::Value inputObject; + std::istringstream iss(logBookText); + Json::CharReaderBuilder builder1; + + bool parsingResult = Json::parseFromStream(builder1, iss, &inputObject, &err); + + if (parsingResult) + { + + std::vector dirList = inputObject.getMemberNames(); + int dirCount = dirList.size(); + // Json::Value outputJsonValue; + for (int i=0; i fileList = inputObject[fileDir].getMemberNames(); + int fileCount = fileList.size(); + for (int j=0; j 0) + { + long int sendSize = sendfile(tcpSockConnect, fid, &offset, c_block_size); + std::cout << "sendSize: " << sendSize << std::endl; + if (sendSize == -1) + { + break; + } + remaining -= sendSize; + } + close(fid); + } + catch(std::string s) + { + std::cout << s << std::endl; + } +} + +void SurfaceSupportComm::getAllFiles(const char * dir_name, std::vector& filePath) +{ + if( NULL == dir_name ) + { + return; + } + struct stat s; + lstat( dir_name , &s ); + if(!S_ISDIR( s.st_mode )) + { + return; + } + struct dirent * filename; + DIR * dir; + dir = opendir( dir_name ); + if( NULL == dir ) + { + return; + } + while((filename = readdir(dir)) != NULL) + { + if( strcmp(filename->d_name , "." ) == 0 || strcmp(filename->d_name , "..") == 0 ) + continue; + + char lastChar = dir_name[strlen(dir_name) - 1]; + if (std::string(1, lastChar) == std::string("/")) + { + filePath.push_back(std::string(dir_name) + std::string(filename->d_name)); + } + else + { + filePath.push_back(std::string(dir_name) + "/" + std::string(filename->d_name)); + } + } + return ; +} + +void SurfaceSupportComm::BatchConvertCoordinate(Json::Value &object) +{ + if (!object["points"].isArray()) + { + return; + } + Json::Value array = object["points"]; + std::vector reference = {object["origin"]["lon"].asFloat(), \ + object["origin"]["lat"].asFloat(), \ + object["origin"]["altitude"].asFloat()}; + for (int i = 0; i < array.size(); i++) + { + float landMarkLon = array[i]["lon"].asFloat(); + float landMarkLat = array[i]["lat"].asFloat(); + float landMarkDepth = array[i]["depth"].asFloat(); + std::vector current = {landMarkLon, landMarkLat, 0}; + + std::vector ned = {0, 0, 0}; + ConvertLLAToNED(reference, current, ned); + array[i]["north"] = ned.at(0); + array[i]["east"] = ned.at(1); + } +} + +void SurfaceSupportComm::closeConnection(Client& c, std::exception& e) +{ + m_poll.remove(*c.socket); + delete c.socket; +} + +bool SurfaceSupportComm::OnStartUp() +{ + // AppCastingMOOSApp::OnStartUp(); + + m_MissionReader.GetValue("VehicleName", vehicleName); + + planConfigPath = ""; + m_MissionReader.GetValue("PlanConfigPath", planConfigPath); + + RegisterVariables(); + + // udpEvent.SetCallback(periodicCallback, NULL); + // udpEvent.SetPeriod(1); + // udpEvent.Start(); + + // tcpEvent.SetCallback(processMessageCallback, NULL); + // tcpEvent.SetPeriod(1); + // tcpEvent.Start(); + +#if 1 + sock_tcp_receive.bind(TCP_RECEIVE_PORT); + sock_tcp_receive.listen(5); + m_poll.add(sock_tcp_receive); +#endif + + + try + { + if(tcpSockFD == -1) + { + tcpSockFD = socket(AF_INET, SOCK_STREAM, 0); + if(tcpSockFD == -1) + { + throw std::string("create socket error"); + } + } + + + if(tcpBindRet == -1) + { + struct sockaddr_in saddr; + saddr.sin_addr.s_addr = inet_addr(DEST_IP_ADDRESS); + // saddr.sin_addr.s_addr = INADDR_ANY; + saddr.sin_family = AF_INET; + saddr.sin_port = htons(TCP_SEND_FILE_PORT); + tcpBindRet = bind(tcpSockFD, (struct sockaddr *)&saddr, sizeof(saddr)); + if(tcpBindRet == -1) + { + throw std::string("bind socket error"); + } + } + tcpListenRet = listen(tcpSockFD, 5); + if(tcpListenRet == -1) + { + throw std::string("listen socket error"); + } + } + catch(std::string s) + { + std::cout << s << '\n'; + } + + TimeLast = MOOS::Time(); + + return(true); +} + +// bool SurfaceSupportComm::buildReport() +// { +// m_msgs << "buildReport:" << testFlag++ << endl; +// return true; +// } + +void SurfaceSupportComm::RegisterVariables() +{ + // AppCastingMOOSApp::RegisterVariables(); + Register("uDevice_monitor_fb", 0); + Register("uMission_task_fb", 0); + Register("CPUTemperature", 0); + + +} + +void SurfaceSupportComm::ConvertLLAToENU(std::vector init_lla, + std::vector point_lla, + std::vector& point_enu) +{ + static GeographicLib::LocalCartesian local_cartesian; + local_cartesian.Reset(init_lla.at(1), init_lla.at(0), init_lla.at(2)); + local_cartesian.Forward(point_lla.at(1), point_lla.at(0), point_lla.at(2), + point_enu.at(0), point_enu.at(1), point_enu.at(2)); +} + +void SurfaceSupportComm::ConvertENUToLLA(std::vector init_lla, + std::vector point_enu, + std::vector &point_lla) +{ + static GeographicLib::LocalCartesian local_cartesian; + local_cartesian.Reset(init_lla.at(1), init_lla.at(0), init_lla.at(2)); + local_cartesian.Reverse(point_enu.at(0), point_enu.at(1), point_enu.at(2), + point_lla.at(1), point_lla.at(0), point_lla.at(2)); +} + +void SurfaceSupportComm::ConvertLLAToNED(std::vector init_lla, + std::vector point_lla, + std::vector& point_ned) +{ + static GeographicLib::LocalCartesian local_cartesian; + local_cartesian.Reset(init_lla.at(1), init_lla.at(0), init_lla.at(2)); + + double point_e = 0; + double point_n = 0; + double point_u = 0; + local_cartesian.Forward(point_lla.at(1), point_lla.at(0), point_lla.at(2), + point_e, point_n, point_u); + point_ned.at(0) = point_n; + point_ned.at(1) = point_e; + point_ned.at(2) = -point_u; +} + + +void SurfaceSupportComm::ConvertNEDToLLA(std::vector init_lla, + std::vector point_ned, + std::vector &point_lla) +{ + static GeographicLib::LocalCartesian local_cartesian; + local_cartesian.Reset(init_lla.at(1), init_lla.at(0), init_lla.at(2)); + + double point_e = point_ned.at(1); + double point_n = point_ned.at(0); + double point_u = -point_ned.at(2); + + local_cartesian.Reverse(point_e, point_n, point_u, + point_lla.at(1), point_lla.at(0), point_lla.at(2)); +} diff --git a/src/pSurfaceSupportComm/SurfaceSupportComm.h b/src/pSurfaceSupportComm/SurfaceSupportComm.h new file mode 100644 index 0000000..7da2788 --- /dev/null +++ b/src/pSurfaceSupportComm/SurfaceSupportComm.h @@ -0,0 +1,155 @@ +/************************************************************/ +/* NAME: Xiaobin Zeng */ +/* ORGN: MIT */ +/* FILE: SurfaceSupportComm.h */ +/* DATE: */ +/************************************************************/ + +#ifndef SurfaceSupportComm_HEADER +#define SurfaceSupportComm_HEADER + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "MOOS/libMOOS/MOOSLib.h" +#include "MOOS/libMOOS/Thirdparty/AppCasting/AppCastingMOOSApp.h" +#include +#include +#include +// #include "PeriodicUDPEvent.h" + +struct Landmark { + float lon; + float lat; + float depth; + float speed; +}; + +struct EstimatedState { + float referenceLon; + float referenceLat; + float referenceAltitude; + float currentLon; + float currentLat; + float currentAltitude; + float offsetNorth; + float offsetEast; + float offsetDown; + float roll; + float pitch; + float yaw; + float linearVelocityNorth; + float linearVelocityEast; + float linearVelocityDown; + float height; + float depth; +}; + +struct DeviceStatus { + unsigned int batteryVoltage; + unsigned int batteryLevel; + float batteryTemp; + double controllerTemp; + int thrustRpm; + unsigned int lightEnable; + unsigned int throwingLoadEnable; + unsigned int dvlStatus; +}; + + +class SurfaceSupportComm : public CMOOSApp +// class SurfaceSupportComm : public AppCastingMOOSApp +{ +public: + SurfaceSupportComm(); + ~SurfaceSupportComm(); + +protected: // Standard MOOSApp functions to overload + bool OnNewMail(MOOSMSG_LIST &NewMail); + bool Iterate(); + bool OnConnectToServer(); + bool OnStartUp(); + void RegisterVariables(); + // bool buildReport(); + +private: + enum MissionStatus{FAULT=0, UNRUN=1, MANUAL=2 ,RUN=3, CONFIG=5}; + + char recv_buf[2048]; + DUNE::Network::UDPSocket sock_udp_send; + DUNE::Network::TCPSocket sock_tcp_receive; + int tcpSockFD; + int tcpBindRet; + int tcpListenRet; + int tcpSockConnect; + DUNE::IO::Poll m_poll; + uint16_t header_src, header_dst; + uint8_t header_src_ent, header_dst_ent; + std::string planConfigPath; + struct EstimatedState estimatedState; + struct DeviceStatus deviceStatus; + struct Client + { + DUNE::Network::TCPSocket* socket; // Socket handle. + DUNE::Network::Address address; // Client address. + uint16_t port; // Client port. + DUNE::IMC::Parser parser; // Parser handle + }; + + typedef std::list ClientList; + ClientList m_clients; + + bool udpSendToServer(DUNE::IMC::Message * msg, std::string addr, int port); + void tcpReceiveFromClient(char* buf, unsigned int cap, double timeout); + void tcpSendToClient(char* buf, unsigned int cap); + void acceptNewClient(void); + void handleClients(char* buf, unsigned int cap); + void closeConnection(Client& c, std::exception& e); + void processMessage(DUNE::IMC::Message * message); + void ConvertLLAToNED(std::vector init_lla, + std::vector point_lla, + std::vector& point_ned); + void ConvertNEDToLLA(std::vector init_lla, + std::vector point_ned, + std::vector &point_lla); + void ConvertLLAToENU(std::vector init_lla, + std::vector point_lla, + std::vector& point_enu); + void ConvertENUToLLA(std::vector init_lla, + std::vector point_enu, + std::vector &point_lla); + + void BatchConvertCoordinate(Json::Value &object); + int retrieveEntityStatus(DUNE::IMC::MsgList& equipmentMsgList); + template + inline int getEntityStatus(DUNE::IMC::EntityParameters& entityParameter, std::string name, Type& value); + + void getAllFiles(const char * dir_name, std::vector& filePath); + // void tcpProcessThread(std::vector& downloadFileArray); + void tcpProcessThread(const std::string& downloadFile); + double getFileSize(std::string filePath); + + + int testFlag = 0; + double TimeLast; + int sendCount = 0; + + // PeriodicUDPEvent udpEvent; + // PeriodicTCPEvent tcpEvent; + std::string missionStatusString; + std::string vehicleName; + unsigned int c_block_size; + + std::list m_sockets; + +}; + +#endif diff --git a/src/pSurfaceSupportComm/SurfaceSupportComm_Info.cpp b/src/pSurfaceSupportComm/SurfaceSupportComm_Info.cpp new file mode 100644 index 0000000..6d92ece --- /dev/null +++ b/src/pSurfaceSupportComm/SurfaceSupportComm_Info.cpp @@ -0,0 +1,115 @@ +/****************************************************************/ +/* NAME: Xiaobin Zeng */ +/* ORGN: MIT Cambridge MA */ +/* FILE: SurfaceSupportComm_Info.cpp */ +/* DATE: Dec 29th 1963 */ +/****************************************************************/ + +#include +#include +#include "SurfaceSupportComm_Info.h" +#include "ColorParse.h" +#include "ReleaseInfo.h" + +using namespace std; + +//---------------------------------------------------------------- +// Procedure: showSynopsis + +void showSynopsis() +{ + blk("SYNOPSIS: "); + blk("------------------------------------ "); + blk(" The pSurfaceSupportComm application is used for "); + blk(" "); + blk(" "); + blk(" "); + blk(" "); +} + +//---------------------------------------------------------------- +// Procedure: showHelpAndExit + +void showHelpAndExit() +{ + blk(" "); + blu("=============================================================== "); + blu("Usage: pSurfaceSupportComm file.moos [OPTIONS] "); + blu("=============================================================== "); + blk(" "); + showSynopsis(); + blk(" "); + blk("Options: "); + mag(" --alias","= "); + blk(" Launch pSurfaceSupportComm with the given process name "); + blk(" rather than pSurfaceSupportComm. "); + mag(" --example, -e "); + blk(" Display example MOOS configuration block. "); + mag(" --help, -h "); + blk(" Display this help message. "); + mag(" --interface, -i "); + blk(" Display MOOS publications and subscriptions. "); + mag(" --version,-v "); + blk(" Display the release version of pSurfaceSupportComm. "); + blk(" "); + blk("Note: If argv[2] does not otherwise match a known option, "); + blk(" then it will be interpreted as a run alias. This is "); + blk(" to support pAntler launching conventions. "); + blk(" "); + exit(0); +} + +//---------------------------------------------------------------- +// Procedure: showExampleConfigAndExit + +void showExampleConfigAndExit() +{ + blk(" "); + blu("=============================================================== "); + blu("pSurfaceSupportComm Example MOOS Configuration "); + blu("=============================================================== "); + blk(" "); + blk("ProcessConfig = pSurfaceSupportComm "); + blk("{ "); + blk(" AppTick = 4 "); + blk(" CommsTick = 4 "); + blk(" "); + blk("} "); + blk(" "); + exit(0); +} + + +//---------------------------------------------------------------- +// Procedure: showInterfaceAndExit + +void showInterfaceAndExit() +{ + blk(" "); + blu("=============================================================== "); + blu("pSurfaceSupportComm INTERFACE "); + blu("=============================================================== "); + blk(" "); + showSynopsis(); + blk(" "); + blk("SUBSCRIPTIONS: "); + blk("------------------------------------ "); + blk(" NODE_MESSAGE = src_node=alpha,dest_node=bravo,var_name=FOO, "); + blk(" string_val=BAR "); + blk(" "); + blk("PUBLICATIONS: "); + blk("------------------------------------ "); + blk(" Publications are determined by the node message content. "); + blk(" "); + exit(0); +} + +//---------------------------------------------------------------- +// Procedure: showReleaseInfoAndExit + +void showReleaseInfoAndExit() +{ + showReleaseInfo("pSurfaceSupportComm", "gpl"); + exit(0); +} + diff --git a/src/pSurfaceSupportComm/SurfaceSupportComm_Info.h b/src/pSurfaceSupportComm/SurfaceSupportComm_Info.h new file mode 100644 index 0000000..b553a89 --- /dev/null +++ b/src/pSurfaceSupportComm/SurfaceSupportComm_Info.h @@ -0,0 +1,18 @@ +/****************************************************************/ +/* NAME: Xiaobin Zeng */ +/* ORGN: MIT Cambridge MA */ +/* FILE: SurfaceSupportComm_Info.h */ +/* DATE: Dec 29th 1963 */ +/****************************************************************/ + +#ifndef SurfaceSupportComm_INFO_HEADER +#define SurfaceSupportComm_INFO_HEADER + +void showSynopsis(); +void showHelpAndExit(); +void showExampleConfigAndExit(); +void showInterfaceAndExit(); +void showReleaseInfoAndExit(); + +#endif + diff --git a/src/pSurfaceSupportComm/main.cpp b/src/pSurfaceSupportComm/main.cpp new file mode 100644 index 0000000..560281c --- /dev/null +++ b/src/pSurfaceSupportComm/main.cpp @@ -0,0 +1,52 @@ +/************************************************************/ +/* NAME: Xiaobin Zeng */ +/* ORGN: MIT */ +/* FILE: main.cpp */ +/* DATE: */ +/************************************************************/ + +#include +#include "MBUtils.h" +#include "ColorParse.h" +#include "SurfaceSupportComm.h" +#include "SurfaceSupportComm_Info.h" + +using namespace std; + +int main(int argc, char *argv[]) +{ + string mission_file; + string run_command = argv[0]; + + for(int i=1; i +#include +#include "MBUtils.h" +#include "TaskManger.h" + +using namespace std; + +#define DEBUG + + +//--------------------------------------------------------- +// Constructor + +TaskManger::TaskManger() +{ + + cout << "Task Manger process staring ... " << endl; +} + +//--------------------------------------------------------- +// Destructor + +TaskManger::~TaskManger() +{ + Notify("RUN","false"); + Notify("MOOS_MANUAL_OVERRIDE","true"); +} + +//--------------------------------------------------------- +// Procedure: OnNewMail + +bool TaskManger::OnNewMail(MOOSMSG_LIST &NewMail) +{ + AppCastingMOOSApp::OnNewMail(NewMail); + MOOSMSG_LIST::iterator p; + for(p=NewMail.begin(); p!=NewMail.end(); p++) + { + CMOOSMsg &msg = *p; + string msg_name = msg.GetName(); + string msg_str = msg.GetString(); + double msg_dval = msg.GetDouble(); + bool msg_bval = msg.GetBinaryData(); + // cout << msg_name + ": " << msg_str << endl; + if(msg_name == MSG_ENDFLAG) + { + if(msg_str == "true") + current_node_complete = true; + else + current_node_complete = false; + } + + if(msg_name == MSG_WPTFLAG) + { + if(msg_str == "true") + current_pol_complete = true; + else + current_pol_complete = false; + clearHelmFlag(); + } + + if(msg_name == MSG_FALUT) + { + state = FAULT; + faultMsg = msg_str; + if(faultMsg == "AltitudeOut") + faultNumber = 4; + else if(faultMsg == "DepthOut") + faultNumber = 1; + else if(faultMsg == "RegionOut") + faultNumber = 2; + else if(faultMsg == "TimeOut") + faultNumber = 2; + else + faultNumber = 99; + } + + //CONFIG 状态和手动清除任务故障的功能 + if(msg_name == MSG_SENDSAFTRULES && msg_str == "true") + { + state = CONFIG; + st = 40; + } + if(msg_name == MSG_CLEARFAULT) + { + st = 39; + state = FAULT; + } + + if(msg_name == MSG_IN_SSM) + { + Json::Value j; + Json::Reader a; + a.parse(msg_str,j); + RepList["FormSSM"] = j; + if(j["action"].asString() == "start") + { + taskName = j["taskName"].asString(); + state = RUN; + cout << "Task Manager Status is Run!!!" << endl; + start = true; + st = 10; + } + else if (j["action"].asString() == "stop") + { + taskName = ""; + state = UNRUN; + cout << "Task Manager Status is UnRun!!!" << endl; + st = 20; + } + else + { + RepList["RunWaring"] = "form SSM have unhandle action : " + j["action"].asString(); + } + } + + if(msg_name == MSG_IN_MAN) + { + if(msg_dval == 1) + state = MANUAL; + else + state = UNRUN; + } + + if((msg_name == MSG_FH_LEV2) || (msg_name == MSG_FH_LEV3)) + { + Json::Value j; + Json::Reader a; + a.parse(msg_str,j); + int fault_level = j["FaultLevel"].asInt(); + if(fault_level != 0) + { + state = FAULT; + faultNumber = 1111; + } + } + + } + return(true); +} + +//--------------------------------------------------------- +// Procedure: OnConnectToServer + +bool TaskManger::OnConnectToServer() +{ + Notify(MSG_ENDFLAG,"false"); + Notify(MSG_WPTFLAG,"false"); + // Notify(MSG_START,"false"); + Notify(MSG_RUN,"false"); + RegisterVariables(); + InitConfig(); + return(true); +} + +//--------------------------------------------------------- +// Procedure: Iterate() +bool TaskManger::Iterate() +{ + // happens AppTick times per second + AppCastingMOOSApp::Iterate(); + switch (state) + { + case RUN: //状态0~10 + { + switch(st) + { + case 0://发送任务开始、超时和第一个节点 + { + + //1. send first node + current_node = getNode(nodeList); + if(current_node == "") + st = 9; + else + { + sendNode(current_node, nodeList); + st = 1; + } + //2. send start + taskStart(); + current_node_complete = false; + current_pol_complete = false; + break; + } + case 1://等待节点完成信息 + { + if(current_node_complete || current_pol_complete) + { + cout << "Current WayPoint Node complete!" << endl; + if(current_node == "") + st = 9; + else + st = 2; + } + break; + } + case 2://读取当前节点信息 + { + current_node = getNode(nodeList); + if(current_node != "") + st = 3; + else + st = 1; + break; + } + case 3://发送任务节点 + { + sendNode(current_node, nodeList); + current_node_complete = false; + current_pol_complete = false; + st = 1; + break; + } + case 9://task complete + { + taskFinish(); + st = 10; + start = false; + break; + } + case 10://等待任务开始 + { + if(start) + st = 11; + break; + } + case 11://读取任务文件 + { + faultMsg = ""; + readTask = readTaskFile(taskName); + if( readTask != 0) + { + state = FAULT; + faultNumber = 10 + readTask; + st =30; + faultMsg = "TaskFileError : " + intToString(readTask); + } + st = 0; + break; + } + default: + { + st = 10; + //cout << "State reset ..." << endl; + //taskFinish(); + break; + } + } + break; + } + case UNRUN: //状态20~29 + { + switch(st) + { + case 20://进入UNRUN,初始化状态变量 + { + current_node_complete = false; + current_pol_complete = false; + current_node=""; + start = false; + Notify(MSG_ENDFLAG,"false"); + Notify(MSG_WPTFLAG,"false"); + // Notify(MSG_START,"false"); + Notify(MSG_RUN,"false"); + Notify("MOOS_MANUAL_OVERRIDE","true"); + cout << "Wating task start......" << endl; + st = 21; + break; + } + case 21://等待任务开始 + { + break; + } + default: + { + st = 20; + break; + } + } + break; + } + case FAULT: //状态30~39 + { + switch(st) + { + case 30: //判断故障信息 + { + if(faultNumber>0 && faultNumber<10) + st = 31; + else if(faultNumber>10 && faultNumber<20) + st = 32; + else if(faultNumber == 1111) + st = 33; + else + st = 38; + break; + } + case 31: //任务错误 + { + postFaultNumber(faultNumber); + state = UNRUN; + break; + } + case 32: //任务文本错误 + { + postFaultNumber(faultNumber); + state = UNRUN; + break; + } + case 33: //外部故障 + { + state = UNRUN; + break; + } + case 38: //未知故障 + { + postFaultNumber(99); + break; + } + case 39: // 清除任务故障 + { + FaultFlagClear(); + faultNumber = 0; + state = UNRUN; + break; + } + default: + { + st = 30; + break; + } + } + break; + } + case CONFIG: //状态40~49 + { + switch (st) + { + case 40: //配置安全规则 + { + readSafetyRules("a"); + setSafetyRules(maxTime, maxDepth, minAltitude, safePolygon); + // setMaxDepth(maxDepth); + setMaxDepth("2"); + st = 49; + break; + } + case 41: //路径参数配置 + { + readWayConfig("a"); + setWayConfig(lead,lead_damper,capture_line,capture_radius,slip_radius); + st = 49; + //setWayConfig(); + } + case 49: //等待 + { + state = UNRUN; + break; + } + default: + { + st = 49; + break; + } + } + + break; + } + case MANUAL: // 手操状态 + { + switch (st) + { + case 50: // 清除变量 + current_node_complete = false; + current_pol_complete = false; + current_node=""; + start = false; + Notify(MSG_ENDFLAG,"false"); + Notify(MSG_WPTFLAG,"false"); + Notify(MSG_RUN,"false"); + Notify("MOOS_MANUAL_OVERRIDE","true"); + cout << "Wating task start......" << endl; + st = 51; + break; + case 51: // 等待 + break; + default: + st = 50; + break; + } + break; + } + default: + { + st = 30; + break; + } + } + postReportToSSM(); + AppCastingMOOSApp::PostReport(); + return(true); +} + +//--------------------------------------------------------- +// Procedure: OnStartUp() +// happens before connection is open + +bool TaskManger::OnStartUp() +{ + AppCastingMOOSApp::OnStartUp(); + list sParams; + if(m_MissionReader.GetConfiguration(GetAppName(), sParams)) + { + list::iterator p; + for(p=sParams.begin(); p!=sParams.end(); p++) { + string original_line = *p; + string line = *p; + string param = stripBlankEnds(toupper(biteString(line, '='))); + string value = stripBlankEnds(line); + + if(param == "PLANCONFIGPATH") + { + planConfigPath = value; + RepList["CueenPath"] = planConfigPath; + } + } + } + if(planConfigPath == "") + reportConfigWarning("NO TASK FILE PATH"); + // readTaskFile("a"); + RegisterVariables(); + return(true); +} + +//--------------------------------------------------------- +// Procedure: RegisterVariables +/** + * @description: + * @param {double} depth + * @return {*} + */ +bool TaskManger::setMaxDepth(string depth) +{ + string msgContent = ""; + msgContent = "max_depth="; + msgContent += depth; + Notify(UPDATE_MAXDEP, msgContent); + cout << "set max depth is " + depth << "m!" << endl; + return true; +} +bool TaskManger::setWayPol(string polygon, string speed, string depth) +{ + string msgContent=""; + if(polygon=="#") + { + msgContent = "speed="; + msgContent += speed; + Notify(UPDATE_SPD, msgContent); + + msgContent = "depth=" + depth; + Notify(UPDATE_DEP, msgContent); + } + else + { + msgContent = "polygon="; + msgContent += polygon; + msgContent += "#"; + msgContent += "speed="; + msgContent += speed; + Notify(UPDATE_WPT, msgContent); + + //使用模版参数生成一个新的行为r + Notify(UPDATE_WPT,"name=way_track"); + // msgContent = "polygon="; + // msgContent += polygon; + // msgContent += "#"; + Notify(UPDATE_WPT, msgContent); + msgContent = "speed="; + msgContent += speed; + Notify(UPDATE_SPD, msgContent); + + msgContent = "depth=" + depth; + Notify(UPDATE_DEP, msgContent); + }; + return true; +} +/** + * @description: + * @param {string} wpt + * @return {*} + */ +bool TaskManger::setWpt(std::string wpt, string speed, string depth) +{ + string msgContent=""; + + msgContent += "points="; + msgContent += wpt; + msgContent += "#"; + msgContent += "speed="; + msgContent += speed; + // msgContent += "#"; + Notify(UPDATE_WPT,msgContent); + Notify(UPDATE_WPT,"name=way_topoint"); + + + msgContent = "depth=" + depth; + Notify(UPDATE_DEP, msgContent); + + msgContent = "speed="; + msgContent += speed; + Notify(UPDATE_SPD, msgContent); + + + cout << "MSG is : " << msgContent + "#depth=" << depth << endl; + // Notify("WPT_UPDATE", wpt); + return true; +} + +/** + * @description: + * @param {double} speed + * @return {*} + */ +bool TaskManger::setSpeed(double speed) +{ + Notify("SPEED_UPDATE", speed); + return true; +} + +bool TaskManger::setTaskTimer(string timeCount) +{ + cout << "Set task timer is " << timeCount << "seconds!" << endl; + string msgContent=""; + msgContent += "name=taskTimer"; + msgContent += "#"; + msgContent += "duration="; + msgContent += timeCount; + Notify(UPDATE_TIMER,msgContent); +} + +bool TaskManger::setSafetyRules(string maxTime, string maxDepth, string minAltitude, string polygon) +{ + string msgContent=""; + msgContent += "max_time="; + msgContent += maxTime; + msgContent += "#"; + msgContent += "max_depth="; + msgContent += maxDepth; + msgContent += "#"; + msgContent += "min_altitude="; + msgContent += minAltitude; + msgContent += "#"; + msgContent += "polygon="; + msgContent += polygon; + + cout << " The Op_Region parm is : " << msgContent << endl; + Notify(UPDATE_OPREGION, msgContent); + return true; +} +bool TaskManger::setWayConfig(string lead, string lead_damper, string capture_line, string capture_radius,string slip_radius) +{ + string msgContent=""; + + msgContent = "lead="; + msgContent += lead; + msgContent += "#"; + msgContent += "lead_damper="; + msgContent += lead_damper; + msgContent += "#"; + msgContent += "capture_line="; + msgContent += capture_line; + msgContent += "#"; + msgContent += "capture_radius="; + msgContent += capture_radius; + msgContent += "#"; + msgContent += "slip_radius="; + msgContent += slip_radius; + + Notify(UPDATE_WPT, msgContent); + cout << "Config waypoint parm is :" << msgContent << endl; +} + +/** + * @description: + * @return {*} + */ +void TaskManger::RegisterVariables() +{ + AppCastingMOOSApp::RegisterVariables(); + Register(MSG_ENDFLAG, 0); + // Register(MSG_START, 0); + Register(MSG_WPTFLAG,0); + Register(MSG_SENDSAFTRULES,0); + Register(MSG_FALUT,0); + Register(MSG_CLEARFAULT,0); + Register(MSG_IN_SSM,0); + Register(MSG_IN_MAN,0); + + Register(MSG_FH_LEV2,0); + Register(MSG_FH_LEV3,0); +} +/** + * @description: read task File to nodeList + * @param {string} fileName + * @return {*} 0 if true else >0 + */ +int TaskManger::readTaskFile(string taskName) +{ + int faultNubmer = 0; + if(!nodeList.empty()) + nodeList.clear(); + ifstream ifs; + ifs.open(planConfigPath, ios::in); + Json::Reader taskConfigureReader; + Json::Value inputJsonValue; + Json::Value currentTask; + taskConfigureReader.parse(ifs, inputJsonValue); + ifs.close(); + int taskCount = inputJsonValue.size(); + taskList = inputJsonValue.getMemberNames(); + taskCount = inputJsonValue.size(); + //part1 : 判断是否存在这个任务 + if (!inputJsonValue.isMember(taskName)) + { + RepList["Task in File"] = "False"; + return faultNubmer=1; + } + else + { + //part2 : 读取任务 + string node=""; + currentTask = inputJsonValue[taskName]; + if(currentTask["taskName"].asString() != taskName) + return faultNubmer=2; + + double currentTask_maxTime = currentTask["duration"].asDouble(); + double repeat = currentTask["repeat"].asDouble(); + + if(!currentTask["points"].isArray()) + return faultNubmer=3; + + Json::Value currentTask_Points = currentTask["points"]; + int ps_cnt = currentTask_Points.size(); + for(int i=0; i nodeList) +{ + auto i = nodeList.begin(); + string polygon=""; + TaskType t; + while(i != nodeList.end()) + { + if(getTaskTpye(*i)==WAYPOLYGON) + { + polygon += getWayPoint(*i); + polygon += ":"; + } + else + break; + i++; + } + if(polygon.size()>1) + polygon.erase(polygon.end()-1); + // cout << "Current way polygon is: " << polygon << endl; + return polygon; +} +/** + * @description: + * @param {string} node + * @return {*} + */ +TaskType TaskManger::getTaskTpye(string node) +{ + string type; + TaskType nodetype; + if(getWord(node, 0, type)) + { + // cout << "Current task type is: " << type << endl; + // return type; + if(type=="@1") + return nodetype=WAYPOINTS; + else if(type=="@2") + return nodetype=WAYPOLYGON; + else if(type=="@3") + return nodetype=CONSTHEADING; + else + return nodetype=NOTYPE; + } + else + cout << "Warming: read type of task Parm Filed" << endl; +} +/** + * @description: + * @param {string} str + * @param {int} c + * @return {*} + */ +bool TaskManger::getWord(const string str, int ct, string &word) +{ + string cword; + int count=0; + for(auto c:str) + { + if(c==',') + { + if(count==ct) + { + word = cword; + return true; + } + cword=""; + count++; + } + else + cword += c; + } + word = cword; + if(ct==0) + return true; + else + return false; +} + +string TaskManger::getNode(list &nodelist) +{ + string current_node; + if(!nodelist.empty()) + { + cout << "The remaining number of nodes is: " << nodelist.size() << endl; + current_node = nodelist.front(); + nodelist.pop_front(); + cout << "Current Node is " << current_node << endl; + } + else + current_node=""; + return current_node; +} + +string TaskManger::getTimeCount() +{ + return "1000"; +} + +string TaskManger::getMaxDepth() +{ + return "20"; +} +string TaskManger::getNodeName(const string node) +{ + string name=""; + if(getWord(node, 5, name)) + { + return name; + } + else + cout << "Warming: read Speed Parm Filed" << endl; + // getWord(node, 3, depth); + return name; +} +bool TaskManger::sendNode(const string current_node, list &nodeList) +{ + // cout << "Current WayPoint Node complete" << endl; + string node_pol; + nodeType = getTaskTpye(current_node); + switch(nodeType) + { + case WAYPOINTS: + { + node_wpt = getWayPoint(current_node); + node_depth = getDepth(current_node); + node_speed = getSpeed(current_node); + setWpt(node_wpt, node_speed, node_depth); + current_node_complete = false; + break; + } + case WAYPOLYGON: + { + node_depth = getDepth(current_node); + node_speed = getSpeed(current_node); + if (current_pol_complete && !current_node_complete) //wayflag发布但是endflag没有发布时代表不是首个节点,不发布路径信息 + { + node_pol = "#"; + } + else //if(current_pol_complete && current_node_complete) + { + nodeList.push_front(current_node); + node_pol = getWayPolygon(nodeList); + nodeList.pop_front(); + } + setWayPol(node_pol, node_speed, node_depth); + cout << "MSG is :Pol=" + node_pol + "#speed=" + node_speed + "#depth=" + node_depth<< endl; + break; + } + default: + break; + } + current_node_complete = false; + current_pol_complete = false; + + return true; +} + +void TaskManger::FaultFlagClear() +{ + faultNumber = 0; + if(faultMsg == "AltitudeOut") + Notify(UPDATE_RESETFAULT,"altittude"); + else if(faultMsg == "DepthOut") + Notify(UPDATE_RESETFAULT,"depth"); + else if(faultMsg == "RegionOut") + Notify(UPDATE_RESETFAULT,"poly"); + else if(faultMsg == "TimeOut") + Notify(UPDATE_RESETFAULT,"time"); + else + cout << "Can not Clear Unknow Fault Flag!!!" << endl; + cout << "Clear Fault : " + faultMsg << endl; +} + +bool TaskManger::buildReport() +{ + switch (state) + { + case UNRUN: + { + m_msgs << "$Task Manager Status$:" << "UNRUN" << endl; + m_msgs << "$Idel Task Number$:" << taskCount << endl; + break; + } + case RUN: + { + m_msgs << "$Task Manager Status$:" << "RUN" << endl; + m_msgs << "$Current Task Point$ :" << current_node << endl; + m_msgs << "Currnet Task List :" << endl; + for(string i : nodeList) + m_msgs << " : " << i << endl; + break; + } + case FAULT: + { + m_msgs << "$Task Manager Status$:" << "FAULT" << endl; + break; + } + + default: + break; + } + m_msgs << "=========================================================" << endl; + RepList["Current Node"] = current_node; + RepList["remaining number of nodes"] = (int)nodeList.size()+1; + string rep = Json::writeString(RepJsBuilder, RepList); + m_msgs << rep << endl; + return true; +} + +inline void TaskManger::taskStart() +{ + Notify("RUN","true"); + Notify("MOOS_MANUAL_OVERRIDE","false"); +} +inline void TaskManger::taskFinish() +{ + current_node=""; + Notify("RUN","false"); + state = UNRUN; + cout << "The task node is all complete!!!" << endl; + Notify("MOOS_MANUAL_OVERRIDE","true"); +} +inline void TaskManger::InitConfig() +{ + Notify(MSG_ENDFLAG,"false"); + Notify(MSG_WPTFLAG,"false"); + // Notify(MSG_START,"false"); + Notify(MSG_RUN,"false"); + // + readSafetyRules("q"); + setSafetyRules(maxTime, maxDepth, minAltitude, safePolygon); + readWayConfig("a"); + setWayConfig(lead,lead_damper,capture_line,capture_radius,slip_radius); +} + +void TaskManger::postReportToSSM() +{ + string s_msg; + Json::Value msg; + msg["state"] = state; + msg["taskName"] = taskName; + msg["destName"] = getNodeName(current_node); + msg["errorCode"] = faultNumber; + // msg["progess"] = + // msg["eta"] = + RepList["toSSM"] = msg; + s_msg = Json::writeString(RepJsBuilder,msg); + Notify(MSG_TO_SSM, s_msg); +} +//1:超深 +//2.超时 +//3.超出区域 +//4.低于最小高度 +//11:任务文本 +//99.未知故障 +void TaskManger::postFaultNumber(int n) +{ + Notify(MSG_TO_FH,n); +} \ No newline at end of file diff --git a/src/pTaskManagement/TaskManger.h b/src/pTaskManagement/TaskManger.h new file mode 100644 index 0000000..e8d7491 --- /dev/null +++ b/src/pTaskManagement/TaskManger.h @@ -0,0 +1,151 @@ +/* + * @Author: 1553836110 1553836110@qq.com + * @Date: 2023-09-28 15:45:17 + * @LastEditors: zhaojingkui 1553836110@qq.com + * @LastEditTime: 2023-11-23 15:29:09 + * @FilePath: /moos-ivp-pi/src/pTaskManagement/TaskManger.h + * @Description: + * + * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved. + */ +/************************************************************/ +/* NAME: zjk */ +/* ORGN: MIT */ +/* FILE: TaskManger.h */ +/* DATE: */ +/************************************************************/ + +#ifndef TaskManger_HEADER +#define TaskManger_HEADER + +#include "MOOS/libMOOS/MOOSLib.h" +#include "MOOS/libMOOS/Thirdparty/AppCasting/AppCastingMOOSApp.h" +#include +#include +#include "json/json.h" +#include "VarDataPair.h" + +using namespace std; +enum TaskType{WAYPOINTS, CONSTDEPTH, CONSTSPEED, CONSTHEADING, WAYPOLYGON, NOTYPE}; +enum Status{FAULT=0, UNRUN=1, MANUAL=2 ,RUN=3, CONFIG=5}; +// class TaskManger : public CMOOSApp +class TaskManger : public AppCastingMOOSApp +{ + public: + TaskManger(); + virtual ~TaskManger(); + + bool OnNewMail(MOOSMSG_LIST &NewMail); + bool Iterate(); + bool OnConnectToServer(); + bool OnStartUp(); + void RegisterVariables(); + bool buildReport(); + void postFaultNumber(int n); + + bool setSpeed(double speed); + bool setMaxDepth(string depth); + bool setWpt(std::string wpt, string speed, string depth); + bool setWayPol(string polygon, string speed, string depth); + bool setTaskTimer(string timerCount); + bool setSafetyRules(string maxTime, string maxDepth, string minAltitude, string polygon); + bool setWayConfig(string lead, string lead_damper, string capture_line, string capture_radius,string slip_radius); + + bool sendNode(const string current_node, list &nodeList); + + bool getWord(const string str, int ct, string &word); + string getSpeed(const string node); + string getDepth(const string node); + string getWayPoint(const string node); + string getWayPolygon(const list nodeList); + string getNodeName(const string node); + string getNode(list &nodelist); + string getTimeCount(); + string getMaxDepth(); + TaskType getTaskTpye(const string node); + + int readTaskFile(string taskName); + int readSafetyRules(string fileName); + int readWayConfig(string fileName); + void postReportToSSM(); + + inline void clearHelmFlag(){Notify("HELM_MAP_CLEAR",0.0);} + inline void taskStart(); + inline void taskFinish(); + void FaultFlagClear(); + inline void InitConfig(); + + const string UPDATE_WPT = "WPT_UPDATE"; + const string UPDATE_SPD = "SPEED_UPDATE"; + const string UPDATE_DEP = "DEPTH_UPDATE"; + const string UPDATE_TIMER = "TIMER_UPDATES"; + const string UPDATE_MAXDEP = "MAXDEEP_UPDATES"; + const string UPDATE_OPREGION = "OPREGION_UPDATES"; + const string UPDATE_RESETFAULT = "OPREGION_RESET"; + + const string MSG_WPTFLAG = "CurrentPointComplete"; + const string MSG_ENDFLAG = "END_WayPoint"; + const string MSG_START = "START"; + const string MSG_SENDSAFTRULES = "SendSaftRules"; + const string MSG_FALUT = "TaskFault"; + const string MSG_RUN = "RUN"; + const string MSG_CLEARFAULT = "ClearFalut"; + + const string MSG_IN_SSM = "uMission_action_cmd"; + const string MSG_TO_SSM = "uMission_task_fb"; + const string MSG_TO_FH = "uMission_fault_fb"; + const string MSG_IN_MAN = "uManual_enable_cmd"; + const string MSG_FH_LEV2 = "uFH_errorMsg2_fb"; + const string MSG_FH_LEV3 = "uFH_errorMsg3_fb"; + +protected: +// 任务参数 + string node_wpt; + string node_depth; + string node_speed; +// 安全规则 + string maxDepth; + string maxTime; + string safePolygon; + string minAltitude="0"; +// 路径参数 + string lead; + string lead_damper; + string lead_to_start; + string capture_line; + string capture_radius; + string slip_radius; + string efficiency_measure; + + string faultMsg; + + TaskType nodeType; + list nodeList; + +private: + bool current_node_complete = false; + bool current_pol_complete = false; + bool start=false; + bool time_out=false; + int st=10; + int faultNumber = 0; + int readTask = 0; + string msg; + string current_node; + Status state = UNRUN; + + Json::Value RepList; + Json::StreamWriterBuilder RepJsBuilder; + + +//任务文件参数 +//TODO:动态配置任务文件等参数 + string planConfigPath; + vector taskList; + int taskCount; + string taskName; +//发送节点信息 + Json::Value node_rpt; +}; + +#endif diff --git a/src/pTaskManagement/TaskMangerMain.cpp b/src/pTaskManagement/TaskMangerMain.cpp new file mode 100644 index 0000000..9a8cab1 --- /dev/null +++ b/src/pTaskManagement/TaskMangerMain.cpp @@ -0,0 +1,65 @@ +/* + * @Author: zjk 1553836110@qq.com + * @Date: 2023-09-28 15:45:17 + * @LastEditors: zjk 1553836110@qq.com + * @LastEditTime: 2023-10-24 15:13:22 + * @FilePath: /moos-ivp-extend/src/pTaskManger/TaskMangerMain.cpp + * @Description: + * + * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved. + */ +/************************************************************/ +/* NAME: zjk */ +/* ORGN: MIT */ +/* FILE: TaskMangerMain.cpp */ +/* DATE: */ +/************************************************************/ + +#include +#include "TaskManger.h" +#include "ColorParse.h" +#include "MBUtils.h" + +using namespace std; + +int main(int argc, char *argv[]) +{ + string mission_file; + string run_command = argv[0]; + + for(int i=1; i& /dev/null & + +uMAC -t $COMMUNITY.moos +kill -- -$$ diff --git a/src/pTaskManagement/pTaskManger.moos b/src/pTaskManagement/pTaskManger.moos new file mode 100644 index 0000000..1e790d3 --- /dev/null +++ b/src/pTaskManagement/pTaskManger.moos @@ -0,0 +1,12 @@ +// MOOS file + +ServerHost = localhost +ServerPort = 9000 + +ProcessConfig = pTaskManger +{ + AppTick = 10 + CommsTick = 10 + planConfigPath = /home/zjk/Desktop/project/moos-ivp-extend/PlanConfigure.json +} + diff --git a/src/pTaskManger/CMakeLists.txt b/src/pTaskManger/CMakeLists.txt new file mode 100644 index 0000000..755d9ae --- /dev/null +++ b/src/pTaskManger/CMakeLists.txt @@ -0,0 +1,27 @@ +#-------------------------------------------------------- +# The CMakeLists.txt for: pTaskManger +# Author(s): zjk +#-------------------------------------------------------- + + +FILE(GLOB SRC *.cpp) + + +#include_directories(/usr/local/include/jsoncpp) +#link_directories(/usr/local/lib/) + +include_directories(/usr/include/jsoncpp/) +link_directories(/usr/local/lib/) + + +ADD_EXECUTABLE(pTaskManger ${SRC}) + + + +TARGET_LINK_LIBRARIES(pTaskManger + ${MOOS_LIBRARIES} + mbutil + m + pthread + jsoncpp) + diff --git a/src/pTaskManger/TaskManger.cpp b/src/pTaskManger/TaskManger.cpp new file mode 100644 index 0000000..c988fd2 --- /dev/null +++ b/src/pTaskManger/TaskManger.cpp @@ -0,0 +1,1032 @@ + +/************************************************************/ +/* NAME: zjk */ +/* ORGN: MIT */ +/* FILE: TaskManger.cpp */ +/* DATE: */ +/************************************************************/ +//TODO: 增加故障处理 +#include +#include +#include "MBUtils.h" +#include "TaskManger.h" + +using namespace std; + +#define DEBUG + + +//--------------------------------------------------------- +// Constructor + +TaskManger::TaskManger() +{ + + cout << "Task Manger process staring ... " << endl; +} + +//--------------------------------------------------------- +// Destructor + +TaskManger::~TaskManger() +{ + Notify("RUN","false"); + Notify("MOOS_MANUAL_OVERRIDE","true"); +} + +//--------------------------------------------------------- +// Procedure: OnNewMail + +bool TaskManger::OnNewMail(MOOSMSG_LIST &NewMail) +{ + AppCastingMOOSApp::OnNewMail(NewMail); + MOOSMSG_LIST::iterator p; + for(p=NewMail.begin(); p!=NewMail.end(); p++) + { + CMOOSMsg &msg = *p; + string msg_name = msg.GetName(); + string msg_str = msg.GetString(); + double msg_dval = msg.GetDouble(); + bool msg_bval = msg.GetBinaryData(); + // 内部消息 + if(msg_name == MSG_ENDFLAG) + { + if(msg_str == "true") + current_node_complete = true; + else + current_node_complete = false; + } + + if(msg_name == MSG_WPTFLAG) + { + if(msg_str == "true") + current_pol_complete = true; + else + current_pol_complete = false; + clearHelmFlag(); + } + + if(msg_name == MSG_FALUT) + { + state = FAULT; + faultMsg = msg_str; + if(faultMsg == "AltitudeOut") + faultNumber = 4; + else if(faultMsg == "DepthOut") + faultNumber = 1; + else if(faultMsg == "RegionOut") + faultNumber = 2; + else if(faultMsg == "TimeOut") + faultNumber = 2; + else + faultNumber = 99; + } + + if(msg_name == MSG_SENDSAFTRULES && msg_str == "true") // 暂时没用配置功能 + { + state = CONFIG; + st = 40; + } + if(msg_name == MSG_CLEARFAULT) + { + st = 39; + state = FAULT; + } + // 交互消息 + if(msg_name == MSG_IN_SSM) + { + Json::Value j; + Json::Reader a; + a.parse(msg_str,j); + RepList["FormSSM"] = j; + if(j["action"].asString() == "start") + { + taskName = j["taskName"].asString(); + state = RUN; + cout << "Task Manager Status is Run!!!" << endl; + start = true; + st = 10; + } + else if (j["action"].asString() == "stop") + { + taskName = ""; + state = UNRUN; + cout << "Task Manager Status is UnRun!!!" << endl; + st = 20; + } + else + { + RepList["RunWaring"] = "form SSM have unhandle action : " + j["action"].asString(); + } + } + + if((msg_name == MSG_FAULT_LEV2) || (msg_name == MSG_FALUT_LEV3)) + { + Json::Value j; + Json::Reader a; + a.parse(msg_str,j); + int falut_num = j["FaultLevel"].asInt(); + if(falut_num != 0) + { + faultNumber = 20; + state = FAULT; + } + } + + + if(msg_name == MSG_IN_MAN) + { + if(msg_dval == 1) + state = MANUAL; + else + state = UNRUN; + } + + } + return(true); +} + +//--------------------------------------------------------- +// Procedure: OnConnectToServer + +bool TaskManger::OnConnectToServer() +{ + Notify(MSG_ENDFLAG,"false"); + Notify(MSG_WPTFLAG,"false"); + // Notify(MSG_START,"false"); + Notify(MSG_RUN,"false"); + RegisterVariables(); + InitConfig(); + return(true); +} + +//--------------------------------------------------------- +// Procedure: Iterate() +bool TaskManger::Iterate() +{ + // happens AppTick times per second + AppCastingMOOSApp::Iterate(); + switch (state) + { + case RUN: //状态0~10 + { + switch(st) + { + case 0://发送任务开始、超时和第一个节点 + { + + //1. send first node + current_node = getNode(nodeList); + if(current_node == "") + st = 9; + else + { + sendNode(current_node, nodeList); + st = 1; + } + //2. send start + taskStart(); + current_node_complete = false; + current_pol_complete = false; + break; + } + case 1://等待节点完成信息 + { + if(current_node_complete || current_pol_complete) + { + cout << "Current WayPoint Node complete!" << endl; + if(current_node == "") + st = 9; + else + st = 2; + } + break; + } + case 2://读取当前节点信息 + { + current_node = getNode(nodeList); + if(current_node != "") + st = 3; + else + st = 1; + break; + } + case 3://发送任务节点 + { + sendNode(current_node, nodeList); + current_node_complete = false; + current_pol_complete = false; + st = 1; + break; + } + case 9://task complete + { + taskFinish(); + st = 10; + start = false; + break; + } + case 10://等待任务开始 + { + if(start) + st = 11; + break; + } + case 11://读取任务文件 + { + faultMsg = ""; + readTask = readTaskFile(taskName); + if( readTask != 0) + { + state = FAULT; + faultNumber = 10 + readTask; + st =30; + faultMsg = "TaskFileError : " + intToString(readTask); + } + st = 0; + break; + } + default: + { + st = 10; + //cout << "State reset ..." << endl; + //taskFinish(); + break; + } + } + break; + } + case UNRUN: //状态20~29 + { + switch(st) + { + case 20://进入UNRUN,初始化状态变量 + { + current_node_complete = false; + current_pol_complete = false; + current_node=""; + start = false; + Notify(MSG_ENDFLAG,"false"); + Notify(MSG_WPTFLAG,"false"); + Notify(MSG_RUN,"false"); + Notify("MOOS_MANUAL_OVERRIDE","true"); + cout << "Wating task start......" << endl; + st = 21; + break; + } + case 21://等待任务开始 + { + break; + } + default: + { + st = 20; + break; + } + } + break; + } + case FAULT: //状态30~39 + { + switch(st) + { + case 30: //判断故障信息 + { + if(faultNumber>0 && faultNumber<10) + st = 31; + else if(faultNumber>10 && faultNumber<20) + st = 32; + else if(faultNumber==20) + st = 33; + else + st = 38; + break; + } + case 31: //任务错误 + { + postFaultNumber(faultNumber); + state = UNRUN; + break; + } + case 32: //任务文本错误 + { + postFaultNumber(faultNumber); + state = UNRUN; + break; + } + case 20: //接收到来自其他组件的故障 + { + RepList["FALT"] = "Reresive fault from others"; + current_node_complete = false; + current_pol_complete = false; + current_node=""; + start = false; + Notify(MSG_ENDFLAG,"false"); + Notify(MSG_WPTFLAG,"false"); + Notify(MSG_RUN,"false"); + Notify("MOOS_MANUAL_OVERRIDE","true"); + cout << "Wating task start......" << endl; + st = 21; + } + case 38: //未知故障 + { + postFaultNumber(99); + break; + } + case 39: + { + FaultFlagClear(); + state = UNRUN; + break; + } + default: + { + st = 30; + break; + } + } + break; + } + case CONFIG: //状态40~49 + { + switch (st) + { + case 40: //配置安全规则 + { + readSafetyRules("a"); + setSafetyRules(maxTime, maxDepth, minAltitude, safePolygon); + // setMaxDepth(maxDepth); + setMaxDepth("2"); + st = 49; + break; + } + case 41: //路径参数配置 + { + readWayConfig("a"); + setWayConfig(lead,lead_damper,capture_line,capture_radius,slip_radius); + st = 49; + //setWayConfig(); + } + case 49: //等待 + { + state = UNRUN; + break; + } + default: + { + st = 49; + break; + } + } + + break; + } + case MANUAL: // 手操状态 + { + switch (st) + { + case 50: // 清除变量 + current_node_complete = false; + current_pol_complete = false; + current_node=""; + start = false; + Notify(MSG_ENDFLAG,"false"); + Notify(MSG_WPTFLAG,"false"); + Notify(MSG_RUN,"false"); + Notify("MOOS_MANUAL_OVERRIDE","true"); + cout << "Wating task start......" << endl; + st = 51; + break; + case 51: // 等待 + break; + default: + st = 50; + break; + } + break; + } + default: + { + st = 30; + break; + } + } + postReportToSSM(); + AppCastingMOOSApp::PostReport(); + return(true); +} + +//--------------------------------------------------------- +// Procedure: OnStartUp() +// happens before connection is open + +bool TaskManger::OnStartUp() +{ + AppCastingMOOSApp::OnStartUp(); + list sParams; + if(m_MissionReader.GetConfiguration(GetAppName(), sParams)) + { + list::iterator p; + for(p=sParams.begin(); p!=sParams.end(); p++) { + string original_line = *p; + string line = *p; + string param = stripBlankEnds(toupper(biteString(line, '='))); + string value = stripBlankEnds(line); + + if(param == "PLANCONFIGPATH") + { + planConfigPath = value; + RepList["CueenPath"] = planConfigPath; + } + } + } + if(planConfigPath == "") + reportConfigWarning("NO TASK FILE PATH"); + // readTaskFile("a"); + RegisterVariables(); + return(true); +} + +//--------------------------------------------------------- +// Procedure: RegisterVariables +/** + * @description: + * @param {double} depth + * @return {*} + */ +bool TaskManger::setMaxDepth(string depth) +{ + string msgContent = ""; + msgContent = "max_depth="; + msgContent += depth; + Notify(UPDATE_MAXDEP, msgContent); + cout << "set max depth is " + depth << "m!" << endl; + return true; +} +bool TaskManger::setWayPol(string polygon, string speed, string depth) +{ + string msgContent=""; + if(polygon=="#") + { + msgContent = "speed="; + msgContent += speed; + Notify(UPDATE_SPD, msgContent); + + msgContent = "depth=" + depth; + Notify(UPDATE_DEP, msgContent); + } + else + { + msgContent = "polygon="; + msgContent += polygon; + msgContent += "#"; + msgContent += "speed="; + msgContent += speed; + Notify(UPDATE_WPT, msgContent); + + //使用模版参数生成一个新的行为r + Notify(UPDATE_WPT,"name=way_track"); + // msgContent = "polygon="; + // msgContent += polygon; + // msgContent += "#"; + Notify(UPDATE_WPT, msgContent); + msgContent = "speed="; + msgContent += speed; + Notify(UPDATE_SPD, msgContent); + + msgContent = "depth=" + depth; + Notify(UPDATE_DEP, msgContent); + }; + return true; +} +/** + * @description: + * @param {string} wpt + * @return {*} + */ +bool TaskManger::setWpt(std::string wpt, string speed, string depth) +{ + string msgContent=""; + + msgContent += "points="; + msgContent += wpt; + msgContent += "#"; + msgContent += "speed="; + msgContent += speed; + // msgContent += "#"; + Notify(UPDATE_WPT,msgContent); + Notify(UPDATE_WPT,"name=way_topoint"); + + + msgContent = "depth=" + depth; + Notify(UPDATE_DEP, msgContent); + + msgContent = "speed="; + msgContent += speed; + Notify(UPDATE_SPD, msgContent); + + + cout << "MSG is : " << msgContent + "#depth=" << depth << endl; + // Notify("WPT_UPDATE", wpt); + return true; +} + +/** + * @description: + * @param {double} speed + * @return {*} + */ +bool TaskManger::setSpeed(double speed) +{ + Notify("SPEED_UPDATE", speed); + return true; +} + +bool TaskManger::setTaskTimer(string timeCount) +{ + cout << "Set task timer is " << timeCount << "seconds!" << endl; + string msgContent=""; + msgContent += "name=taskTimer"; + msgContent += "#"; + msgContent += "duration="; + msgContent += timeCount; + Notify(UPDATE_TIMER,msgContent); +} + +bool TaskManger::setSafetyRules(string maxTime, string maxDepth, string minAltitude, string polygon) +{ + string msgContent=""; + msgContent += "max_time="; + msgContent += maxTime; + msgContent += "#"; + msgContent += "max_depth="; + msgContent += maxDepth; + msgContent += "#"; + msgContent += "min_altitude="; + msgContent += minAltitude; + msgContent += "#"; + msgContent += "polygon="; + msgContent += polygon; + + cout << " The Op_Region parm is : " << msgContent << endl; + Notify(UPDATE_OPREGION, msgContent); + return true; +} +bool TaskManger::setWayConfig(string lead, string lead_damper, string capture_line, string capture_radius,string slip_radius) +{ + string msgContent=""; + + msgContent = "lead="; + msgContent += lead; + msgContent += "#"; + msgContent += "lead_damper="; + msgContent += lead_damper; + msgContent += "#"; + msgContent += "capture_line="; + msgContent += capture_line; + msgContent += "#"; + msgContent += "capture_radius="; + msgContent += capture_radius; + msgContent += "#"; + msgContent += "slip_radius="; + msgContent += slip_radius; + + Notify(UPDATE_WPT, msgContent); + cout << "Config waypoint parm is :" << msgContent << endl; +} + +/** + * @description: + * @return {*} + */ +void TaskManger::RegisterVariables() +{ + AppCastingMOOSApp::RegisterVariables(); + //内部消息订阅 + Register(MSG_ENDFLAG, 0); + Register(MSG_WPTFLAG,0); + Register(MSG_SENDSAFTRULES,0); + Register(MSG_FALUT,0); + Register(MSG_CLEARFAULT,0); + //交互消息订阅 + Register(MSG_IN_SSM,0); + Register(MSG_IN_MAN,0); + Register(MSG_FAULT_LEV2,1); + Register(MSG_FALUT_LEV3,1); +} +/** + * @description: read task File to nodeList + * @param {string} fileName + * @return {*} 0 if true else >0 + */ +int TaskManger::readTaskFile(string taskName) +{ + int faultNubmer = 0; + if(!nodeList.empty()) + nodeList.clear(); + ifstream ifs; + ifs.open(planConfigPath, ios::in); + Json::Reader taskConfigureReader; + Json::Value inputJsonValue; + Json::Value currentTask; + taskConfigureReader.parse(ifs, inputJsonValue); + ifs.close(); + int taskCount = inputJsonValue.size(); + taskList = inputJsonValue.getMemberNames(); + taskCount = inputJsonValue.size(); + //part1 : 判断是否存在这个任务 + if (!inputJsonValue.isMember(taskName)) + { + RepList["Task in File"] = "False"; + return faultNubmer=1; + } + else + { + //part2 : 读取任务 + string node=""; + currentTask = inputJsonValue[taskName]; + if(currentTask["taskName"].asString() != taskName) + return faultNubmer=2; + + double currentTask_maxTime = currentTask["duration"].asDouble(); + double repeat = currentTask["repeat"].asDouble(); + + if(!currentTask["points"].isArray()) + return faultNubmer=3; + + Json::Value currentTask_Points = currentTask["points"]; + int ps_cnt = currentTask_Points.size(); + for(int i=0; i nodeList) +{ + auto i = nodeList.begin(); + string polygon=""; + TaskType t; + while(i != nodeList.end()) + { + if(getTaskTpye(*i)==WAYPOLYGON) + { + polygon += getWayPoint(*i); + polygon += ":"; + } + else + break; + i++; + } + if(polygon.size()>1) + polygon.erase(polygon.end()-1); + // cout << "Current way polygon is: " << polygon << endl; + return polygon; +} +/** + * @description: + * @param {string} node + * @return {*} + */ +TaskType TaskManger::getTaskTpye(string node) +{ + string type; + TaskType nodetype; + if(getWord(node, 0, type)) + { + // cout << "Current task type is: " << type << endl; + // return type; + if(type=="@1") + return nodetype=WAYPOINTS; + else if(type=="@2") + return nodetype=WAYPOLYGON; + else if(type=="@3") + return nodetype=CONSTHEADING; + else + return nodetype=NOTYPE; + } + else + cout << "Warming: read type of task Parm Filed" << endl; +} +/** + * @description: + * @param {string} str + * @param {int} c + * @return {*} + */ +bool TaskManger::getWord(const string str, int ct, string &word) +{ + string cword; + int count=0; + for(auto c:str) + { + if(c==',') + { + if(count==ct) + { + word = cword; + return true; + } + cword=""; + count++; + } + else + cword += c; + } + word = cword; + if(ct==0) + return true; + else + return false; +} + +string TaskManger::getNode(list &nodelist) +{ + string current_node; + if(!nodelist.empty()) + { + cout << "The remaining number of nodes is: " << nodelist.size() << endl; + current_node = nodelist.front(); + nodelist.pop_front(); + cout << "Current Node is " << current_node << endl; + } + else + current_node=""; + return current_node; +} + +string TaskManger::getTimeCount() +{ + return "1000"; +} + +string TaskManger::getMaxDepth() +{ + return "20"; +} +string TaskManger::getNodeName(const string node) +{ + string name=""; + if(getWord(node, 5, name)) + { + return name; + } + else + cout << "Warming: read Speed Parm Filed" << endl; + // getWord(node, 3, depth); + return name; +} +bool TaskManger::sendNode(const string current_node, list &nodeList) +{ + // cout << "Current WayPoint Node complete" << endl; + string node_pol; + nodeType = getTaskTpye(current_node); + switch(nodeType) + { + case WAYPOINTS: + { + node_wpt = getWayPoint(current_node); + node_depth = getDepth(current_node); + node_speed = getSpeed(current_node); + setWpt(node_wpt, node_speed, node_depth); + current_node_complete = false; + break; + } + case WAYPOLYGON: + { + node_depth = getDepth(current_node); + node_speed = getSpeed(current_node); + if (current_pol_complete && !current_node_complete) //wayflag发布但是endflag没有发布时代表不是首个节点,不发布路径信息 + { + node_pol = "#"; + } + else //if(current_pol_complete && current_node_complete) + { + nodeList.push_front(current_node); + node_pol = getWayPolygon(nodeList); + nodeList.pop_front(); + } + setWayPol(node_pol, node_speed, node_depth); + cout << "MSG is :Pol=" + node_pol + "#speed=" + node_speed + "#depth=" + node_depth<< endl; + break; + } + default: + break; + } + current_node_complete = false; + current_pol_complete = false; + + return true; +} + +void TaskManger::FaultFlagClear() +{ + faultNumber = 0; + if(faultMsg == "AltitudeOut") + Notify(UPDATE_RESETFAULT,"altittude"); + else if(faultMsg == "DepthOut") + Notify(UPDATE_RESETFAULT,"depth"); + else if(faultMsg == "RegionOut") + Notify(UPDATE_RESETFAULT,"poly"); + else if(faultMsg == "TimeOut") + Notify(UPDATE_RESETFAULT,"time"); + else + cout << "Can not Clear Unknow Fault Flag!!!" << endl; + cout << "Clear Fault : " + faultMsg << endl; +} + +bool TaskManger::buildReport() +{ + switch (state) + { + case UNRUN: + { + m_msgs << "$Task Manager Status$:" << "UNRUN" << endl; + m_msgs << "$Idel Task Number$:" << taskCount << endl; + break; + } + case RUN: + { + m_msgs << "$Task Manager Status$:" << "RUN" << endl; + m_msgs << "$Current Task Point$ :" << current_node << endl; + m_msgs << "Currnet Task List :" << endl; + for(string i : nodeList) + m_msgs << " : " << i << endl; + break; + } + case FAULT: + { + m_msgs << "$Task Manager Status$:" << "FAULT" << endl; + break; + } + + default: + break; + } + m_msgs << "=========================================================" << endl; + RepList["Current Node"] = current_node; + RepList["remaining number of nodes"] = (int)nodeList.size()+1; + string rep = Json::writeString(RepJsBuilder, RepList); + m_msgs << rep << endl; + return true; +} + +inline void TaskManger::taskStart() +{ + Notify("RUN","true"); + Notify("MOOS_MANUAL_OVERRIDE","false"); +} +inline void TaskManger::taskFinish() +{ + current_node=""; + Notify("RUN","false"); + state = UNRUN; + cout << "The task node is all complete!!!" << endl; + Notify("MOOS_MANUAL_OVERRIDE","true"); +} +inline void TaskManger::InitConfig() +{ + Notify(MSG_ENDFLAG,"false"); + Notify(MSG_WPTFLAG,"false"); + // Notify(MSG_START,"false"); + Notify(MSG_RUN,"false"); + // + readSafetyRules("q"); + setSafetyRules(maxTime, maxDepth, minAltitude, safePolygon); + readWayConfig("a"); + setWayConfig(lead,lead_damper,capture_line,capture_radius,slip_radius); +} + +void TaskManger::postReportToSSM() +{ + string s_msg; + Json::Value msg; + msg["state"] = state; + msg["taskName"] = taskName; + msg["destName"] = getNodeName(current_node); + msg["errorCode"] = faultNumber; + // msg["progess"] = + // msg["eta"] = + RepList["toSSM"] = msg; + s_msg = Json::writeString(RepJsBuilder,msg); + Notify(MSG_TO_SSM, s_msg); +} +//1:超深 +//2.超时 +//3.超出区域 +//4.低于最小高度 +//11:任务文本 +//20:接收到其余程序传递的故障 +//99.未知故障 +void TaskManger::postFaultNumber(int n) +{ + Notify(MSG_TO_FH,n); +} \ No newline at end of file diff --git a/src/pTaskManger/TaskManger.h b/src/pTaskManger/TaskManger.h new file mode 100644 index 0000000..69d8a67 --- /dev/null +++ b/src/pTaskManger/TaskManger.h @@ -0,0 +1,151 @@ +/* + * @Author: 1553836110 1553836110@qq.com + * @Date: 2023-09-28 15:45:17 + * @LastEditors: zjk 1553836110@qq.com + * @LastEditTime: 2023-11-15 09:31:32 + * @FilePath: /moos-ivp-pi/src/pTaskManger/TaskManger.h + * @Description: + * + * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved. + */ +/************************************************************/ +/* NAME: zjk */ +/* ORGN: MIT */ +/* FILE: TaskManger.h */ +/* DATE: */ +/************************************************************/ + +#ifndef TaskManger_HEADER +#define TaskManger_HEADER + +#include "MOOS/libMOOS/MOOSLib.h" +#include "MOOS/libMOOS/Thirdparty/AppCasting/AppCastingMOOSApp.h" +#include +#include +#include "json/json.h" +#include "VarDataPair.h" + +using namespace std; +enum TaskType{WAYPOINTS, CONSTDEPTH, CONSTSPEED, CONSTHEADING, WAYPOLYGON, NOTYPE}; +enum Status{FAULT=0, UNRUN=1, MANUAL=2 ,RUN=3, CONFIG=5}; +// class TaskManger : public CMOOSApp +class TaskManger : public AppCastingMOOSApp +{ + public: + TaskManger(); + virtual ~TaskManger(); + + bool OnNewMail(MOOSMSG_LIST &NewMail); + bool Iterate(); + bool OnConnectToServer(); + bool OnStartUp(); + void RegisterVariables(); + bool buildReport(); + void postFaultNumber(int n); + + bool setSpeed(double speed); + bool setMaxDepth(string depth); + bool setWpt(std::string wpt, string speed, string depth); + bool setWayPol(string polygon, string speed, string depth); + bool setTaskTimer(string timerCount); + bool setSafetyRules(string maxTime, string maxDepth, string minAltitude, string polygon); + bool setWayConfig(string lead, string lead_damper, string capture_line, string capture_radius,string slip_radius); + + bool sendNode(const string current_node, list &nodeList); + + bool getWord(const string str, int ct, string &word); + string getSpeed(const string node); + string getDepth(const string node); + string getWayPoint(const string node); + string getWayPolygon(const list nodeList); + string getNodeName(const string node); + string getNode(list &nodelist); + string getTimeCount(); + string getMaxDepth(); + TaskType getTaskTpye(const string node); + + int readTaskFile(string taskName); + int readSafetyRules(string fileName); + int readWayConfig(string fileName); + void postReportToSSM(); + + inline void clearHelmFlag(){Notify("HELM_MAP_CLEAR",0.0);} + inline void taskStart(); + inline void taskFinish(); + void FaultFlagClear(); + inline void InitConfig(); + //内部消息发布 + const string UPDATE_WPT = "WPT_UPDATE"; + const string UPDATE_SPD = "SPEED_UPDATE"; + const string UPDATE_DEP = "DEPTH_UPDATE"; + const string UPDATE_TIMER = "TIMER_UPDATES"; + const string UPDATE_MAXDEP = "MAXDEEP_UPDATES"; + const string UPDATE_OPREGION = "OPREGION_UPDATES"; + const string UPDATE_RESETFAULT = "OPREGION_RESET"; + //内部消息订阅 + const string MSG_WPTFLAG = "CurrentPointComplete"; + const string MSG_ENDFLAG = "END_WayPoint"; + const string MSG_START = "START"; + const string MSG_SENDSAFTRULES = "SendSaftRules"; + const string MSG_FALUT = "TaskFault"; + const string MSG_RUN = "RUN"; + const string MSG_CLEARFAULT = "ClearFalut"; + //交互消息 + const string MSG_IN_SSM = "uMission_action_cmd"; + const string MSG_TO_SSM = "uMission_task_fb"; + const string MSG_TO_FH = "uMission_fault_fb"; + const string MSG_IN_MAN = "uManual_enable_cmd"; //TODO: 增加手操状态 + const string MSG_FAULT_LEV2 = "uFH_errorMsg2_fb"; + const string MSG_FALUT_LEV3 = "uFH_errorMsg3_fb"; + +protected: +// 任务参数 + string node_wpt; + string node_depth; + string node_speed; +// 安全规则 + string maxDepth; + string maxTime; + string safePolygon; + string minAltitude="0"; +// 路径参数 + string lead; + string lead_damper; + string lead_to_start; + string capture_line; + string capture_radius; + string slip_radius; + string efficiency_measure; + + string faultMsg; + + TaskType nodeType; + list nodeList; + +private: + bool current_node_complete = false; + bool current_pol_complete = false; + bool start=false; + bool time_out=false; + int st=10; + int faultNumber = 0; + int readTask = 0; + string msg; + string current_node; + Status state = UNRUN; + + Json::Value RepList; + Json::StreamWriterBuilder RepJsBuilder; + + +//任务文件参数 +//TODO:动态配置任务文件等参数 + string planConfigPath; + vector taskList; + int taskCount; + string taskName; +//发送节点信息 + Json::Value node_rpt; +}; + +#endif diff --git a/src/pTaskManger/TaskMangerMain.cpp b/src/pTaskManger/TaskMangerMain.cpp new file mode 100644 index 0000000..9a8cab1 --- /dev/null +++ b/src/pTaskManger/TaskMangerMain.cpp @@ -0,0 +1,65 @@ +/* + * @Author: zjk 1553836110@qq.com + * @Date: 2023-09-28 15:45:17 + * @LastEditors: zjk 1553836110@qq.com + * @LastEditTime: 2023-10-24 15:13:22 + * @FilePath: /moos-ivp-extend/src/pTaskManger/TaskMangerMain.cpp + * @Description: + * + * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved. + */ +/************************************************************/ +/* NAME: zjk */ +/* ORGN: MIT */ +/* FILE: TaskMangerMain.cpp */ +/* DATE: */ +/************************************************************/ + +#include +#include "TaskManger.h" +#include "ColorParse.h" +#include "MBUtils.h" + +using namespace std; + +int main(int argc, char *argv[]) +{ + string mission_file; + string run_command = argv[0]; + + for(int i=1; i& /dev/null & + +uMAC -t $COMMUNITY.moos +kill -- -$$ diff --git a/src/pTaskManger/pTaskManger.moos b/src/pTaskManger/pTaskManger.moos new file mode 100644 index 0000000..1e790d3 --- /dev/null +++ b/src/pTaskManger/pTaskManger.moos @@ -0,0 +1,12 @@ +// MOOS file + +ServerHost = localhost +ServerPort = 9000 + +ProcessConfig = pTaskManger +{ + AppTick = 10 + CommsTick = 10 + planConfigPath = /home/zjk/Desktop/project/moos-ivp-extend/PlanConfigure.json +} + diff --git a/src/pTaskSend/CMakeLists.txt b/src/pTaskSend/CMakeLists.txt new file mode 100644 index 0000000..3362e8f --- /dev/null +++ b/src/pTaskSend/CMakeLists.txt @@ -0,0 +1,38 @@ +#-------------------------------------------------------- +# The CMakeLists.txt for: pTaskSend +# Author(s): zjk +#-------------------------------------------------------- + +FILE(GLOB SRC *.cpp) + +SET(CMAKE_CXX_STANDARD 11) + +FIND_LIBRARY(DUNE_LIB dune-core /usr/local/lib /usr/local/lib/DUNE) +FIND_PATH(DUNE_INCLUDE DUNE/IMC.hpp /usr/local/include /usr/local/include/DUNE) +include_directories(${DUNE_INCLUDE}) + +include_directories(${CMAKE_CURRENT_SOURCE_DIR}) + +# find_package (jsoncpp NO_MODULE REQUIRED) + +include_directories(/usr/include/jsoncpp/) +link_directories(/usr/local/lib/) + +ADD_EXECUTABLE(pTaskSend ${SRC}) + +TARGET_LINK_LIBRARIES(pTaskSend + ${MOOS_LIBRARIES} + ${CMAKE_DL_LIBS} + ${SYSTEM_LIBS} + ${DUNE_LIB} + mbutil + m + pthread + fltk # Standard libraries used by this project's FLTK apps... + fltk_gl + dl + tiff + jsoncpp + # jsoncpp_lib_static +) + diff --git a/src/pTaskSend/TaskSend.cpp b/src/pTaskSend/TaskSend.cpp new file mode 100644 index 0000000..3580fb0 --- /dev/null +++ b/src/pTaskSend/TaskSend.cpp @@ -0,0 +1,545 @@ +/* + * @Author: error: error: git config user.name & please set dead value or install git && error: git config user.email & please set dead value or install git & please set dead value or install git + * @Date: 2023-09-21 11:04:00 + * @LastEditors: zjk 1553836110@qq.com + * @LastEditTime: 2023-10-07 10:37:30 + * @FilePath: /moos-ivp-extend/src/pTaskSend/TaskSend.cpp + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ +/************************************************************/ +/* NAME: zjk */ +/* ORGN: MIT */ +/* FILE: TaskSend.cpp */ +/* DATE: */ +/************************************************************/ + +#include +#include +#include "MBUtils.h" +#include "TaskSend.h" +#include + +#include + +using namespace std; + +#define UDP_RECEIVE_PORT 8000 +#define TCP_SEND_PORT 6000 +#define TCP_SERVER_ADDRESS "127.0.0.1" + +using namespace std; + +//--------------------------------------------------------- +// Constructor + +TaskSend::TaskSend() +{ +} + +//--------------------------------------------------------- +// Destructor + +TaskSend::~TaskSend() +{ +} + +//--------------------------------------------------------- +// Procedure: OnNewMail + +bool TaskSend::OnNewMail(MOOSMSG_LIST &NewMail) +{ + MOOSMSG_LIST::iterator p; + + for(p=NewMail.begin(); p!=NewMail.end(); p++) + { + CMOOSMsg &msg = *p; + p->Trace(); + // current_msg = msg; + if(p->GetName()== "SendTask") + if(p->GetString() == "true") + { + editView=true; + } + + if(p->GetName()=="BHV_WARNING") + if(p->GetString() != "") + { + error = true; + } + + } + + return(true); +} + +//--------------------------------------------------------- +// Procedure: OnConnectToServer + +bool TaskSend::OnConnectToServer() +{ + Notify("SendTask","false"); + RegisterVariables(); + return(true); +} + +//--------------------------------------------------------- +// Procedure: Iterate() + +bool TaskSend::Iterate() +{ + // happens AppTick times per second + if(editView) + { + error=false; + view = taskEditView(); + view->show(); + // delete view; + // Fl::grab(); + Fl::run(); /* 6. 运行FLTK主循环 */ + cout << "editView = true" << endl; + editView=false; + } + + if(error) + { + error=true; + disp1->value("parameter incorrect"); + + } + + cout << "error=" << error << "editView" << editView << endl; + + + return(true); +} + +//--------------------------------------------------------- +// Procedure: OnStartUp() +// happens before connection is open + +bool TaskSend::OnStartUp() +{ + list sParams; + if(m_MissionReader.GetConfiguration(GetAppName(), sParams)) { + list::iterator p; + for(p=sParams.begin(); p!=sParams.end(); p++) { + string original_line = *p; + string line = *p; + string param = stripBlankEnds(toupper(biteString(line, '='))); + string value = stripBlankEnds(line); + + if(param == "FOO") { + //handled + } + else if(param == "BAR") { + //handled + } + } + } + + RegisterVariables(); + +#if 1 + sock_tcp_send.connect(TCP_SERVER_ADDRESS, TCP_SEND_PORT); + sock_tcp_send.setKeepAlive(true); +#endif + + return(true); +} + +std::string TaskSend::SetPlan1(std::string sourceName, double stamp) +{ + struct WayPointBehavior behavior; + behavior.source = sourceName; + behavior.priority = -1; + behavior.points.clear(); + behavior.name = "east_waypt_survey"; + behavior.priority = 10; + struct Landmark station_1 = {-70.328891,43.824429, 10, 3}; + struct Landmark station_2 = {-70.327885,43.824676, 8, 5}; + struct Landmark station_3 = {-70.327867,43.823622, 6, 7}; + struct Landmark station_4 = {-70.328765,43.823622, 4, 9}; + behavior.points.push_back(station_1); + behavior.points.push_back(station_2); + behavior.points.push_back(station_3); + behavior.points.push_back(station_4); + behavior.duration = -1; + behavior.constSpeed = -1; + behavior.repeate = -1; + behavior.closedLoop = true; + behavior.perpetual = true; + behavior.minDepth = -1; + behavior.maxDepth = -1; + + Json::Value behaviorConfig; + behaviorConfig["name"] = behavior.name; + behaviorConfig["source"] = behavior.source; + behaviorConfig["client stamp"] = stamp; + behaviorConfig["board stamp"] = -1; + behaviorConfig["priority"] = behavior.priority; + behaviorConfig["duration"] = behavior.duration; + behaviorConfig["closedLoop"] = behavior.closedLoop; + behaviorConfig["constSpeed"] = behavior.constSpeed; + behaviorConfig["repeate"] = behavior.repeate; + behaviorConfig["perpetual"] = behavior.perpetual; + behaviorConfig["minDepth"] = behavior.minDepth; + behaviorConfig["maxDepth"] = behavior.maxDepth; + Json::Value station; + station["lon"] = station_1.lon; + station["lat"] = station_1.lat; + station["depth"] = station_1.depth; + station["speed"] = station_1.speed; + behaviorConfig["points"].append(station); + station["lon"] = station_2.lon; + station["lat"] = station_2.lat; + station["depth"] = station_2.depth; + station["speed"] = station_2.speed; + behaviorConfig["points"].append(station); + station["lon"] = station_3.lon; + station["lat"] = station_3.lat; + station["depth"] = station_3.depth; + station["speed"] = station_3.speed; + behaviorConfig["points"].append(station); + station["lon"] = station_4.lon; + station["lat"] = station_4.lat; + station["depth"] = station_4.depth; + station["speed"] = station_4.speed; + behaviorConfig["points"].append(station); + behaviorConfig["client stamp"] = stamp; + Json::StreamWriterBuilder builder; + std::string behaviorSpecString = Json::writeString(builder, behaviorConfig); + + return behaviorSpecString; +} + +std::string TaskSend::SetPlan2(std::string sourceName, double stamp) +{ + struct WayPointBehavior behavior; + behavior.source = sourceName; + behavior.priority = -1; + behavior.points.clear(); + behavior.name = "west_waypt_survey"; + behavior.priority = 10; + struct Landmark station_1 = {-70.331532,43.824194, 9, 4}; + struct Landmark station_2 = {-70.330328,43.824299, 7, 6}; + struct Landmark station_3 = {-70.330346,43.823518, 5, 8}; + struct Landmark station_4 = {-70.331406,43.823206, 3, 10}; + behavior.points.push_back(station_1); + behavior.points.push_back(station_2); + behavior.points.push_back(station_3); + behavior.points.push_back(station_4); + behavior.duration = -1; + behavior.constSpeed = -1; + behavior.repeate = -1; + behavior.closedLoop = true; + behavior.perpetual = true; + behavior.minDepth = -1; + behavior.maxDepth = -1; + + Json::Value behaviorConfig; + behaviorConfig["name"] = behavior.name; + behaviorConfig["source"] = behavior.source; + behaviorConfig["client stamp"] = stamp; + behaviorConfig["board stamp"] = -1; + behaviorConfig["priority"] = behavior.priority; + behaviorConfig["duration"] = behavior.duration; + behaviorConfig["closedLoop"] = behavior.closedLoop; + behaviorConfig["constSpeed"] = behavior.constSpeed; + behaviorConfig["repeate"] = behavior.repeate; + behaviorConfig["perpetual"] = behavior.perpetual; + behaviorConfig["minDepth"] = behavior.minDepth; + behaviorConfig["maxDepth"] = behavior.maxDepth; + Json::Value station; + station["lon"] = station_1.lon; + station["lat"] = station_1.lat; + station["depth"] = station_1.depth; + station["speed"] = station_1.speed; + behaviorConfig["points"].append(station); + station["lon"] = station_2.lon; + station["lat"] = station_2.lat; + station["depth"] = station_2.depth; + station["speed"] = station_2.speed; + behaviorConfig["points"].append(station); + station["lon"] = station_3.lon; + station["lat"] = station_3.lat; + station["depth"] = station_3.depth; + station["speed"] = station_3.speed; + behaviorConfig["points"].append(station); + station["lon"] = station_4.lon; + station["lat"] = station_4.lat; + station["depth"] = station_4.depth; + station["speed"] = station_4.speed; + behaviorConfig["points"].append(station); + + Json::StreamWriterBuilder builder; + std::string behaviorSpecString = Json::writeString(builder, behaviorConfig); + + return behaviorSpecString; +} + +std::string TaskSend::ModifyPlan1(std::string sourceName, double stamp) +{ + struct WayPointBehavior behavior; + behavior.source = sourceName; + behavior.priority = -1; + behavior.points.clear(); + behavior.name = "east_waypt_survey"; + behavior.priority = 10; + struct Landmark station_1 = {-70.328891,43.824429, 9, 2}; + struct Landmark station_2 = {-70.327885,43.824676, 7, 4}; + struct Landmark station_3 = {-70.327867,43.823622, 5, 6}; + struct Landmark station_4 = {-70.328765,43.823622, 3, 8}; + behavior.points.push_back(station_1); + behavior.points.push_back(station_2); + behavior.points.push_back(station_3); + behavior.points.push_back(station_4); + behavior.duration = -1; + behavior.constSpeed = -1; + behavior.repeate = -1; + behavior.closedLoop = true; + behavior.perpetual = true; + behavior.minDepth = -1; + behavior.maxDepth = -1; + + Json::Value behaviorConfig; + behaviorConfig["name"] = behavior.name; + behaviorConfig["source"] = behavior.source; + behaviorConfig["client stamp"] = stamp; + behaviorConfig["board stamp"] = -1; + behaviorConfig["priority"] = behavior.priority; + behaviorConfig["duration"] = behavior.duration; + behaviorConfig["closedLoop"] = behavior.closedLoop; + behaviorConfig["constSpeed"] = behavior.constSpeed; + behaviorConfig["repeate"] = behavior.repeate; + behaviorConfig["perpetual"] = behavior.perpetual; + behaviorConfig["minDepth"] = behavior.minDepth; + behaviorConfig["maxDepth"] = behavior.maxDepth; + Json::Value station; + station["lon"] = station_1.lon; + station["lat"] = station_1.lat; + station["depth"] = station_1.depth; + station["speed"] = station_1.speed; + behaviorConfig["points"].append(station); + station["lon"] = station_2.lon; + station["lat"] = station_2.lat; + station["depth"] = station_2.depth; + station["speed"] = station_2.speed; + behaviorConfig["points"].append(station); + station["lon"] = station_3.lon; + station["lat"] = station_3.lat; + station["depth"] = station_3.depth; + station["speed"] = station_3.speed; + behaviorConfig["points"].append(station); + station["lon"] = station_4.lon; + station["lat"] = station_4.lat; + station["depth"] = station_4.depth; + station["speed"] = station_4.speed; + behaviorConfig["points"].append(station); + + Json::StreamWriterBuilder builder; + std::string behaviorSpecString = Json::writeString(builder, behaviorConfig); + + return behaviorSpecString; +} + +//--------------------------------------------------------- +// Procedure: RegisterVariables + +void TaskSend::RegisterVariables() +{ + Register("SendTask",0); + Register("BHV_WARNING",0); + // Register("FOOBAR", 0); +} + +Fl_Window * TaskSend::taskEditView() +{ + Fl_Window *window = new Fl_Window(405, 600, "task config"); + // Fl_Double_Window *window(450, 350, "Simple Table"); /* 1. 创建一个窗口 */ + Fl_Group* pGroup = new Fl_Group(0, 0, 400, 70); /* 2. 创建一个分组 */ + pGroup->box(FL_GTK_UP_BOX); + + Fl_Button* Button_1 = new Fl_Button(5, 5, 90, 30, "send task 1"); //发送任务 + Button_1->callback(st_sendTask1Callback, (void*) this); + + Fl_Button* Button_2 = new Fl_Button(105, 5, 90, 30, "send task 2"); //发送任务 + Button_2->callback(st_sendTask2Callback, (void*) this); + + Fl_Button* Button_3 = new Fl_Button(205, 5, 90, 30, "modify task 1"); //发送任务 + Button_3->callback(st_ModifyTask1Callback, (void*) this); + + Fl_Button* Button_4 = new Fl_Button(295, 5, 90, 30, "load task"); + Button_4->callback(st_FeedbackTaskCallback, (void*) this); + + Fl_Output* TaskMsgDisp = new Fl_Output(5,35,390,30); + TaskMsgDisp->box(FL_FLAT_BOX); + disp1 = TaskMsgDisp; + pGroup->end(); /* 4. 结束上个容器的创建 */ + + Fl_Group* pGroup1 = new Fl_Group(0, 90, 400, 70,"task parameter"); /* 2. 创建一个分组 */ + pGroup1->box(FL_GTK_UP_BOX); + + Fl_Menu_Button* taskType =new Fl_Menu_Button(5,95,100,25,"task type"); + taskType->add("path tracking"); + taskType->add("fixed yaw"); + taskType->add("fixed depth"); + taskType->add("fixed speed"); + // taskType->add(""); + Fl_Input* pwt = new Fl_Input(200,90,100,30,"task priority"); + pwt->value("100"); + Fl_Input* duration = new Fl_Input(200,35+90,100,30,"task duration"); + duration->value("no-time-limit"); + // pGroup1->add(taskType); + pGroup1->end(); + + Fl_Group* pGroup2 = new Fl_Group(0, 180, 400, 300,"path tracking parameter"); + pGroup2->box(FL_GTK_UP_BOX); + pGroup2->add(capture_radius); + capture_radius->value("5"); + pGroup2->add(capture_line); + capture_line->value("true"); + pGroup2->add(slip_radius); + slip_radius->value("15.0"); + pGroup2->add(lead); + lead->value("8"); + pGroup2->add(lead_damper); + lead_damper->value("1"); + pGroup2->add(speed); + speed->value("10.0"); + pGroup2->add(repeat); + repeat->value("3"); + pGroup2->add(polygon); + + + pGroup2->end(); + window->end(); /* 4. 结束上个容器的创建 */ + // window->show(); /* 5. 显示窗口 */ + return window; + // delete window; +} + +inline int TaskSend::sendTaskCallback(Fl_Widget *w) +{ + disp1->value("Task Sending..."); + Notify("TaskNum","t1"); + string taskMsg = "WPT_UPDATE"; + string taskMsgconit=""; + // if(polygon->value()=="") + // disp1->value(polygon->value()); + taskMsgconit = "capture_radius="; + taskMsgconit += capture_radius->value(); + Notify(taskMsg,taskMsgconit); + + taskMsgconit = "capture_line="; + taskMsgconit += capture_line->value(); + Notify(taskMsg,taskMsgconit); + + taskMsgconit = "slip_radius="; + taskMsgconit += slip_radius->value(); + Notify(taskMsg,taskMsgconit); + + taskMsgconit = "lead="; + taskMsgconit += lead->value(); + Notify(taskMsg,taskMsgconit); + + taskMsgconit = "lead_damper="; + taskMsgconit += lead_damper->value(); + Notify(taskMsg,taskMsgconit); + + taskMsgconit = "speed="; + taskMsgconit += speed->value(); + Notify(taskMsg,taskMsgconit); + + taskMsgconit = "repeat="; + taskMsgconit += repeat->value(); + Notify(taskMsg,taskMsgconit); + + taskMsgconit = "polygon="; + taskMsgconit += polygon->value(); + Notify(taskMsg,taskMsgconit); + + if(error) + disp1->value("configure incorrect"); + else + disp1->value("Task Send complete"); + // disp1->value("Task Send complete"); + +} + +inline int TaskSend::sendTask1Callback(Fl_Widget *w) +{ + std::string systemName = "neptus-client-1"; + std::string plan_1_Spec = SetPlan1(systemName, getTimeStamp()); + std::cout << plan_1_Spec << std::endl; + DUNE::IMC::PlanDB msg; + msg.setTimeStamp(); + msg.type = DUNE::IMC::PlanDB::TypeEnum::DBT_REQUEST; + msg.op = DUNE::IMC::PlanDB::OperationEnum::DBOP_SET; + msg.plan_id.assign("BHV_Waypoint"); + msg.info = plan_1_Spec; + tcpSendToServer(&msg, TCP_SERVER_ADDRESS, TCP_SEND_PORT); + +} + +inline int TaskSend::sendTask2Callback(Fl_Widget *w) +{ + std::string systemName = "neptus-client-1"; + std::string plan_2_Spec = SetPlan2(systemName, getTimeStamp()); + std::cout << plan_2_Spec << std::endl; + DUNE::IMC::PlanDB msg; + msg.setTimeStamp(); + msg.type = DUNE::IMC::PlanDB::TypeEnum::DBT_REQUEST; + msg.op = DUNE::IMC::PlanDB::OperationEnum::DBOP_SET; + msg.plan_id.assign("BHV_Waypoint"); + msg.info = plan_2_Spec; + tcpSendToServer(&msg, TCP_SERVER_ADDRESS, TCP_SEND_PORT); +} + +inline int TaskSend::ModifyTask1Callback(Fl_Widget *w) +{ + std::string systemName = "neptus-client-1"; + std::string plan_1_Spec = ModifyPlan1(systemName, getTimeStamp()); + std::cout << plan_1_Spec << std::endl; + DUNE::IMC::PlanDB msg; + msg.setTimeStamp(); + msg.type = DUNE::IMC::PlanDB::TypeEnum::DBT_REQUEST; + msg.op = DUNE::IMC::PlanDB::OperationEnum::DBOP_SET; + msg.plan_id.assign("BHV_Waypoint"); + msg.info = plan_1_Spec; + tcpSendToServer(&msg, TCP_SERVER_ADDRESS, TCP_SEND_PORT); +} + +inline int TaskSend::FeedbackTaskCallback(Fl_Widget *w) +{ + DUNE::IMC::PlanDB msg; + msg.setTimeStamp(); + msg.type = DUNE::IMC::PlanDB::TypeEnum::DBT_REQUEST; + msg.op = DUNE::IMC::PlanDB::OperationEnum::DBOP_GET_STATE; + tcpSendToServer(&msg, TCP_SERVER_ADDRESS, TCP_SEND_PORT); +} + + +bool TaskSend::tcpSendToServer(DUNE::IMC::Message * msg, std::string addr, int port) +{ + + DUNE::Utils::ByteBuffer bb; + try { + DUNE::IMC::Packet::serialize(msg, bb); + return sock_tcp_send.write(bb.getBuffer(), msg->getSerializationSize()); + } + catch (std::runtime_error& e) + { + MOOSTrace ("ERROR sending %s to %s:%d: %s\n", msg->getName(), addr.c_str(), port, e.what()); + return false; + } + + return true; +} + +double TaskSend::getTimeStamp() +{ + struct timeval tv; + gettimeofday(&tv,NULL); + double stamp = double(tv.tv_sec*1000000 + tv.tv_usec) / 1000000; + return stamp; +} diff --git a/src/pTaskSend/TaskSend.h b/src/pTaskSend/TaskSend.h new file mode 100644 index 0000000..e579b2f --- /dev/null +++ b/src/pTaskSend/TaskSend.h @@ -0,0 +1,135 @@ +/* + * @Author: error: error: git config user.name & please set dead value or install git && error: git config user.email & please set dead value or install git & please set dead value or install git + * @Date: 2023-09-21 11:04:00 + * @LastEditors: zjk 1553836110@qq.com + * @LastEditTime: 2023-10-07 09:09:54 + * @FilePath: /moos-ivp-extend/src/pTaskSend/TaskSend.h + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ +/************************************************************/ +/* NAME: zjk */ +/* ORGN: MIT */ +/* FILE: TaskSend.h */ +/* DATE: */ +/************************************************************/ + +#ifndef TaskSend_HEADER +#define TaskSend_HEADER + +#include "MOOS/libMOOS/MOOSLib.h" +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +struct Landmark { + float lon; + float lat; + float depth; + float speed; +}; + +struct WayPointBehavior +{ + std::string name; + std::string source; + int priority; + std::vector points; + float duration; + bool closedLoop; + float constSpeed; + int repeate; + bool perpetual; + float minDepth; + float maxDepth; +}; + +class TaskSend : public CMOOSApp +{ + public: + TaskSend(); + virtual ~TaskSend(); + + bool OnNewMail(MOOSMSG_LIST &NewMail); + bool Iterate(); + bool OnConnectToServer(); + bool OnStartUp(); + void RegisterVariables(); + +protected: + // insert local vars here + Fl_Window * taskEditView(); + inline int sendTaskCallback(Fl_Widget *w); + inline int sendTask1Callback(Fl_Widget *w); + inline int sendTask2Callback(Fl_Widget *w); + inline int ModifyTask1Callback(Fl_Widget *w); + inline int FeedbackTaskCallback(Fl_Widget *w); + static void st_sendTask1Callback(Fl_Widget *w, void *f) { ((TaskSend *)f)->sendTask1Callback(w);} + static void st_sendTask2Callback(Fl_Widget *w, void *f) { ((TaskSend *)f)->sendTask2Callback(w);} + static void st_ModifyTask1Callback(Fl_Widget *w, void *f) { ((TaskSend *)f)->ModifyTask1Callback(w);} + static void st_FeedbackTaskCallback(Fl_Widget *w, void *f) { ((TaskSend *)f)->FeedbackTaskCallback(w);} + + int SecurityZoneEdit(); + + // static void st_taskTypeCallback(Fl_Widget *w, void *f) { ((TaskSend *)f)->sendTaskCallback(w);} + // int SecurityZoneEdit(); + +protected: + typedef struct task + { + std::string type; + std::string duration;//时间设置 no-time-limit / 10/20/300... + std::string pwt; + } task; + + typedef struct waypointTask + { + task taskParam; + std::string capture_radius;//捕获半径 + std::string capture_line;//捕获线 + std::string slip_radius; //滑移半径 + std::string lead; //number 引导点距离 + std::string lead_damper; //与轨迹的距离 + std::string lead_to_start="true"; + std::string speed="12"; + std::string repeat; + std::string polygon; + } waypointTask; + +private: + CMOOSMsg current_msg; + bool error=false; + bool editView=false; + Fl_Output* disp1=nullptr; + Fl_Window* view=nullptr; + + Fl_Input* capture_radius = new Fl_Input(280,175+30,100,30,"capture radius"); + Fl_Input* capture_line = new Fl_Input(80,175+30,100,30,"capture line"); + Fl_Input* slip_radius = new Fl_Input(280,175+30*2,100,30,"slip radius"); + Fl_Input* lead = new Fl_Input(80,175+30*2,100,30,"lead"); + Fl_Input* lead_damper = new Fl_Input(280,175+30*3,100,30,"lead damper"); + Fl_Input* speed = new Fl_Input(80,175+30*3,100,30,"speed"); + Fl_Input* repeat = new Fl_Input(80,175+30*4,100,30,"repeat"); + Fl_Multiline_Input* polygon = new Fl_Multiline_Input(80,175+30*5,300,100,"polygon"); + + std::string SetPlan1(std::string sourceName, double stamp); + std::string SetPlan2(std::string sourceName, double stamp); + std::string ModifyPlan1(std::string sourceName, double stamp); + + DUNE::Network::TCPSocket sock_tcp_send; + DUNE::Network::UDPSocket sock_udp_receive; + bool tcpSendToServer(DUNE::IMC::Message * msg, std::string addr, int port); + double getTimeStamp(); +}; + +#endif diff --git a/src/pTaskSend/TaskSendMain.cpp b/src/pTaskSend/TaskSendMain.cpp new file mode 100644 index 0000000..7d87d87 --- /dev/null +++ b/src/pTaskSend/TaskSendMain.cpp @@ -0,0 +1,50 @@ +/* + * @Author: error: error: git config user.name & please set dead value or install git && error: git config user.email & please set dead value or install git & please set dead value or install git + * @Date: 2023-09-21 11:04:00 + * @LastEditors: error: error: git config user.name & please set dead value or install git && error: git config user.email & please set dead value or install git & please set dead value or install git + * @LastEditTime: 2023-09-21 22:03:48 + * @FilePath: /moos-ivp-extend/src/pTaskSend/TaskSendMain.cpp + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ +/************************************************************/ +/* NAME: zjk */ +/* ORGN: MIT */ +/* FILE: TaskSendMain.cpp */ +/* DATE: */ +/************************************************************/ + +#include +#include "TaskSend.h" +#include "display.h" +// #include +// #include +// #include + +using namespace std; + +int main(int argc, char *argv[]) +{ + // default parameters file + string sMissionFile = "TaskSend.moos"; + //under what name shoud the application register with the MOOSDB? + string sMOOSName = "pTaskSend"; + + switch(argc) + { + case 3: + //command line says don't register with default name + sMOOSName = argv[2]; + case 2: + //command line says don't use default config file + sMissionFile = argv[1]; + } + + //make an application + TaskSend TaskSendApp; + + //run it + TaskSendApp.Run(sMOOSName.c_str(), sMissionFile.c_str()); + + return(0); +} + diff --git a/src/pTaskSend/build/.cmake/api/v1/query/client-vscode/query.json b/src/pTaskSend/build/.cmake/api/v1/query/client-vscode/query.json new file mode 100644 index 0000000..82bb964 --- /dev/null +++ b/src/pTaskSend/build/.cmake/api/v1/query/client-vscode/query.json @@ -0,0 +1 @@ +{"requests":[{"kind":"cache","version":2},{"kind":"codemodel","version":2},{"kind":"toolchains","version":1},{"kind":"cmakeFiles","version":1}]} \ No newline at end of file diff --git a/src/pTaskSend/build/.cmake/api/v1/reply/cache-v2-d6d942c4138e4121aadf.json b/src/pTaskSend/build/.cmake/api/v1/reply/cache-v2-d6d942c4138e4121aadf.json new file mode 100644 index 0000000..964a989 --- /dev/null +++ b/src/pTaskSend/build/.cmake/api/v1/reply/cache-v2-d6d942c4138e4121aadf.json @@ -0,0 +1,1235 @@ +{ + "entries" : + [ + { + "name" : "CMAKE_ADDR2LINE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/addr2line" + }, + { + "name" : "CMAKE_AR", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/ar" + }, + { + "name" : "CMAKE_BACKWARDS_COMPATIBILITY", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "For backwards compatibility, what version of CMake commands and syntax should this version of CMake try to support." + } + ], + "type" : "STRING", + "value" : "2.4" + }, + { + "name" : "CMAKE_BUILD_TYPE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "STRING", + "value" : "Debug" + }, + { + "name" : "CMAKE_CACHEFILE_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "This is the directory where this CMakeCache.txt was created" + } + ], + "type" : "INTERNAL", + "value" : "/home/zjk/Desktop/project/moos-ivp-extend/src/pTaskSend/build" + }, + { + "name" : "CMAKE_CACHE_MAJOR_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Major version of cmake used to create the current loaded cache" + } + ], + "type" : "INTERNAL", + "value" : "3" + }, + { + "name" : "CMAKE_CACHE_MINOR_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Minor version of cmake used to create the current loaded cache" + } + ], + "type" : "INTERNAL", + "value" : "25" + }, + { + "name" : "CMAKE_CACHE_PATCH_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Patch version of cmake used to create the current loaded cache" + } + ], + "type" : "INTERNAL", + "value" : "1" + }, + { + "name" : "CMAKE_COLOR_MAKEFILE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Enable/Disable color output during build." + } + ], + "type" : "BOOL", + "value" : "ON" + }, + { + "name" : "CMAKE_COMMAND", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to CMake executable." + } + ], + "type" : "INTERNAL", + "value" : "/usr/bin/cmake" + }, + { + "name" : "CMAKE_CPACK_COMMAND", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to cpack program executable." + } + ], + "type" : "INTERNAL", + "value" : "/usr/bin/cpack" + }, + { + "name" : "CMAKE_CTEST_COMMAND", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to ctest program executable." + } + ], + "type" : "INTERNAL", + "value" : "/usr/bin/ctest" + }, + { + "name" : "CMAKE_CXX_COMPILER", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "CXX compiler" + } + ], + "type" : "STRING", + "value" : "/usr/bin/g++" + }, + { + "name" : "CMAKE_CXX_COMPILER_AR", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "A wrapper around 'ar' adding the appropriate '--plugin' option for the GCC compiler" + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/gcc-ar-9" + }, + { + "name" : "CMAKE_CXX_COMPILER_RANLIB", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "A wrapper around 'ranlib' adding the appropriate '--plugin' option for the GCC compiler" + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/gcc-ranlib-9" + }, + { + "name" : "CMAKE_CXX_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the CXX compiler during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_CXX_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the CXX compiler during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "-g" + }, + { + "name" : "CMAKE_CXX_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the CXX compiler during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "-Os -DNDEBUG" + }, + { + "name" : "CMAKE_CXX_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the CXX compiler during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "-O3 -DNDEBUG" + }, + { + "name" : "CMAKE_CXX_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the CXX compiler during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "-O2 -g -DNDEBUG" + }, + { + "name" : "CMAKE_C_COMPILER", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "C compiler" + } + ], + "type" : "STRING", + "value" : "/usr/bin/gcc" + }, + { + "name" : "CMAKE_C_COMPILER_AR", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "A wrapper around 'ar' adding the appropriate '--plugin' option for the GCC compiler" + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/gcc-ar-9" + }, + { + "name" : "CMAKE_C_COMPILER_RANLIB", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "A wrapper around 'ranlib' adding the appropriate '--plugin' option for the GCC compiler" + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/gcc-ranlib-9" + }, + { + "name" : "CMAKE_C_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the C compiler during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_C_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the C compiler during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "-g" + }, + { + "name" : "CMAKE_C_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the C compiler during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "-Os -DNDEBUG" + }, + { + "name" : "CMAKE_C_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the C compiler during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "-O3 -DNDEBUG" + }, + { + "name" : "CMAKE_C_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the C compiler during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "-O2 -g -DNDEBUG" + }, + { + "name" : "CMAKE_DLLTOOL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "CMAKE_DLLTOOL-NOTFOUND" + }, + { + "name" : "CMAKE_EDIT_COMMAND", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to cache edit program executable." + } + ], + "type" : "INTERNAL", + "value" : "/usr/bin/ccmake" + }, + { + "name" : "CMAKE_EXECUTABLE_FORMAT", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Executable file format" + } + ], + "type" : "INTERNAL", + "value" : "ELF" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXPORT_COMPILE_COMMANDS", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "BOOL", + "value" : "TRUE" + }, + { + "name" : "CMAKE_EXTRA_GENERATOR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of external makefile project generator." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_FIND_PACKAGE_REDIRECTS_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake." + } + ], + "type" : "STATIC", + "value" : "/home/zjk/Desktop/project/moos-ivp-extend/src/pTaskSend/build/CMakeFiles/pkgRedirects" + }, + { + "name" : "CMAKE_GENERATOR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of generator." + } + ], + "type" : "INTERNAL", + "value" : "Unix Makefiles" + }, + { + "name" : "CMAKE_GENERATOR_INSTANCE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Generator instance identifier." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_GENERATOR_PLATFORM", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of generator platform." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_GENERATOR_TOOLSET", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of generator toolset." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_HOME_DIRECTORY", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Source directory with the top level CMakeLists.txt file for this project" + } + ], + "type" : "INTERNAL", + "value" : "/home/zjk/Desktop/project/moos-ivp-extend/src/pTaskSend" + }, + { + "name" : "CMAKE_INSTALL_PREFIX", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Install path prefix, prepended onto install directories." + } + ], + "type" : "PATH", + "value" : "/usr/local" + }, + { + "name" : "CMAKE_INSTALL_SO_NO_EXE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Install .so files without execute permission." + } + ], + "type" : "INTERNAL", + "value" : "1" + }, + { + "name" : "CMAKE_LINKER", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/ld" + }, + { + "name" : "CMAKE_MAKE_PROGRAM", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/make" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_NM", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/nm" + }, + { + "name" : "CMAKE_NUMBER_OF_MAKEFILES", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "number of local generators" + } + ], + "type" : "INTERNAL", + "value" : "1" + }, + { + "name" : "CMAKE_OBJCOPY", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/objcopy" + }, + { + "name" : "CMAKE_OBJDUMP", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/objdump" + }, + { + "name" : "CMAKE_PLATFORM_INFO_INITIALIZED", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Platform information initialized" + } + ], + "type" : "INTERNAL", + "value" : "1" + }, + { + "name" : "CMAKE_PROJECT_DESCRIPTION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "" + }, + { + "name" : "CMAKE_PROJECT_HOMEPAGE_URL", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "" + }, + { + "name" : "CMAKE_PROJECT_NAME", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "Project" + }, + { + "name" : "CMAKE_RANLIB", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/ranlib" + }, + { + "name" : "CMAKE_READELF", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/readelf" + }, + { + "name" : "CMAKE_ROOT", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to CMake installation." + } + ], + "type" : "INTERNAL", + "value" : "/usr/share/cmake-3.25" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SKIP_INSTALL_RPATH", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "If set, runtime paths are not added when installing shared libraries, but are added when building." + } + ], + "type" : "BOOL", + "value" : "NO" + }, + { + "name" : "CMAKE_SKIP_RPATH", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "If set, runtime paths are not added when using shared libraries." + } + ], + "type" : "BOOL", + "value" : "NO" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STRIP", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/strip" + }, + { + "name" : "CMAKE_UNAME", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "uname command" + } + ], + "type" : "INTERNAL", + "value" : "/usr/bin/uname" + }, + { + "name" : "CMAKE_VERBOSE_MAKEFILE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make. This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo." + } + ], + "type" : "BOOL", + "value" : "FALSE" + }, + { + "name" : "EXECUTABLE_OUTPUT_PATH", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Single output directory for building all executables." + } + ], + "type" : "PATH", + "value" : "" + }, + { + "name" : "LIBRARY_OUTPUT_PATH", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Single output directory for building all libraries." + } + ], + "type" : "PATH", + "value" : "" + }, + { + "name" : "Project_BINARY_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "/home/zjk/Desktop/project/moos-ivp-extend/src/pTaskSend/build" + }, + { + "name" : "Project_IS_TOP_LEVEL", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "ON" + }, + { + "name" : "Project_SOURCE_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "/home/zjk/Desktop/project/moos-ivp-extend/src/pTaskSend" + }, + { + "name" : "_CMAKE_LINKER_PUSHPOP_STATE_SUPPORTED", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "linker supports push/pop state" + } + ], + "type" : "INTERNAL", + "value" : "TRUE" + } + ], + "kind" : "cache", + "version" : + { + "major" : 2, + "minor" : 0 + } +} diff --git a/src/pTaskSend/build/.cmake/api/v1/reply/cmakeFiles-v1-1b864ed9ef170e655086.json b/src/pTaskSend/build/.cmake/api/v1/reply/cmakeFiles-v1-1b864ed9ef170e655086.json new file mode 100644 index 0000000..5a6c27e --- /dev/null +++ b/src/pTaskSend/build/.cmake/api/v1/reply/cmakeFiles-v1-1b864ed9ef170e655086.json @@ -0,0 +1,754 @@ +{ + "inputs" : + [ + { + "path" : "CMakeLists.txt" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeDetermineSystem.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeSystem.cmake.in" + }, + { + "isGenerated" : true, + "path" : "build/CMakeFiles/3.25.1/CMakeSystem.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeUnixFindMake.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeSystemSpecificInitialize.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeDetermineCCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeDetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeCompilerIdDetection.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/ADSP-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/ARMCC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/ARMClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/AppleClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/Borland-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/Bruce-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/Clang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/Compaq-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/Cray-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/Embarcadero-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/Fujitsu-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/GHS-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/GNU-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/HP-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/IAR-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/IBMClang-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/Intel-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/LCC-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/MSVC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/NVHPC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/NVIDIA-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/PGI-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/PathScale-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/SCO-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/SDCC-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/SunPro-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/TI-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/Tasking-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/Watcom-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/XL-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/XLClang-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/zOS-C-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeFindBinUtils.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/GNU-FindBinUtils.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeCCompiler.cmake.in" + }, + { + "isGenerated" : true, + "path" : "build/CMakeFiles/3.25.1/CMakeCCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeDetermineCXXCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeDetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Platform/Linux-Determine-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeDetermineCompilerId.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeCompilerIdDetection.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/ADSP-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/ARMCC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/ARMClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/AppleClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/Borland-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/Clang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/Cray-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/Embarcadero-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/Fujitsu-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/GHS-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/HP-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/IAR-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/IBMClang-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/Intel-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/LCC-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/MSVC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/NVHPC-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/NVIDIA-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/PGI-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/PathScale-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/SCO-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/TI-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/Tasking-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/Watcom-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/XL-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeFindBinUtils.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/GNU-FindBinUtils.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeCXXCompiler.cmake.in" + }, + { + "isGenerated" : true, + "path" : "build/CMakeFiles/3.25.1/CMakeCXXCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeSystemSpecificInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeGenericSystem.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeInitializeConfigs.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Platform/Linux.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Platform/UnixPaths.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeCInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeLanguageInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/GNU-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/GNU.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/CMakeCommonCompilerMacros.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Platform/Linux-GNU-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Platform/Linux-GNU.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeCommonLanguageInclude.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeTestCCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeTestCompilerCommon.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeDetermineCompilerABI.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeParseImplicitIncludeInfo.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeParseImplicitLinkInfo.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeParseLibraryArchitecture.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeTestCompilerCommon.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeCCompilerABI.c" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeDetermineCompileFeatures.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Internal/FeatureTesting.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeCCompiler.cmake.in" + }, + { + "isGenerated" : true, + "path" : "build/CMakeFiles/3.25.1/CMakeCCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeCXXInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeLanguageInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/GNU-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Compiler/GNU.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Platform/Linux-GNU-CXX.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Platform/Linux-GNU.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeCommonLanguageInclude.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeTestCXXCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeTestCompilerCommon.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeDetermineCompilerABI.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeParseImplicitIncludeInfo.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeParseImplicitLinkInfo.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeParseLibraryArchitecture.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeTestCompilerCommon.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeCXXCompilerABI.cpp" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeDetermineCompileFeatures.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/Internal/FeatureTesting.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/usr/share/cmake-3.25/Modules/CMakeCXXCompiler.cmake.in" + }, + { + "isGenerated" : true, + "path" : "build/CMakeFiles/3.25.1/CMakeCXXCompiler.cmake" + } + ], + "kind" : "cmakeFiles", + "paths" : + { + "build" : "/home/zjk/Desktop/project/moos-ivp-extend/src/pTaskSend/build", + "source" : "/home/zjk/Desktop/project/moos-ivp-extend/src/pTaskSend" + }, + "version" : + { + "major" : 1, + "minor" : 0 + } +} diff --git a/src/pTaskSend/build/.cmake/api/v1/reply/codemodel-v2-8cafde00da2f94adfddf.json b/src/pTaskSend/build/.cmake/api/v1/reply/codemodel-v2-8cafde00da2f94adfddf.json new file mode 100644 index 0000000..db123dc --- /dev/null +++ b/src/pTaskSend/build/.cmake/api/v1/reply/codemodel-v2-8cafde00da2f94adfddf.json @@ -0,0 +1,56 @@ +{ + "configurations" : + [ + { + "directories" : + [ + { + "build" : ".", + "jsonFile" : "directory-.-Debug-f5ebdc15457944623624.json", + "projectIndex" : 0, + "source" : ".", + "targetIndexes" : + [ + 0 + ] + } + ], + "name" : "Debug", + "projects" : + [ + { + "directoryIndexes" : + [ + 0 + ], + "name" : "Project", + "targetIndexes" : + [ + 0 + ] + } + ], + "targets" : + [ + { + "directoryIndex" : 0, + "id" : "pTaskSend::@6890427a1f51a3e7e1df", + "jsonFile" : "target-pTaskSend-Debug-fe070126a6f1fe44e26b.json", + "name" : "pTaskSend", + "projectIndex" : 0 + } + ] + } + ], + "kind" : "codemodel", + "paths" : + { + "build" : "/home/zjk/Desktop/project/moos-ivp-extend/src/pTaskSend/build", + "source" : "/home/zjk/Desktop/project/moos-ivp-extend/src/pTaskSend" + }, + "version" : + { + "major" : 2, + "minor" : 4 + } +} diff --git a/src/pTaskSend/build/.cmake/api/v1/reply/directory-.-Debug-f5ebdc15457944623624.json b/src/pTaskSend/build/.cmake/api/v1/reply/directory-.-Debug-f5ebdc15457944623624.json new file mode 100644 index 0000000..3a67af9 --- /dev/null +++ b/src/pTaskSend/build/.cmake/api/v1/reply/directory-.-Debug-f5ebdc15457944623624.json @@ -0,0 +1,14 @@ +{ + "backtraceGraph" : + { + "commands" : [], + "files" : [], + "nodes" : [] + }, + "installers" : [], + "paths" : + { + "build" : ".", + "source" : "." + } +} diff --git a/src/pTaskSend/build/.cmake/api/v1/reply/index-2023-09-21T07-09-11-0928.json b/src/pTaskSend/build/.cmake/api/v1/reply/index-2023-09-21T07-09-11-0928.json new file mode 100644 index 0000000..86cecfa --- /dev/null +++ b/src/pTaskSend/build/.cmake/api/v1/reply/index-2023-09-21T07-09-11-0928.json @@ -0,0 +1,132 @@ +{ + "cmake" : + { + "generator" : + { + "multiConfig" : false, + "name" : "Unix Makefiles" + }, + "paths" : + { + "cmake" : "/usr/bin/cmake", + "cpack" : "/usr/bin/cpack", + "ctest" : "/usr/bin/ctest", + "root" : "/usr/share/cmake-3.25" + }, + "version" : + { + "isDirty" : false, + "major" : 3, + "minor" : 25, + "patch" : 1, + "string" : "3.25.1", + "suffix" : "" + } + }, + "objects" : + [ + { + "jsonFile" : "codemodel-v2-8cafde00da2f94adfddf.json", + "kind" : "codemodel", + "version" : + { + "major" : 2, + "minor" : 4 + } + }, + { + "jsonFile" : "cache-v2-d6d942c4138e4121aadf.json", + "kind" : "cache", + "version" : + { + "major" : 2, + "minor" : 0 + } + }, + { + "jsonFile" : "cmakeFiles-v1-1b864ed9ef170e655086.json", + "kind" : "cmakeFiles", + "version" : + { + "major" : 1, + "minor" : 0 + } + }, + { + "jsonFile" : "toolchains-v1-2781238ec0fa0b9996f9.json", + "kind" : "toolchains", + "version" : + { + "major" : 1, + "minor" : 0 + } + } + ], + "reply" : + { + "client-vscode" : + { + "query.json" : + { + "requests" : + [ + { + "kind" : "cache", + "version" : 2 + }, + { + "kind" : "codemodel", + "version" : 2 + }, + { + "kind" : "toolchains", + "version" : 1 + }, + { + "kind" : "cmakeFiles", + "version" : 1 + } + ], + "responses" : + [ + { + "jsonFile" : "cache-v2-d6d942c4138e4121aadf.json", + "kind" : "cache", + "version" : + { + "major" : 2, + "minor" : 0 + } + }, + { + "jsonFile" : "codemodel-v2-8cafde00da2f94adfddf.json", + "kind" : "codemodel", + "version" : + { + "major" : 2, + "minor" : 4 + } + }, + { + "jsonFile" : "toolchains-v1-2781238ec0fa0b9996f9.json", + "kind" : "toolchains", + "version" : + { + "major" : 1, + "minor" : 0 + } + }, + { + "jsonFile" : "cmakeFiles-v1-1b864ed9ef170e655086.json", + "kind" : "cmakeFiles", + "version" : + { + "major" : 1, + "minor" : 0 + } + } + ] + } + } + } +} diff --git a/src/pTaskSend/build/.cmake/api/v1/reply/target-pTaskSend-Debug-fe070126a6f1fe44e26b.json b/src/pTaskSend/build/.cmake/api/v1/reply/target-pTaskSend-Debug-fe070126a6f1fe44e26b.json new file mode 100644 index 0000000..a2e86b0 --- /dev/null +++ b/src/pTaskSend/build/.cmake/api/v1/reply/target-pTaskSend-Debug-fe070126a6f1fe44e26b.json @@ -0,0 +1,129 @@ +{ + "artifacts" : + [ + { + "path" : "pTaskSend" + } + ], + "backtrace" : 1, + "backtraceGraph" : + { + "commands" : + [ + "ADD_EXECUTABLE", + "TARGET_LINK_LIBRARIES" + ], + "files" : + [ + "CMakeLists.txt" + ], + "nodes" : + [ + { + "file" : 0 + }, + { + "command" : 0, + "file" : 0, + "line" : 8, + "parent" : 0 + }, + { + "command" : 1, + "file" : 0, + "line" : 10, + "parent" : 0 + } + ] + }, + "compileGroups" : + [ + { + "compileCommandFragments" : + [ + { + "fragment" : "-g" + } + ], + "language" : "CXX", + "sourceIndexes" : + [ + 0, + 1, + 2 + ] + } + ], + "id" : "pTaskSend::@6890427a1f51a3e7e1df", + "link" : + { + "commandFragments" : + [ + { + "fragment" : "-g", + "role" : "flags" + }, + { + "fragment" : "-rdynamic", + "role" : "flags" + }, + { + "backtrace" : 2, + "fragment" : "-lmbutil", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "-lm", + "role" : "libraries" + }, + { + "backtrace" : 2, + "fragment" : "-lpthread", + "role" : "libraries" + } + ], + "language" : "CXX" + }, + "name" : "pTaskSend", + "nameOnDisk" : "pTaskSend", + "paths" : + { + "build" : ".", + "source" : "." + }, + "sourceGroups" : + [ + { + "name" : "Source Files", + "sourceIndexes" : + [ + 0, + 1, + 2 + ] + } + ], + "sources" : + [ + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "TaskSend.cpp", + "sourceGroupIndex" : 0 + }, + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "TaskSendMain.cpp", + "sourceGroupIndex" : 0 + }, + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "display.cpp", + "sourceGroupIndex" : 0 + } + ], + "type" : "EXECUTABLE" +} diff --git a/src/pTaskSend/build/.cmake/api/v1/reply/toolchains-v1-2781238ec0fa0b9996f9.json b/src/pTaskSend/build/.cmake/api/v1/reply/toolchains-v1-2781238ec0fa0b9996f9.json new file mode 100644 index 0000000..c8dfa23 --- /dev/null +++ b/src/pTaskSend/build/.cmake/api/v1/reply/toolchains-v1-2781238ec0fa0b9996f9.json @@ -0,0 +1,107 @@ +{ + "kind" : "toolchains", + "toolchains" : + [ + { + "compiler" : + { + "id" : "GNU", + "implicit" : + { + "includeDirectories" : + [ + "/usr/lib/gcc/x86_64-linux-gnu/9/include", + "/usr/local/include", + "/usr/include/x86_64-linux-gnu", + "/usr/include" + ], + "linkDirectories" : + [ + "/usr/lib/gcc/x86_64-linux-gnu/9", + "/usr/lib/x86_64-linux-gnu", + "/usr/lib", + "/lib/x86_64-linux-gnu", + "/lib" + ], + "linkFrameworkDirectories" : [], + "linkLibraries" : + [ + "gcc", + "gcc_s", + "c", + "gcc", + "gcc_s" + ] + }, + "path" : "/usr/bin/gcc", + "version" : "9.4.0" + }, + "language" : "C", + "sourceFileExtensions" : + [ + "c", + "m" + ] + }, + { + "compiler" : + { + "id" : "GNU", + "implicit" : + { + "includeDirectories" : + [ + "/usr/include/c++/9", + "/usr/include/x86_64-linux-gnu/c++/9", + "/usr/include/c++/9/backward", + "/usr/lib/gcc/x86_64-linux-gnu/9/include", + "/usr/local/include", + "/usr/include/x86_64-linux-gnu", + "/usr/include" + ], + "linkDirectories" : + [ + "/usr/lib/gcc/x86_64-linux-gnu/9", + "/usr/lib/x86_64-linux-gnu", + "/usr/lib", + "/lib/x86_64-linux-gnu", + "/lib" + ], + "linkFrameworkDirectories" : [], + "linkLibraries" : + [ + "stdc++", + "m", + "gcc_s", + "gcc", + "c", + "gcc_s", + "gcc" + ] + }, + "path" : "/usr/bin/g++", + "version" : "9.4.0" + }, + "language" : "CXX", + "sourceFileExtensions" : + [ + "C", + "M", + "c++", + "cc", + "cpp", + "cxx", + "mm", + "mpp", + "CPP", + "ixx", + "cppm" + ] + } + ], + "version" : + { + "major" : 1, + "minor" : 0 + } +} diff --git a/src/pTaskSend/display.cpp b/src/pTaskSend/display.cpp new file mode 100644 index 0000000..d1bd223 --- /dev/null +++ b/src/pTaskSend/display.cpp @@ -0,0 +1,58 @@ +/* + * @Author: error: error: git config user.name & please set dead value or install git && error: git config user.email & please set dead value or install git & please set dead value or install git + * @Date: 2023-09-21 12:50:21 + * @LastEditors: error: error: git config user.name & please set dead value or install git && error: git config user.email & please set dead value or install git & please set dead value or install git + * @LastEditTime: 2023-09-21 22:04:13 + * @FilePath: /moos-ivp-extend/src/pTaskSend/display.cpp + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ +#include "display.h" + +display::display(/* args */) +{ + // Fl_Window *window = new Fl_Window(340, 180, "hello"); + // Fl_Box *box = new Fl_Box(20, 40, 300, 100, "Hello"); + // box->box(FL_UP_BOX); + // box->labelfont(FL_BOLD + FL_ITALIC); + // box->labelsize(36); + // box->labeltype(FL_SHADOW_LABEL); + // window->end(); + // window->show(); + // Fl::run(); + TaskEdit(); +} + +int display::TaskEdit() +{ + Fl_Window *window = new Fl_Window(450, 350, "hello"); + // Fl_Double_Window *window(450, 350, "Simple Table"); /* 1. 创建一个窗口 */ + Fl_Group* pGroup = new Fl_Group(50, 50, 400, 150); /* 2. 创建一个分组 */ + Fl_Button* pButton = new Fl_Button(70, 50, 150, 30, "Fl_Button"); /* 3. 创建控件 */ + + int xyz; + pButton->callback(sendTask, &xyz); + + Fl_Check_Button* pChkButton = new Fl_Check_Button(230, 50, 150, 30, "Fl_Check_Button"); + Fl_Return_Button* pRetButton = new Fl_Return_Button(70, 100, 150, 30, "Fl_Return_Button"); + Fl_Radio_Round_Button* pRndButton = new Fl_Radio_Round_Button(230, 100, 150, 30, "Fl_Round_Button"); + pGroup->end(); /* 4. 结束上个容器的创建 */ + Fl_Text_Editor* pText = new Fl_Text_Editor(50, 150, 350, 150); + Fl_Text_Buffer* pBuff = new Fl_Text_Buffer(); + pText->buffer(pBuff); /* pBuff->text()中的内容就是Fl_Text_Buffer中显示的内容 */ + pBuff->text("示例文字"); + pText->end(); + window->end(); /* 4. 结束上个容器的创建 */ + window->show(); /* 5. 显示窗口 */ + Fl::run(); /* 6. 运行FLTK主循环 */ + // return true; +} + +void display::sendTask(Fl_Widget *w, void *data) +{ + +} + + +display::~display() +{ +} diff --git a/src/pTaskSend/display.h b/src/pTaskSend/display.h new file mode 100644 index 0000000..73cc899 --- /dev/null +++ b/src/pTaskSend/display.h @@ -0,0 +1,39 @@ +/* + * @Author: error: error: git config user.name & please set dead value or install git && error: git config user.email & please set dead value or install git & please set dead value or install git + * @Date: 2023-09-21 12:50:12 + * @LastEditors: error: error: git config user.name & please set dead value or install git && error: git config user.email & please set dead value or install git & please set dead value or install git + * @LastEditTime: 2023-09-21 21:45:28 + * @FilePath: /moos-ivp-extend/src/pTaskSend/display.h + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ +#ifndef DISPLAY_HEADER +#define DISPLAY_HEADER + +#include +#include +#include +#include +#include +#include +#include +#include +#include "MOOS/libMOOS/App/MOOSApp.h" + + +class display +{ +private: + /* data */ +public: + display(/* args */); + ~display(); + int TaskEdit(); + int SecurityZoneEdit(); +protected: + static void sendTask(Fl_Widget *w, void *data); +}; + + + + +#endif \ No newline at end of file diff --git a/src/pTaskSend/pTaskSend.moos b/src/pTaskSend/pTaskSend.moos new file mode 100644 index 0000000..8107445 --- /dev/null +++ b/src/pTaskSend/pTaskSend.moos @@ -0,0 +1,11 @@ +// MOOS file + +ServerHost = localhost +ServerPort = 9000 + +ProcessConfig = pTaskSend +{ + AppTick = 4 + CommsTick = 4 +} +