├── CMakeLists.txt ├── data ├── errore_eskf.txt ├── errore_in.txt ├── errore_shaf.txt ├── errore_shfaf.txt ├── pianta_eskf.txt ├── pianta_in.txt ├── pianta_shaf.txt └── pianta_shfaf.txt ├── dependencies.sh ├── launch ├── control.launch ├── description.launch ├── spawn_husky_uwb.launch ├── uwb.launch ├── uwb_empty.launch └── world_uwb.launch ├── models └── husky_uwb.urdf.xacro ├── package.xml ├── readme.md ├── rqt_multiplot.xml ├── src ├── fuzzy_demo.py ├── node_sage-husa.py ├── shfaf.py └── shfaf.pyc ├── start_all.sh └── worlds └── uwb_empty.world /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.0.2) 2 | project(ins_uwb_positioning) 3 | 4 | ## Compile as C++11, supported in ROS Kinetic and newer 5 | # add_compile_options(-std=c++11) 6 | 7 | ## Find catkin macros and libraries 8 | ## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz) 9 | ## is used, also find other catkin packages 10 | find_package(catkin REQUIRED) 11 | 12 | ## System dependencies are found with CMake's conventions 13 | # find_package(Boost REQUIRED COMPONENTS system) 14 | 15 | 16 | ## Uncomment this if the package has a setup.py. This macro ensures 17 | ## modules and global scripts declared therein get installed 18 | ## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html 19 | # catkin_python_setup() 20 | 21 | ################################################ 22 | ## Declare ROS messages, services and actions ## 23 | ################################################ 24 | 25 | ## To declare and build messages, services or actions from within this 26 | ## package, follow these steps: 27 | ## * Let MSG_DEP_SET be the set of packages whose message types you use in 28 | ## your messages/services/actions (e.g. std_msgs, actionlib_msgs, ...). 29 | ## * In the file package.xml: 30 | ## * add a build_depend tag for "message_generation" 31 | ## * add a build_depend and a exec_depend tag for each package in MSG_DEP_SET 32 | ## * If MSG_DEP_SET isn't empty the following dependency has been pulled in 33 | ## but can be declared for certainty nonetheless: 34 | ## * add a exec_depend tag for "message_runtime" 35 | ## * In this file (CMakeLists.txt): 36 | ## * add "message_generation" and every package in MSG_DEP_SET to 37 | ## find_package(catkin REQUIRED COMPONENTS ...) 38 | ## * add "message_runtime" and every package in MSG_DEP_SET to 39 | ## catkin_package(CATKIN_DEPENDS ...) 40 | ## * uncomment the add_*_files sections below as needed 41 | ## and list every .msg/.srv/.action file to be processed 42 | ## * uncomment the generate_messages entry below 43 | ## * add every package in MSG_DEP_SET to generate_messages(DEPENDENCIES ...) 44 | 45 | ## Generate messages in the 'msg' folder 46 | # add_message_files( 47 | # FILES 48 | # Message1.msg 49 | # Message2.msg 50 | # ) 51 | 52 | ## Generate services in the 'srv' folder 53 | # add_service_files( 54 | # FILES 55 | # Service1.srv 56 | # Service2.srv 57 | # ) 58 | 59 | ## Generate actions in the 'action' folder 60 | # add_action_files( 61 | # FILES 62 | # Action1.action 63 | # Action2.action 64 | # ) 65 | 66 | ## Generate added messages and services with any dependencies listed here 67 | # generate_messages( 68 | # DEPENDENCIES 69 | # std_msgs # Or other packages containing msgs 70 | # ) 71 | 72 | ################################################ 73 | ## Declare ROS dynamic reconfigure parameters ## 74 | ################################################ 75 | 76 | ## To declare and build dynamic reconfigure parameters within this 77 | ## package, follow these steps: 78 | ## * In the file package.xml: 79 | ## * add a build_depend and a exec_depend tag for "dynamic_reconfigure" 80 | ## * In this file (CMakeLists.txt): 81 | ## * add "dynamic_reconfigure" to 82 | ## find_package(catkin REQUIRED COMPONENTS ...) 83 | ## * uncomment the "generate_dynamic_reconfigure_options" section below 84 | ## and list every .cfg file to be processed 85 | 86 | ## Generate dynamic reconfigure parameters in the 'cfg' folder 87 | # generate_dynamic_reconfigure_options( 88 | # cfg/DynReconf1.cfg 89 | # cfg/DynReconf2.cfg 90 | # ) 91 | 92 | ################################### 93 | ## catkin specific configuration ## 94 | ################################### 95 | ## The catkin_package macro generates cmake config files for your package 96 | ## Declare things to be passed to dependent projects 97 | ## INCLUDE_DIRS: uncomment this if your package contains header files 98 | ## LIBRARIES: libraries you create in this project that dependent projects also need 99 | ## CATKIN_DEPENDS: catkin_packages dependent projects also need 100 | ## DEPENDS: system dependencies of this project that dependent projects also need 101 | catkin_package( 102 | # INCLUDE_DIRS include 103 | # LIBRARIES ins_uwb_positioning 104 | # CATKIN_DEPENDS other_catkin_pkg 105 | # DEPENDS system_lib 106 | ) 107 | 108 | ########### 109 | ## Build ## 110 | ########### 111 | 112 | ## Specify additional locations of header files 113 | ## Your package locations should be listed before other locations 114 | include_directories( 115 | # include 116 | # ${catkin_INCLUDE_DIRS} 117 | ) 118 | 119 | ## Declare a C++ library 120 | # add_library(${PROJECT_NAME} 121 | # src/${PROJECT_NAME}/ins_uwb_positioning.cpp 122 | # ) 123 | 124 | ## Add cmake target dependencies of the library 125 | ## as an example, code may need to be generated before libraries 126 | ## either from message generation or dynamic reconfigure 127 | # add_dependencies(${PROJECT_NAME} ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) 128 | 129 | ## Declare a C++ executable 130 | ## With catkin_make all packages are built within a single CMake context 131 | ## The recommended prefix ensures that target names across packages don't collide 132 | # add_executable(${PROJECT_NAME}_node src/ins_uwb_positioning_node.cpp) 133 | 134 | ## Rename C++ executable without prefix 135 | ## The above recommended prefix causes long target names, the following renames the 136 | ## target back to the shorter version for ease of user use 137 | ## e.g. "rosrun someones_pkg node" instead of "rosrun someones_pkg someones_pkg_node" 138 | # set_target_properties(${PROJECT_NAME}_node PROPERTIES OUTPUT_NAME node PREFIX "") 139 | 140 | ## Add cmake target dependencies of the executable 141 | ## same as for the library above 142 | # add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) 143 | 144 | ## Specify libraries to link a library or executable target against 145 | # target_link_libraries(${PROJECT_NAME}_node 146 | # ${catkin_LIBRARIES} 147 | # ) 148 | 149 | ############# 150 | ## Install ## 151 | ############# 152 | 153 | # all install targets should use catkin DESTINATION variables 154 | # See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html 155 | 156 | ## Mark executable scripts (Python etc.) for installation 157 | ## in contrast to setup.py, you can choose the destination 158 | catkin_install_python(PROGRAMS 159 | src/node_sage-husa.py 160 | src/shfaf.py 161 | DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} 162 | ) 163 | 164 | ## Mark executables for installation 165 | ## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_executables.html 166 | # install(TARGETS ${PROJECT_NAME}_node 167 | # RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} 168 | # ) 169 | 170 | ## Mark libraries for installation 171 | ## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_libraries.html 172 | # install(TARGETS ${PROJECT_NAME} 173 | # ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} 174 | # LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} 175 | # RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION} 176 | # ) 177 | 178 | ## Mark cpp header files for installation 179 | # install(DIRECTORY include/${PROJECT_NAME}/ 180 | # DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} 181 | # FILES_MATCHING PATTERN "*.h" 182 | # PATTERN ".svn" EXCLUDE 183 | # ) 184 | 185 | ## Mark other files for installation (e.g. launch and bag files, etc.) 186 | # install(FILES 187 | # # myfile1 188 | # # myfile2 189 | # DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} 190 | # ) 191 | 192 | ############# 193 | ## Testing ## 194 | ############# 195 | 196 | ## Add gtest based cpp test target and link libraries 197 | # catkin_add_gtest(${PROJECT_NAME}-test test/test_ins_uwb_positioning.cpp) 198 | # if(TARGET ${PROJECT_NAME}-test) 199 | # target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME}) 200 | # endif() 201 | 202 | ## Add folders to be run by python nosetests 203 | # catkin_add_nosetests(test) 204 | -------------------------------------------------------------------------------- /data/errore_eskf.txt: -------------------------------------------------------------------------------- 1 | # /gazebo/link_states/recceipt_time, /filter_error/data 2 | 17403.859000000000378, 0.13090825080871582031 3 | 17404.059000000001106, 0.12988480925559997559 4 | 17404.259000000001834, 0.12823000550270080566 5 | 17404.462999999999738, 0.12667837738990783691 6 | 17404.656999999999243, 0.12503695487976074219 7 | 17404.86200000000099, 0.12364888936281204224 8 | 17405.056000000000495, 0.12180174142122268677 9 | 17405.251000000000204, 0.1200693175196647644 10 | 17405.454000000001543, 0.11819701641798019409 11 | 17405.651999999998225, 0.11195751279592514038 12 | 17405.858000000000175, 0.10949284583330154419 13 | 17406.055000000000291, 0.10718416422605514526 14 | 17406.265999999999622, 0.10494848340749740601 15 | 17406.460999999999331, 0.10276186466217041016 16 | 17406.656999999999243, 0.10072005540132522583 17 | 17406.854999999999563, 0.099305957555770874023 18 | 17407.06499999999869, 0.098704636096954345703 19 | 17407.256000000001222, 0.098564289510250091553 20 | 17407.459999999999127, 0.098995670676231384277 21 | 17407.651999999998225, 0.099550575017929077148 22 | 17407.854999999999563, 0.10062524676322937012 23 | 17408.065000000002328, 0.10244356840848922729 24 | 17408.257000000001426, 0.1049764975905418396 25 | 17408.449000000000524, 0.10756498575210571289 26 | 17408.663000000000466, 0.10968472808599472046 27 | 17408.854999999999563, 0.11320888251066207886 28 | 17409.052999999999884, 0.084244243800640106201 29 | 17409.255000000001019, 0.085451811552047729492 30 | 17409.454999999998108, 0.087957844138145446777 31 | 17409.663000000000466, 0.090042769908905029297 32 | 17409.85399999999936, 0.059477467089891433716 33 | 17410.06499999999869, 0.057743538171052932739 34 | 17410.259000000001834, 0.058337550610303878784 35 | 17410.451999999997497, 0.059208977967500686646 36 | 17410.662000000000262, 0.060052350163459777832 37 | 17410.85399999999936, 0.063340552151203155518 38 | 17411.054000000000087, 0.095616996288299560547 39 | 17411.263999999999214, 0.11642089486122131348 40 | 17411.458000000002357, 0.11817637830972671509 41 | 17411.651999999998225, 0.12024102360010147095 42 | 17411.863000000001193, 0.11921670287847518921 43 | 17412.054000000000087, 0.1111604347825050354 44 | 17412.253000000000611, 0.11505638062953948975 45 | 17412.461999999999534, 0.12186597287654876709 46 | 17412.652999999998428, 0.11007315665483474731 47 | 17412.847999999998137, 0.12105556577444076538 48 | 17413.058000000000902, 0.12310864031314849854 49 | 17413.262000000002445, 0.11727081984281539917 50 | 17413.462999999999738, 0.11988015472888946533 51 | 17413.661000000000058, 0.11600479483604431152 52 | 17413.863000000001193, 0.12593190371990203857 53 | 17414.05199999999968, 0.12311812490224838257 54 | 17414.252000000000407, 0.12684120237827301025 55 | 17414.445999999999913, 0.12521816790103912354 56 | 17414.655000000002474, 0.12885056436061859131 57 | 17414.854999999999563, 0.13760477304458618164 58 | 17415.052999999999884, 0.147466316819190979 59 | 17415.256000000001222, 0.1453123241662979126 60 | 17415.457999999998719, 0.15394061803817749023 61 | 17415.654999999998836, 0.15489238500595092773 62 | 17415.849000000001979, 0.16151468455791473389 63 | 17416.057000000000698, 0.17603980004787445068 64 | 17416.261999999998807, 0.17277921736240386963 65 | 17416.457000000002154, 0.17260833084583282471 66 | 17416.658999999999651, 0.1717691570520401001 67 | 17416.856999999999971, 0.17518050968647003174 68 | 17417.057999999997264, 0.17627367377281188965 69 | 17417.254999999997381, 0.17769002914428710938 70 | 17417.461999999999534, 0.18227688968181610107 71 | 17417.657999999999447, 0.18265312910079956055 72 | 17417.851999999998952, 0.17886953055858612061 73 | 17418.052999999999884, 0.17810682952404022217 74 | 17418.261999999998807, 0.34904548525810241699 75 | 17418.452000000001135, 0.35336628556251525879 76 | 17418.665000000000873, 0.35602816939353942871 77 | 17418.854999999999563, 0.33620893955230712891 78 | 17419.063000000001921, 0.33902302384376525879 79 | 17419.261999999998807, 0.32260611653327941895 80 | 17419.461999999999534, 0.30873009562492370605 81 | 17419.654999999998836, 0.31112086772918701172 82 | 17419.864000000001397, 0.32679286599159240723 83 | 17420.059000000001106, 0.32577967643737792969 84 | 17420.253000000000611, 0.31516149640083312988 85 | 17420.452000000001135, 0.3069553077220916748 86 | 17420.664000000000669, 0.30515843629837036133 87 | 17420.863000000001193, 0.31502872705459594727 88 | 17421.06000000000131, 0.5906441807746887207 89 | 17421.256999999997788, 0.57738846540451049805 90 | 17421.451000000000931, 0.55081415176391601563 91 | 17421.652999999998428, 0.5367367863655090332 92 | 17421.860000000000582, 0.53185063600540161133 93 | 17422.063999999998487, 0.52321010828018188477 94 | 17422.252000000000407, 0.50751143693923950195 95 | 17422.463999999999942, 0.47807523608207702637 96 | 17422.657999999999447, 0.47524309158325195313 97 | 17422.851999999998952, 0.45446997880935668945 98 | 17423.054000000000087, 0.44219708442687988281 99 | 17423.252000000000407, 0.4371388554573059082 100 | 17423.450000000000728, 0.41151750087738037109 101 | 17423.65400000000227, 0.42896565794944763184 102 | 17423.860000000000582, 0.44645079970359802246 103 | 17424.062999999998283, 0.42206531763076782227 104 | 17424.255999999997584, 0.43973630666732788086 105 | 17424.450000000000728, 0.41806465387344360352 106 | 17424.65599999999904, 0.40366667509078979492 107 | 17424.852999999999156, 0.39509558677673339844 108 | 17425.065000000002328, 0.38445177674293518066 109 | 17425.257000000001426, 0.37300726771354675293 110 | 17425.455999999998312, 0.34625411033630371094 111 | 17425.652999999998428, 0.33807477355003356934 112 | 17425.863000000001193, 0.32896894216537475586 113 | 17426.061999999998079, 0.33217781782150268555 114 | 17426.255000000001019, 0.32071653008460998535 115 | 17426.461999999999534, 0.3042627871036529541 116 | 17426.652000000001863, 0.29553636908531188965 117 | 17426.849000000001979, 0.55528330802917480469 118 | 17427.050999999999476, 0.54787874221801757813 119 | 17427.254999999997381, 0.54218041896820068359 120 | 17427.453999999997905, 0.55001693964004516602 121 | 17427.648000000001048, 0.53267180919647216797 122 | 17427.852999999999156, 0.51495367288589477539 123 | 17428.052999999999884, 0.49981668591499328613 124 | 17428.251000000000204, 0.8927014470100402832 125 | 17428.44800000000032, 0.86653321981430053711 126 | 17428.662000000000262, 0.88838148117065429688 127 | 17428.854999999999563, 0.86788165569305419922 128 | 17429.056000000000495, 0.82983613014221191406 129 | 17429.248999999999796, 0.84751629829406738281 130 | 17429.462999999999738, 0.82522302865982055664 131 | 17429.661000000000058, 0.89901262521743774414 132 | 17429.860000000000582, 0.87063318490982055664 133 | 17430.048999999999069, 0.88718283176422119141 134 | 17430.261999999998807, 0.90005820989608764648 135 | 17430.461999999999534, 0.87308806180953979492 136 | 17430.651000000001659, 0.85044950246810913086 137 | 17430.852999999999156, 0.15817256271839141846 138 | 17431.054000000000087, 0.14253008365631103516 139 | 17431.247999999999593, 0.12644885480403900146 140 | 17431.454000000001543, 0.12124214321374893188 141 | 17431.658999999999651, 0.11834982037544250488 142 | 17431.849000000001979, 0.41818290948867797852 143 | 17432.061999999998079, 0.4219589531421661377 144 | 17432.253000000000611, 0.41438668966293334961 145 | 17432.461999999999534, 0.4162152707576751709 146 | 17432.656999999999243, 0.62747335433959960938 147 | 17432.852999999999156, 0.62217432260513305664 148 | 17433.05199999999968, 0.60893815755844116211 149 | 17433.261999999998807, 0.60198444128036499023 150 | 17433.454000000001543, 0.60435968637466430664 151 | 17433.649000000001251, 0.60657137632369995117 152 | 17433.852999999999156, 0.61281335353851318359 153 | 17434.060999999997875, 0.59863924980163574219 154 | 17434.256999999997788, 0.93837374448776245117 155 | 17434.461999999999534, 0.92615348100662231445 156 | 17434.664000000000669, 0.90292322635650634766 157 | 17434.856999999999971, 0.89664793014526367188 158 | 17435.055000000000291, 0.88337826728820800781 159 | 17435.25, 0.83855271339416503906 160 | 17435.450000000000728, 0.83253920078277587891 161 | 17435.651999999998225, 0.81378155946731567383 162 | 17435.851999999998952, 0.82123023271560668945 163 | 17436.06499999999869, 0.82524061203002929688 164 | 17436.247999999999593, 0.81021529436111450195 165 | 17436.465000000000146, 0.53388601541519165039 166 | 17436.658999999999651, 0.50941097736358642578 167 | 17436.864000000001397, 0.50158488750457763672 168 | 17437.057000000000698, 0.47679901123046875 169 | 17437.247999999999593, 0.47730058431625366211 170 | 17437.456999999998516, 0.47338956594467163086 171 | 17437.652000000001863, 0.46418395638465881348 172 | 17437.861000000000786, 0.44962507486343383789 173 | 17438.061999999998079, 0.43684211373329162598 174 | 17438.255999999997584, 0.43686592578887939453 175 | 17438.44800000000032, 0.55030244588851928711 176 | 17438.665999999997439, 0.54106175899505615234 177 | 17438.863000000001193, 0.53005349636077880859 178 | 17439.058000000000902, 0.51451605558395385742 179 | 17439.263999999999214, 0.51813143491744995117 180 | 17439.451999999997497, 0.51068156957626342773 181 | 17439.664000000000669, 0.51120561361312866211 182 | 17439.86200000000099, 0.50065279006958007813 183 | 17440.052999999999884, 0.48977383971214294434 184 | 17440.252000000000407, 0.48551604151725769043 185 | 17440.455999999998312, 0.48680791258811950684 186 | 17440.663000000000466, 0.4783808290958404541 187 | 17440.859000000000378, 0.46812587976455688477 188 | 17441.062999999998283, 0.46002057194709777832 189 | 17441.252000000000407, 0.45202985405921936035 190 | 17441.451999999997497, 0.46458107233047485352 191 | 17441.662000000000262, 0.46435716748237609863 192 | 17441.86200000000099, 0.45350253582000732422 193 | 17442.057000000000698, 0.4413197934627532959 194 | 17442.258999999998196, 0.42520910501480102539 195 | 17442.466000000000349, 0.42357751727104187012 196 | 17442.656999999999243, 0.41510447859764099121 197 | 17442.855999999999767, 0.41367855668067932129 198 | 17443.061999999998079, 0.41575416922569274902 199 | 17443.259000000001834, 0.38932070136070251465 200 | 17443.461999999999534, 0.38497412204742431641 201 | 17443.665000000000873, 0.38570284843444824219 202 | 17443.856999999999971, 0.39117828011512756348 203 | 17444.059000000001106, 0.3905257880687713623 204 | 17444.25, 0.51385915279388427734 205 | 17444.450000000000728, 0.49568915367126464844 206 | 17444.663000000000466, 0.50002253055572509766 207 | 17444.855999999999767, 0.48251238465309143066 208 | 17445.048999999999069, 0.47166469693183898926 209 | 17445.253000000000611, 0.46055293083190917969 210 | 17445.467000000000553, 0.44701221585273742676 211 | 17445.654999999998836, 1.1375614404678344727 212 | 17445.86200000000099, 1.1030218601226806641 213 | 17446.054000000000087, 1.0787965059280395508 214 | 17446.254000000000815, 1.1042791604995727539 215 | 17446.46900000000096, 1.0733633041381835938 216 | 17446.666000000001077, 1.0425329208374023438 217 | 17446.867000000002008, 1.0072270631790161133 218 | 17447.064000000002125, 0.67961305379867553711 219 | 17447.261999999998807, 0.6578960418701171875 220 | 17447.459999999999127, 0.64462894201278686523 221 | 17447.667000000001281, 0.63891518115997314453 222 | 17447.851999999998952, 0.63344609737396240234 223 | 17448.063000000001921, 0.61124861240386962891 224 | 17448.252000000000407, 0.59214484691619873047 225 | 17448.465000000000146, 0.57953697443008422852 226 | 17448.653000000002066, 0.55888551473617553711 227 | 17448.861000000000786, 0.54000258445739746094 228 | 17449.052999999999884, 0.52482771873474121094 229 | 17449.261999999998807, 0.50452601909637451172 230 | 17449.461999999999534, 0.51983582973480224609 231 | 17449.662000000000262, 0.51233237981796264648 232 | 17449.86200000000099, 0.48804426193237304688 233 | 17450.056000000000495, 0.4740785062313079834 234 | 17450.252000000000407, 0.47352543473243713379 235 | 17450.47099999999773, 0.4540869295597076416 236 | 17450.665000000000873, 0.44069299101829528809 237 | 17450.863000000001193, 0.43784391880035400391 238 | 17451.061999999998079, 0.41498780250549316406 239 | 17451.261999999998807, 0.51778376102447509766 240 | 17451.461999999999534, 0.40991419553756713867 241 | 17451.658999999999651, 0.39732876420021057129 242 | 17451.85399999999936, 0.39641743898391723633 243 | 17452.063000000001921, 0.37963891029357910156 244 | 17452.26299999999901, 0.36461487412452697754 245 | 17452.453000000001339, 0.34943947196006774902 246 | 17452.664000000000669, 0.34165787696838378906 247 | 17452.859000000000378, 0.3284861147403717041 248 | 17453.052999999999884, 0.3137804865837097168 249 | 17453.253000000000611, 0.31006500124931335449 250 | 17453.463999999999942, 0.47298294305801391602 251 | 17453.662000000000262, 0.4473972618579864502 252 | 17453.86699999999837, 0.43554407358169555664 253 | 17454.066999999999098, 0.42041483521461486816 254 | 17454.259000000001834, 0.4133014380931854248 255 | 17454.466000000000349, 0.40114334225654602051 256 | 17454.672000000002299, 0.38516095280647277832 257 | 17454.868999999998778, 0.36724805831909179688 258 | 17455.069000000003143, 0.34993582963943481445 259 | 17455.261999999998807, 0.33301934599876403809 260 | 17455.45600000000195, 0.3266499936580657959 261 | 17455.673000000002503, 0.32540854811668395996 262 | 17455.863999999997759, 0.3027973473072052002 263 | 17456.066999999999098, 0.28651854395866394043 264 | 17456.271999999997206, 0.26967263221740722656 265 | 17456.472000000001572, 0.25811028480529785156 266 | 17456.665999999997439, 0.25283291935920715332 267 | 17456.856999999999971, 0.24925933778285980225 268 | 17457.06000000000131, 0.23775979876518249512 269 | 17457.257999999997992, 0.21609726548194885254 270 | 17457.472999999998137, 0.21411934494972229004 271 | 17457.66899999999805, 0.19618624448776245117 272 | 17457.862999999997555, 0.1851218491792678833 273 | 17458.062000000001717, 0.1801271289587020874 274 | 17458.273000000001048, 0.17096287012100219727 275 | 17458.472000000001572, 0.14846569299697875977 276 | 17458.663000000000466, 0.13189753890037536621 277 | 17458.870999999999185, 0.1264371722936630249 278 | 17459.057000000000698, 0.13084432482719421387 279 | 17459.268000000000029, 0.12205544859170913696 280 | 17459.462999999999738, 0.10546461492776870728 281 | 17459.666000000001077, 0.096079893410205841064 282 | 17459.872999999999593, 0.085019156336784362793 283 | 17460.063999999998487, 0.077596515417098999023 284 | 17460.257000000001426, 0.076574966311454772949 285 | 17460.465000000000146, 0.75790029764175415039 286 | -------------------------------------------------------------------------------- /data/errore_in.txt: -------------------------------------------------------------------------------- 1 | # /gazebo/link_states/recceipt_time, /filter_error/data 2 | 20191.212999999999738, 0.13273005187511444092 3 | 20191.407999999999447, 0.13342238962650299072 4 | 20191.601999999998952, 0.13479658961296081543 5 | 20191.809999999997672, 0.13623295724391937256 6 | 20192.003000000000611, 0.13700595498085021973 7 | 20192.197000000000116, 0.1383590400218963623 8 | 20192.408000000003085, 0.13982914388179779053 9 | 20192.614000000001397, 0.14130438864231109619 10 | 20192.810999999997875, 0.14356470108032226563 11 | 20193.01299999999901, 0.14551086723804473877 12 | 20193.213999999999942, 0.1474761664867401123 13 | 20193.404999999998836, 0.14874643087387084961 14 | 20193.601000000002387, 0.15037393569946289063 15 | 20193.806000000000495, 0.15211942791938781738 16 | 20193.996999999999389, 0.1534544825553894043 17 | 20194.204000000001543, 0.15457938611507415771 18 | 20194.412000000000262, 0.1553684622049331665 19 | 20194.604000000002998, 0.15542620420455932617 20 | 20194.812999999998283, 0.15483357012271881104 21 | 20195.001000000000204, 0.15401588380336761475 22 | 20195.204999999998108, 0.15339490771293640137 23 | 20195.409000000003289, 0.15387080609798431396 24 | 20195.613000000001193, 0.15541222691535949707 25 | 20195.808000000000902, 0.15704372525215148926 26 | 20196.003000000000611, 0.15870997309684753418 27 | 20196.202999999997701, 0.16079695522785186768 28 | 20196.413000000000466, 0.16346538066864013672 29 | 20196.601999999998952, 0.16627411544322967529 30 | 20196.812999999998283, 0.169841766357421875 31 | 20196.998999999999796, 0.17784191668033599854 32 | 20197.209000000002561, 0.18141593039035797119 33 | 20197.398999999997613, 0.19025258719921112061 34 | 20197.609000000000378, 0.19459140300750732422 35 | 20197.796999999998661, 0.20566941797733306885 36 | 20198.005999999997584, 0.21068938076496124268 37 | 20198.197000000000116, 0.22319220006465911865 38 | 20198.406999999999243, 0.22956395149230957031 39 | 20198.609999999996944, 0.23904252052307128906 40 | 20198.802999999999884, 0.24799069762229919434 41 | 20199.013999999999214, 0.25278621912002563477 42 | 20199.199000000000524, 0.26916840672492980957 43 | 20199.412000000000262, 0.27073428034782409668 44 | 20199.610999999997148, 0.28368404507637023926 45 | 20199.805000000000291, 0.29312032461166381836 46 | 20199.998999999999796, 0.30611449480056762695 47 | 20200.207999999998719, 0.31191450357437133789 48 | 20200.398000000001048, 0.32581481337547302246 49 | 20200.601999999998952, 0.33262899518013000488 50 | 20200.811000000001513, 0.3445517122745513916 51 | 20200.997999999999593, 0.36061212420463562012 52 | 20201.205000000001746, 0.36877751350402832031 53 | 20201.408999999999651, 0.38204428553581237793 54 | 20201.614000000001397, 0.39156284928321838379 55 | 20201.812000000001717, 0.40553641319274902344 56 | 20201.997999999999593, 0.42830100655555725098 57 | 20202.211999999999534, 0.4398123621940612793 58 | 20202.406999999999243, 0.45591583847999572754 59 | 20202.613999999997759, 0.46752598881721496582 60 | 20202.800999999999476, 0.49106717109680175781 61 | 20203.006999999997788, 0.50256860256195068359 62 | 20203.213999999999942, 0.51510977745056152344 63 | 20203.402999999998428, 0.53547674417495727539 64 | 20203.609000000000378, 0.55228883028030395508 65 | 20203.813000000001921, 0.56626206636428833008 66 | 20204.005000000001019, 0.58786356449127197266 67 | 20204.213999999999942, 0.60290229320526123047 68 | 20204.406999999999243, 0.62431347370147705078 69 | 20204.610000000000582, 0.64286410808563232422 70 | 20204.804000000000087, 0.66007506847381591797 71 | 20205.009000000001834, 0.67685091495513916016 72 | 20205.216000000000349, 0.6902497410774230957 73 | 20205.401000000001659, 0.71280348300933837891 74 | 20205.601999999998952, 0.7286739349365234375 75 | 20205.806999999997061, 0.74117457866668701172 76 | 20205.996999999999389, 0.75979101657867431641 77 | 20206.202000000001135, 0.77264493703842163086 78 | 20206.40599999999904, 0.78802472352981567383 79 | 20206.61200000000099, 0.80138123035430908203 80 | 20206.799999999999272, 0.82291507720947265625 81 | 20207.011999999998807, 0.83438020944595336914 82 | 20207.204999999998108, 0.85315877199172973633 83 | 20207.415000000000873, 0.86746239662170410156 84 | 20207.605999999999767, 0.88724571466445922852 85 | 20207.810999999997875, 0.90466231107711791992 86 | 20208.003000000000611, 0.92434239387512207031 87 | 20208.211999999999534, 0.94113308191299438477 88 | 20208.403000000002066, 0.96016359329223632813 89 | 20208.613999999997759, 0.9780070185661315918 90 | 20208.805000000000291, 0.99917370080947875977 91 | 20209.011999999998807, 1.0172196626663208008 92 | 20209.19999999999709, 1.0384823083877563477 93 | 20209.413000000000466, 1.0558176040649414063 94 | 20209.597999999998137, 1.0782148838043212891 95 | 20209.80199999999968, 1.0961605310440063477 96 | 20210.003000000000611, 1.1151995658874511719 97 | 20210.211999999999534, 1.1338759660720825195 98 | 20210.404999999998836, 1.1522208452224731445 99 | 20210.61200000000099, 1.1695604324340820313 100 | 20210.804000000000087, 1.186858057975769043 101 | 20211.001000000000204, 1.2047019004821777344 102 | 20211.199000000000524, 1.2225008010864257813 103 | 20211.406999999999243, 1.2412534952163696289 104 | 20211.613000000001193, 1.2605253458023071289 105 | 20211.797999999998865, 1.2787840366363525391 106 | 20212.004000000000815, 1.2972366809844970703 107 | 20212.211999999999534, 1.3152235746383666992 108 | 20212.402999999998428, 1.3316496610641479492 109 | 20212.605999999999767, 1.3482120037078857422 110 | 20212.812000000001717, 1.3648737668991088867 111 | 20213.002000000000407, 1.3793404102325439453 112 | 20213.208999999998923, 1.3956699371337890625 113 | 20213.398999999997613, 1.4103142023086547852 114 | 20213.608000000000175, 1.4264819622039794922 115 | 20213.797999999998865, 1.4397181272506713867 116 | 20214.002000000000407, 1.455767512321472168 117 | 20214.212000000003172, 1.472747802734375 118 | 20214.400999999998021, 1.4845460653305053711 119 | 20214.612999999997555, 1.5031170845031738281 120 | 20214.80199999999968, 1.5128738880157470703 121 | 20215.011999999998807, 1.5294282436370849609 122 | 20215.204999999998108, 1.5438473224639892578 123 | 20215.415000000000873, 1.559234619140625 124 | 20215.601999999998952, 1.5709291696548461914 125 | 20215.811999999998079, 1.5852646827697753906 126 | 20216.002000000000407, 1.5968263149261474609 127 | 20216.203000000001339, 1.6135363578796386719 128 | 20216.407999999999447, 1.6277335882186889648 129 | 20216.61200000000099, 1.6446703672409057617 130 | 20216.807000000000698, 1.6554243564605712891 131 | 20217.015000000003056, 1.6715210676193237305 132 | 20217.203000000001339, 1.6813036203384399414 133 | 20217.413000000000466, 1.6985071897506713867 134 | 20217.608000000000175, 1.7084642648696899414 135 | 20217.802999999999884, 1.7228547334671020508 136 | 20218.014999999999418, 1.7415499687194824219 137 | 20218.211999999999534, 1.7534137964248657227 138 | 20218.413000000000466, 1.7733496427536010742 139 | 20218.597999999998137, 1.7818289995193481445 140 | 20218.798999999999069, 1.7898424863815307617 141 | 20219.006000000001222, 1.8178633451461791992 142 | 20219.215000000000146, 1.8378676176071166992 143 | 20219.40599999999904, 1.8482930660247802734 144 | 20219.614000000001397, 1.8676617145538330078 145 | 20219.80199999999968, 1.8781936168670654297 146 | 20220.010999999998603, 1.8933024406433105469 147 | 20220.203000000001339, 1.908742070198059082 148 | 20220.407999999999447, 1.9242434501647949219 149 | 20220.598000000001775, 1.9343168735504150391 150 | 20220.805000000000291, 1.9547914266586303711 151 | 20221.01299999999901, 1.9740972518920898438 152 | 20221.202999999997701, 1.9835878610610961914 153 | 20221.408000000003085, 1.997694849967956543 154 | 20221.614000000001397, 2.0163843631744384766 155 | 20221.799999999999272, 2.0197701454162597656 156 | 20222.00800000000163, 2.0380706787109375 157 | 20222.213999999999942, 2.0572662353515625 158 | 20222.402000000001863, 2.06561279296875 159 | 20222.614999999997963, 2.0844960212707519531 160 | 20222.809000000001106, 2.0930330753326416016 161 | 20222.996999999999389, 2.1009297370910644531 162 | 20223.208999999998923, 2.1201655864715576172 163 | 20223.400999999998021, 2.1279904842376708984 164 | 20223.613000000001193, 2.1519727706909179688 165 | 20223.804000000000087, 2.1587316989898681641 166 | 20223.997999999999593, 2.1648459434509277344 167 | 20224.208000000002357, 2.1828978061676025391 168 | 20224.398000000001048, 2.1901571750640869141 169 | 20224.608000000000175, 2.207660675048828125 170 | 20224.811000000001513, 2.2193942070007324219 171 | 20225.001999999996769, 2.2253015041351318359 172 | 20225.208999999998923, 2.2414286136627197266 173 | 20225.414999999997235, 2.2569000720977783203 174 | 20225.605999999999767, 2.2622652053833007813 175 | 20225.811999999998079, 2.2787106037139892578 176 | 20226.001000000000204, 2.2786257266998291016 177 | 20226.207999999998719, 2.2946012020111083984 178 | 20226.397000000000844, 2.2994027137756347656 179 | 20226.604999999999563, 2.3139142990112304688 180 | 20226.813000000001921, 2.3281373977661132813 181 | 20227.01299999999901, 2.3377449512481689453 182 | 20227.203000000001339, 2.3421993255615234375 183 | 20227.40599999999904, 2.3367238044738769531 184 | 20227.613999999997759, 2.3651144504547119141 185 | 20227.802999999999884, 2.3696866035461425781 186 | 20228.010999999998603, 2.3792090415954589844 187 | 20228.203000000001339, 2.3886241912841796875 188 | 20228.411000000000058, 2.3988282680511474609 189 | 20228.597999999998137, 2.4043178558349609375 190 | 20228.812000000001717, 2.4225890636444091797 191 | 20229.002000000000407, 2.4229071140289306641 192 | 20229.210999999999331, 2.4420559406280517578 193 | 20229.399999999997817, 2.4428310394287109375 194 | 20229.609000000000378, 2.4572346210479736328 195 | 20229.799000000002707, 2.4634130001068115234 196 | 20230.003000000000611, 2.4775743484497070313 197 | 20230.211999999999534, 2.4915947914123535156 198 | 20230.396999999997206, 2.4935235977172851563 199 | 20230.601999999998952, 2.5035636425018310547 200 | 20230.809000000001106, 2.5181717872619628906 201 | 20231.014000000002852, 2.5318615436553955078 202 | 20231.204000000001543, 2.5382068157196044922 203 | 20231.397000000000844, 2.5444414615631103516 204 | 20231.601999999998952, 2.5567495822906494141 205 | 20231.809999999997672, 2.5657098293304443359 206 | 20232.008999999998196, 2.5750458240509033203 207 | 20232.19800000000032, 2.5828638076782226563 208 | 20232.40599999999904, 2.5950031280517578125 209 | 20232.598999999998341, 2.601764678955078125 210 | 20232.812000000001717, 2.6162028312683105469 211 | 20232.997000000003027, 2.6199097633361816406 212 | 20233.205000000001746, 2.6310491561889648438 213 | 20233.401999999998225, 2.638950347900390625 214 | 20233.614000000001397, 2.6518549919128417969 215 | 20233.805000000000291, 2.6597626209259033203 216 | 20234.011999999998807, 2.6710338592529296875 217 | 20234.200999999997293, 2.6768767833709716797 218 | 20234.413000000000466, 2.6873846054077148438 219 | 20234.606999999999971, 2.6954884529113769531 220 | 20234.812000000001717, 2.7040705680847167969 221 | 20235.004000000000815, 2.7128033638000488281 222 | 20235.197000000000116, 2.7202608585357666016 223 | 20235.404999999998836, 2.7295081615447998047 224 | 20235.610999999997148, 2.7374067306518554688 225 | 20235.80199999999968, 2.7442994117736816406 226 | 20236.011999999998807, 2.7513370513916015625 227 | 20236.197000000000116, 2.7588646411895751953 228 | 20236.406000000002678, 2.7669816017150878906 229 | 20236.613000000001193, 2.7749419212341308594 230 | 20236.805000000000291, 2.7827696800231933594 231 | 20236.996999999999389, 2.7915482521057128906 232 | 20237.20600000000195, 2.7978663444519042969 233 | 20237.412000000000262, 2.8047323226928710938 234 | 20237.601000000002387, 2.8139503002166748047 235 | 20237.812000000001717, 2.820892333984375 236 | 20238.006999999997788, 2.8283209800720214844 237 | 20238.19800000000032, 2.8375151157379150391 238 | 20238.402999999998428, 2.8421790599822998047 239 | 20238.609000000000378, 2.8495349884033203125 240 | 20238.797999999998865, 2.8587598800659179688 241 | 20239.005000000001019, 2.8648087978363037109 242 | 20239.211999999999534, 2.8695914745330810547 243 | 20239.402999999998428, 2.8824687004089355469 244 | 20239.597000000001572, 2.8887486457824707031 245 | 20239.80199999999968, 2.8941409587860107422 246 | 20240.008999999998196, 2.9021191596984863281 247 | 20240.212999999999738, 2.9069926738739013672 248 | 20240.400999999998021, 2.9213855266571044922 249 | 20240.609000000000378, 2.9271388053894042969 250 | 20240.802999999999884, 2.9364371299743652344 251 | 20241.005999999997584, 2.9465913772583007813 252 | 20241.199000000000524, 2.960750579833984375 253 | 20241.404999999998836, 2.9678771495819091797 254 | 20241.606999999999971, 2.9785740375518798828 255 | 20241.812000000001717, 2.9896523952484130859 256 | 20242.005999999997584, 3.0010786056518554688 257 | 20242.211999999999534, 3.0095729827880859375 258 | 20242.399999999997817, 3.0284616947174072266 259 | 20242.60399999999936, 3.0377652645111083984 260 | 20242.80199999999968, 3.0543527603149414063 261 | 20243.009000000001834, 3.0622246265411376953 262 | 20243.19999999999709, 3.0780072212219238281 263 | 20243.408999999999651, 3.0854229927062988281 264 | 20243.597999999998137, 3.0999929904937744141 265 | 20243.80199999999968, 3.1062369346618652344 266 | 20244.011999999998807, 3.1162278652191162109 267 | 20244.202000000001135, 3.1254131793975830078 268 | 20244.411000000000058, 3.1360831260681152344 269 | 20244.602999999999156, 3.1473393440246582031 270 | 20244.802999999999884, 3.1584038734436035156 271 | 20245.006000000001222, 3.1701576709747314453 272 | 20245.19800000000032, 3.1859469413757324219 273 | 20245.401000000001659, 3.196804046630859375 274 | 20245.605999999999767, 3.2033884525299072266 275 | 20245.809999999997672, 3.2141320705413818359 276 | 20245.997999999999593, 3.2284557819366455078 277 | 20246.211999999999534, 3.2306177616119384766 278 | 20246.40400000000227, 3.2448639869689941406 279 | 20246.610000000000582, 3.2543935775756835938 280 | 20246.811999999998079, 3.2589159011840820313 281 | 20247.003000000000611, 3.2717237472534179688 282 | 20247.212999999999738, 3.2750785350799560547 283 | 20247.403000000002066, 3.2866826057434082031 284 | 20247.613000000001193, 3.2893438339233398438 285 | 20247.80199999999968, 3.3018095493316650391 286 | 20248.009999999998399, 3.3095374107360839844 287 | 20248.200000000000728, 3.3209497928619384766 288 | 20248.413000000000466, 3.3194103240966796875 289 | 20248.604999999999563, 3.331432342529296875 290 | 20248.812999999998283, 3.33400726318359375 291 | 20249.002000000000407, 3.3455660343170166016 292 | 20249.208999999998923, 3.3516793251037597656 293 | 20249.408999999999651, 3.3568072319030761719 294 | 20249.599000000001979, 3.3663928508758544922 295 | 20249.812999999998283, 3.3679127693176269531 296 | 20250.001999999996769, 3.3733670711517333984 297 | 20250.212999999999738, 3.3745634555816650391 298 | 20250.402999999998428, 3.3839101791381835938 299 | 20250.614000000001397, 3.3854603767395019531 300 | 20250.808000000000902, 3.3953418731689453125 301 | 20251.003000000000611, 3.4017057418823242188 302 | 20251.210999999999331, 3.4079630374908447266 303 | 20251.408999999999651, 3.4139254093170166016 304 | 20251.613000000001193, 3.4160065650939941406 305 | 20251.802999999999884, 3.4255881309509277344 306 | 20252.013000000002648, 3.4276328086853027344 307 | 20252.202000000001135, 3.4362506866455078125 308 | 20252.411999999996624, 3.4418363571166992188 309 | 20252.602999999999156, 3.4474015235900878906 310 | 20252.813000000001921, 3.4525997638702392578 311 | 20253.004000000000815, 3.4569363594055175781 312 | 20253.212999999999738, 3.4588396549224853516 313 | 20253.398000000001048, 3.4691913127899169922 314 | 20253.603000000002794, 3.471195220947265625 315 | 20253.813999999998487, 3.4729573726654052734 316 | 20254.008999999998196, 3.4793376922607421875 317 | 20254.205999999998312, 3.4828584194183349609 318 | 20254.407999999999447, 3.4863348007202148438 319 | 20254.604999999999563, 3.4899199008941650391 320 | 20254.800999999999476, 3.4938509464263916016 321 | 20255.006999999997788, 3.4972701072692871094 322 | -------------------------------------------------------------------------------- /data/errore_shaf.txt: -------------------------------------------------------------------------------- 1 | # /gazebo/link_states/recceipt_time, /filter_error/data 2 | 16936.686000000001513, 0.1164553910493850708 3 | 16936.891999999999825, 0.11644693464040756226 4 | 16937.11200000000099, 0.1161373332142829895 5 | 16937.294000000001688, 0.10169070959091186523 6 | 16937.486999999997352, 0.070607006549835205078 7 | 16937.704000000001543, 0.069847434759140014648 8 | 16937.897000000000844, 0.064382344484329223633 9 | 16938.093000000000757, 0.057836018502712249756 10 | 16938.296999999998661, 0.080035991966724395752 11 | 16938.496000000002823, 0.083012089133262634277 12 | 16938.688999999998487, 0.063474781811237335205 13 | 16938.887000000002445, 0.064939260482788085938 14 | 16939.100000000002183, 0.05547490343451499939 15 | 16939.295000000001892, 0.032832175493240356445 16 | 16939.502000000000407, 0.023178603500127792358 17 | 16939.693999999999505, 0.041931401938199996948 18 | 16939.897000000000844, 0.015720264986157417297 19 | 16940.092000000000553, 0.01205022912472486496 20 | 16940.292999999997846, 0.016325891017913818359 21 | 16940.493999999998778, 0.037383370101451873779 22 | 16940.68999999999869, 0.026611359789967536926 23 | 16940.891999999999825, 0.028240390121936798096 24 | 16941.100999999998749, 0.025205299258232116699 25 | 16941.29399999999805, 0.026826735585927963257 26 | 16941.493999999998778, 0.026600353419780731201 27 | 16941.69800000000032, 0.038615748286247253418 28 | 16941.893000000000029, 0.065643228590488433838 29 | 16942.088999999999942, 0.054998181760311126709 30 | 16942.302000000003318, 0.069884680211544036865 31 | 16942.497999999999593, 0.07983433455228805542 32 | 16942.687999999998283, 0.063083864748477935791 33 | 16942.893000000000029, 0.065599560737609863281 34 | 16943.092000000000553, 0.06900069117546081543 35 | 16943.290000000000873, 0.064597524702548980713 36 | 16943.489000000001397, 0.074106551706790924072 37 | 16943.690999999998894, 0.042846765369176864624 38 | 16943.899000000001251, 0.070229604840278625488 39 | 16944.097999999998137, 0.075836263597011566162 40 | 16944.294000000001688, 0.060808159410953521729 41 | 16944.491000000001804, 0.049734026193618774414 42 | 16944.695999999999913, 0.047820806503295898438 43 | 16944.891999999999825, 0.050165630877017974854 44 | 16945.086999999999534, 0.043599139899015426636 45 | 16945.30199999999968, 0.023227792233228683472 46 | 16945.488000000001193, 0.023426465690135955811 47 | 16945.691999999999098, 0.034535463899374008179 48 | 16945.891999999999825, 0.030205035582184791565 49 | 16946.091000000000349, 0.031738370656967163086 50 | 16946.292999999997846, 0.034714974462985992432 51 | 16946.489000000001397, 0.026588996872305870056 52 | 16946.703000000001339, 0.035934869199991226196 53 | 16946.902000000001863, 0.056350886821746826172 54 | 16947.098000000001775, 0.057984873652458190918 55 | 16947.29399999999805, 0.047788679599761962891 56 | 16947.490999999998166, 0.038153115659952163696 57 | 16947.692999999999302, 0.028466267511248588562 58 | 16947.901999999998225, 0.03249816596508026123 59 | 16948.096000000001368, 0.034752503037452697754 60 | 16948.290999999997439, 0.045512091368436813354 61 | 16948.492000000002008, 0.11120362579822540283 62 | 16948.701000000000931, 0.10227373242378234863 63 | 16948.900999999998021, 0.1008203551173210144 64 | 16949.102999999999156, 0.11726002395153045654 65 | 16949.300999999999476, 0.10996278375387191772 66 | 16949.502000000000407, 0.12204651534557342529 67 | 16949.685999999997875, 0.12837006151676177979 68 | 16949.898000000001048, 0.15000560879707336426 69 | 16950.093000000000757, 0.1409588158130645752 70 | 16950.290000000000873, 0.13973206281661987305 71 | 16950.498999999999796, 0.14331836998462677002 72 | 16950.688000000001921, 0.14679256081581115723 73 | 16950.903999999998632, 0.14950636029243469238 74 | 16951.09400000000096, 0.1383714526891708374 75 | 16951.289000000000669, 0.14639046788215637207 76 | 16951.490000000001601, 0.14928145706653594971 77 | 16951.692999999999302, 0.14842125773429870605 78 | 16951.893000000000029, 0.14312559366226196289 79 | 16952.102999999999156, 0.14366276562213897705 80 | 16952.294000000001688, 0.11751458793878555298 81 | 16952.493999999998778, 0.1448014378547668457 82 | 16952.703000000001339, 0.126570090651512146 83 | 16952.891999999999825, 0.10105154663324356079 84 | 16953.09599999999773, 0.097468934953212738037 85 | 16953.294999999998254, 0.077972240746021270752 86 | 16953.498999999999796, 0.074070751667022705078 87 | 16953.704000000001543, 0.069481663405895233154 88 | 16953.915000000000873, 0.071996793150901794434 89 | 16954.098000000001775, 0.07925395667552947998 90 | 16954.299999999999272, 0.10119685530662536621 91 | 16954.503000000000611, 0.10636712610721588135 92 | 16954.693999999999505, 0.1145494505763053894 93 | 16954.88799999999901, 0.11934675276279449463 94 | 16955.095000000001164, 0.12151139974594116211 95 | 16955.30199999999968, 0.12160571664571762085 96 | 16955.501000000000204, 0.125341072678565979 97 | 16955.695999999999913, 0.13773289322853088379 98 | 16955.898000000001048, 0.13367225229740142822 99 | 16956.088999999999942, 0.13215178251266479492 100 | 16956.287000000000262, 0.12099161744117736816 101 | 16956.503000000000611, 0.14587482810020446777 102 | 16956.691999999999098, 0.1447124183177947998 103 | 16956.897000000000844, 0.13486303389072418213 104 | 16957.092999999997119, 0.12663242220878601074 105 | 16957.302999999999884, 0.12239130586385726929 106 | 16957.495999999999185, 0.11058067530393600464 107 | 16957.702999999997701, 0.10406416654586791992 108 | 16957.904999999998836, 0.096129335463047027588 109 | 16958.099000000001979, 0.097104884684085845947 110 | 16958.297999999998865, 0.091543935239315032959 111 | 16958.496999999999389, 0.085012555122375488281 112 | 16958.692999999999302, 0.083519101142883300781 113 | 16958.902000000001863, 0.078034199774265289307 114 | 16959.091999999996915, 0.097728490829467773438 115 | 16959.287000000000262, 0.11115133762359619141 116 | 16959.502000000000407, 0.10986234992742538452 117 | 16959.702000000001135, 0.099150918424129486084 118 | 16959.900999999998021, 0.098255567252635955811 119 | 16960.093000000000757, 0.11587198078632354736 120 | 16960.302000000003318, 0.11126679182052612305 121 | 16960.495999999999185, 0.11537578701972961426 122 | 16960.695999999999913, 0.10482668131589889526 123 | 16960.902999999998428, 0.11717066168785095215 124 | 16961.090000000000146, 0.10497405380010604858 125 | 16961.302999999999884, 0.11261841654777526855 126 | 16961.495000000002619, 0.11496160924434661865 127 | 16961.693000000002939, 0.11739989370107650757 128 | 16961.890999999999622, 0.11460200697183609009 129 | 16962.092000000000553, 0.099669888615608215332 130 | 16962.289000000000669, 0.096397250890731811523 131 | 16962.503000000000611, 0.10111892968416213989 132 | 16962.701999999997497, 0.10506211221218109131 133 | 16962.900000000001455, 0.11890005320310592651 134 | 16963.091000000000349, 0.1177075803279876709 135 | 16963.294000000001688, 0.11158072203397750854 136 | 16963.497999999999593, 0.13079507648944854736 137 | 16963.691999999999098, 0.10900219529867172241 138 | 16963.886000000002241, 0.1192480921745300293 139 | 16964.086999999999534, 0.11976580321788787842 140 | 16964.292999999997846, 0.11718100309371948242 141 | 16964.493999999998778, 0.11569852381944656372 142 | 16964.686999999998079, 0.11263761669397354126 143 | 16964.888999999999214, 0.12324897944927215576 144 | 16965.097000000001572, 0.10943692177534103394 145 | 16965.302999999999884, 0.11522803455591201782 146 | 16965.497999999999593, 0.10639709234237670898 147 | 16965.701000000000931, 0.11847965419292449951 148 | 16965.903000000002066, 0.12066070735454559326 149 | 16966.093000000000757, 0.11712694913148880005 150 | 16966.300999999999476, 0.10065912455320358276 151 | 16966.497999999999593, 0.10624514520168304443 152 | 16966.691999999999098, 0.098594583570957183838 153 | 16966.902999999998428, 0.086249113082885742188 154 | 16967.090000000000146, 0.064745217561721801758 155 | 16967.287000000000262, 0.072452664375305175781 156 | 16967.488000000001193, 0.078387871384620666504 157 | 16967.691999999999098, 0.081792764365673065186 158 | 16967.897000000000844, 0.092305481433868408203 159 | 16968.093000000000757, 0.088648319244384765625 160 | 16968.287000000000262, 0.090643346309661865234 161 | 16968.496999999999389, 0.094076082110404968262 162 | 16968.692999999999302, 0.076976053416728973389 163 | 16968.901999999998225, 0.097758337855339050293 164 | 16969.092000000000553, 0.092690691351890563965 165 | 16969.30199999999968, 0.10386617481708526611 166 | 16969.5, 0.10021848231554031372 167 | 16969.697000000000116, 0.0973757132887840271 168 | 16969.888999999999214, 0.10538855195045471191 169 | 16970.10399999999936, 0.11013892292976379395 170 | 16970.288000000000466, 0.10641685128211975098 171 | 16970.512000000002445, 0.12508772313594818115 172 | 16970.697000000000116, 0.13378834724426269531 173 | 16970.900000000001455, 0.14676928520202636719 174 | 16971.105999999999767, 0.14756509661674499512 175 | 16971.292000000001281, 0.14700876176357269287 176 | 16971.488000000001193, 0.16064742207527160645 177 | 16971.688999999998487, 0.1657657325267791748 178 | 16971.901999999998225, 0.16937847435474395752 179 | 16972.09400000000096, 0.16449150443077087402 180 | 16972.302999999999884, 0.17696274816989898682 181 | 16972.492000000002008, 0.16240142285823822021 182 | 16972.704000000001543, 0.18139243125915527344 183 | 16972.901000000001659, 0.17091950774192810059 184 | 16973.091000000000349, 0.15573620796203613281 185 | 16973.300999999999476, 0.150493621826171875 186 | 16973.494999999998981, 0.14361496269702911377 187 | 16973.68999999999869, 0.15088346600532531738 188 | 16973.891999999999825, 0.1590856015682220459 189 | 16974.092000000000553, 0.16264753043651580811 190 | 16974.295000000001892, 0.18686604499816894531 191 | 16974.501999999996769, 0.18536122143268585205 192 | 16974.691000000002532, 0.1799713820219039917 193 | 16974.902000000001863, 0.18484650552272796631 194 | 16975.096999999997934, 0.18133153021335601807 195 | 16975.30199999999968, 0.18967577815055847168 196 | 16975.504000000000815, 0.18298941850662231445 197 | 16975.702000000001135, 0.16459819674491882324 198 | 16975.889000000002852, 0.1752926558256149292 199 | 16976.10200000000259, 0.1596784740686416626 200 | 16976.302000000003318, 0.12734265625476837158 201 | 16976.5, 0.12386363744735717773 202 | 16976.693999999999505, 0.1181754767894744873 203 | 16976.905000000002474, 0.1249490007758140564 204 | 16977.10200000000259, 0.12062967568635940552 205 | 16977.305000000000291, 0.11990474164485931396 206 | 16977.506000000001222, 0.13018287718296051025 207 | 16977.702000000001135, 0.1235911250114440918 208 | 16977.894000000000233, 0.11832883208990097046 209 | 16978.088999999999942, 0.11933419108390808105 210 | 16978.296999999998661, 0.13312864303588867188 211 | 16978.490999999998166, 0.13141582906246185303 212 | 16978.693000000002939, 0.12947687506675720215 213 | 16978.890999999999622, 0.14581277966499328613 214 | 16979.103000000002794, 0.14104913175106048584 215 | 16979.297999999998865, 0.12931366264820098877 216 | 16979.503000000000611, 0.14088243246078491211 217 | 16979.697000000000116, 0.18789106607437133789 218 | 16979.891999999999825, 0.18114823102951049805 219 | 16980.093000000000757, 0.18329454958438873291 220 | 16980.289000000000669, 0.16259594261646270752 221 | 16980.492999999998574, 0.16101980209350585938 222 | 16980.705999999998312, 0.1563615947961807251 223 | 16980.902000000001863, 0.16827099025249481201 224 | 16981.093000000000757, 0.17710037529468536377 225 | 16981.304000000000087, 0.19015130400657653809 226 | 16981.503000000000611, 0.18605889379978179932 227 | 16981.688999999998487, 0.18722113966941833496 228 | 16981.88799999999901, 0.18349808454513549805 229 | 16982.10399999999936, 0.20707173645496368408 230 | 16982.30199999999968, 0.18926629424095153809 231 | 16982.493999999998778, 0.18544349074363708496 232 | 16982.690999999998894, 0.18697920441627502441 233 | 16982.893000000000029, 0.17987988889217376709 234 | 16983.104999999999563, 0.18016541004180908203 235 | 16983.293000000001484, 0.17872290313243865967 236 | 16983.504000000000815, 0.19150769710540771484 237 | 16983.70600000000195, 0.19449010491371154785 238 | 16983.893000000000029, 0.18129496276378631592 239 | 16984.097000000001572, 0.18499480187892913818 240 | 16984.298000000002503, 0.17018014192581176758 241 | 16984.492999999998574, 0.17059215903282165527 242 | 16984.701999999997497, 0.17522229254245758057 243 | 16984.894000000000233, 0.17006269097328186035 244 | 16985.094999999997526, 0.16477699577808380127 245 | 16985.302999999999884, 0.16184560954570770264 246 | 16985.502000000000407, 0.15160274505615234375 247 | 16985.701000000000931, 0.13690276443958282471 248 | 16985.908000000003085, 0.15868066251277923584 249 | 16986.105999999999767, 0.16428747773170471191 250 | 16986.309999999997672, 0.14935478568077087402 251 | 16986.496999999999389, 0.13195908069610595703 252 | 16986.710999999999331, 0.14315691590309143066 253 | 16986.911000000000058, 0.14421123266220092773 254 | 16987.099000000001979, 0.14077998697757720947 255 | 16987.313000000001921, 0.16174225509166717529 256 | 16987.504000000000815, 0.1469281613826751709 257 | 16987.701000000000931, 0.15329247713088989258 258 | 16987.902000000001863, 0.15556859970092773438 259 | 16988.099999999998545, 0.16071133315563201904 260 | 16988.300999999999476, 0.16161067783832550049 261 | 16988.509999999998399, 0.16653360426425933838 262 | 16988.701000000000931, 0.15901368856430053711 263 | 16988.906999999999243, 0.1710147559642791748 264 | 16989.111000000000786, 0.16582325100898742676 265 | 16989.305999999996857, 0.17092804610729217529 266 | 16989.51299999999901, 0.17735052108764648438 267 | 16989.709000000002561, 0.1868553459644317627 268 | 16989.922999999998865, 0.19142000377178192139 269 | 16990.122999999999593, 0.19922964274883270264 270 | 16990.305000000000291, 0.20039300620555877686 271 | 16990.525000000001455, 0.19364203512668609619 272 | 16990.722000000001572, 0.1922661513090133667 273 | 16990.921999999998661, 0.2056379169225692749 274 | 16991.119999999998981, 0.21406443417072296143 275 | 16991.32300000000032, 0.21639907360076904297 276 | 16991.519000000000233, 0.2019144594669342041 277 | 16991.722000000001572, 0.19915431737899780273 278 | 16991.91899999999805, 0.19226638972759246826 279 | 16992.122999999999593, 0.19808243215084075928 280 | 16992.32300000000032, 0.20088186860084533691 281 | 16992.52299999999741, 0.17843168973922729492 282 | 16992.717000000000553, 0.17427651584148406982 283 | 16992.911000000000058, 0.18687203526496887207 284 | 16993.109000000000378, 0.17454396188259124756 285 | 16993.311000000001513, 0.18686462938785552979 286 | 16993.523000000001048, 0.18111906945705413818 287 | 16993.705999999998312, 0.1684620976448059082 288 | 16993.915000000000873, 0.17334318161010742188 289 | 16994.112999999997555, 0.16841894388198852539 290 | 16994.322000000000116, 0.16104824841022491455 291 | 16994.519000000000233, 0.15156464278697967529 292 | 16994.711999999999534, 0.15436831116676330566 293 | 16994.919999999998254, 0.1534312516450881958 294 | 16995.148000000001048, 0.14615423977375030518 295 | 16995.316999999999098, 0.1266025155782699585 296 | 16995.519000000000233, 0.15201523900032043457 297 | 16995.713999999999942, 0.1632785797119140625 298 | 16995.909999999999854, 0.1744314730167388916 299 | 16996.122999999999593, 0.17452444136142730713 300 | 16996.313000000001921, 0.15551988780498504639 301 | 16996.515999999999622, 0.16335302591323852539 302 | 16996.70600000000195, 0.15792773663997650146 303 | 16996.908000000003085, 0.16398319602012634277 304 | 16997.108000000000175, 0.16667973995208740234 305 | 16997.32300000000032, 0.17466585338115692139 306 | 16997.51299999999901, 0.17841053009033203125 307 | 16997.726000000002387, 0.19296254217624664307 308 | 16997.921999999998661, 0.20509195327758789063 309 | 16998.113000000001193, 0.20533116161823272705 310 | 16998.328000000001339, 0.21354614198207855225 311 | 16998.519000000000233, 0.21317125856876373291 312 | 16998.717000000000553, 0.2158298790454864502 313 | 16998.929000000000087, 0.22266042232513427734 314 | 16999.125, 0.20129592716693878174 315 | 16999.315999999998894, 0.19215135276317596436 316 | 16999.528999999998632, 0.20539760589599609375 317 | 16999.723000000001775, 0.21352507174015045166 318 | 16999.92699999999968, 0.20334105193614959717 319 | 17000.118000000002212, 0.20737174153327941895 320 | 17000.322000000000116, 0.2034467160701751709 321 | -------------------------------------------------------------------------------- /data/errore_shfaf.txt: -------------------------------------------------------------------------------- 1 | # /gazebo/link_states/recceipt_time, /filter_error/data 2 | 20446.295999999998457, 0.064250081777572631836 3 | 20446.496999999999389, 0.061002235859632492065 4 | 20446.699000000000524, 0.070759214460849761963 5 | 20446.897000000000844, 0.073281660676002502441 6 | 20447.095000000001164, 0.059469632804393768311 7 | 20447.304000000000087, 0.079287648200988769531 8 | 20447.492000000002008, 0.089598663151264190674 9 | 20447.691000000002532, 0.09760735929012298584 10 | 20447.898999999997613, 0.10887198895215988159 11 | 20448.104999999999563, 0.10483868420124053955 12 | 20448.305000000000291, 0.10871092230081558228 13 | 20448.5, 0.11572863161563873291 14 | 20448.69800000000032, 0.11780447512865066528 15 | 20448.891999999999825, 0.12580673396587371826 16 | 20449.090000000000146, 0.12941366434097290039 17 | 20449.299999999999272, 0.13446152210235595703 18 | 20449.493999999998778, 0.13875503838062286377 19 | 20449.701000000000931, 0.12185738980770111084 20 | 20449.891999999999825, 0.14245876669883728027 21 | 20450.095000000001164, 0.13373404741287231445 22 | 20450.292000000001281, 0.14146940410137176514 23 | 20450.5, 0.1298647075891494751 24 | 20450.707999999998719, 0.12146271020174026489 25 | 20450.891999999999825, 0.12297887355089187622 26 | 20451.088999999999942, 0.11425387859344482422 27 | 20451.291999999997643, 0.11570419371128082275 28 | 20451.496999999999389, 0.11495985835790634155 29 | 20451.699000000000524, 0.11706130951642990112 30 | 20451.888999999999214, 0.09366858750581741333 31 | 20452.095000000001164, 0.092211358249187469482 32 | 20452.297999999998865, 0.059386793524026870728 33 | 20452.49199999999837, 0.06775073707103729248 34 | 20452.703000000001339, 0.066257067024707794189 35 | 20452.891999999999825, 0.066213458776473999023 36 | 20453.10200000000259, 0.051436025649309158325 37 | 20453.290000000000873, 0.06514479219913482666 38 | 20453.493000000002212, 0.065991766750812530518 39 | 20453.707000000002154, 0.034184195101261138916 40 | 20453.902000000001863, 0.017257066443562507629 41 | 20454.093000000000757, 0.027596846222877502441 42 | 20454.289000000000669, 0.027392709627747535706 43 | 20454.505000000001019, 0.030369861051440238953 44 | 20454.705000000001746, 0.019605765119194984436 45 | 20454.891999999999825, 0.027804009616374969482 46 | 20455.102999999999156, 0.028941638767719268799 47 | 20455.298999999999069, 0.042885113507509231567 48 | 20455.49199999999837, 0.038877751678228378296 49 | 20455.69800000000032, 0.025750812143087387085 50 | 20455.895000000000437, 0.036736104637384414673 51 | 20456.106999999999971, 0.055115390568971633911 52 | 20456.302999999999884, 0.074800737202167510986 53 | 20456.495999999999185, 0.064345598220825195313 54 | 20456.68999999999869, 0.060910388827323913574 55 | 20456.906999999999243, 0.077463209629058837891 56 | 20457.106999999999971, 0.086276128888130187988 57 | 20457.29399999999805, 0.07594057917594909668 58 | 20457.49199999999837, 0.081468120217323303223 59 | 20457.690999999998894, 0.076813586056232452393 60 | 20457.895000000000437, 0.073635406792163848877 61 | 20458.100999999998749, 0.068207517266273498535 62 | 20458.30199999999968, 0.073146902024745941162 63 | 20458.502000000000407, 0.078314125537872314453 64 | 20458.703999999997905, 0.066170305013656616211 65 | 20458.897000000000844, 0.061205171048641204834 66 | 20459.105999999999767, 0.091631554067134857178 67 | 20459.293000000001484, 0.077504880726337432861 68 | 20459.492999999998574, 0.062774159014225006104 69 | 20459.703999999997905, 0.07268584519624710083 70 | 20459.894000000000233, 0.059632662683725357056 71 | 20460.093000000000757, 0.051928784698247909546 72 | 20460.289000000000669, 0.062493793666362762451 73 | 20460.5, 0.065370619297027587891 74 | 20460.70600000000195, 0.068427704274654388428 75 | 20460.900000000001455, 0.066009812057018280029 76 | 20461.093000000000757, 0.077142745256423950195 77 | 20461.305000000000291, 0.068181864917278289795 78 | 20461.502000000000407, 0.067469686269760131836 79 | 20461.704000000001543, 0.091474890708923339844 80 | 20461.894000000000233, 0.093800581991672515869 81 | 20462.091000000000349, 0.078531295061111450195 82 | 20462.292000000001281, 0.083510711789131164551 83 | 20462.506000000001222, 0.087286636233329772949 84 | 20462.701000000000931, 0.049194376915693283081 85 | 20462.897000000000844, 0.032987590879201889038 86 | 20463.093000000000757, 0.026114851236343383789 87 | 20463.294999999998254, 0.026882242411375045776 88 | 20463.497999999999593, 0.02960925176739692688 89 | 20463.692000000002736, 0.017392182722687721252 90 | 20463.907000000002881, 0.017189187929034233093 91 | 20464.103000000002794, 0.014964213594794273376 92 | 20464.300999999999476, 0.010642761364579200745 93 | 20464.497999999999593, 0.014778110198676586151 94 | 20464.705000000001746, 0.018645532429218292236 95 | 20464.898000000001048, 0.039883293211460113525 96 | 20465.090000000000146, 0.039485264569520950317 97 | 20465.305000000000291, 0.024656482040882110596 98 | 20465.492000000002008, 0.038326144218444824219 99 | 20465.702000000001135, 0.041758973151445388794 100 | 20465.901000000001659, 0.024659007787704467773 101 | 20466.101000000002387, 0.027390789240598678589 102 | 20466.300999999999476, 0.030863691121339797974 103 | 20466.493999999998778, 0.019619725644588470459 104 | 20466.692999999999302, 0.016425997018814086914 105 | 20466.903000000002066, 0.012105473317205905914 106 | 20467.092000000000553, 0.013630476780235767365 107 | 20467.290999999997439, 0.031194636598229408264 108 | 20467.503000000000611, 0.023293141275644302368 109 | 20467.702000000001135, 0.03298325464129447937 110 | 20467.895000000000437, 0.042315267026424407959 111 | 20468.096000000001368, 0.058101240545511245728 112 | 20468.292000000001281, 0.059700883924961090088 113 | 20468.497999999999593, 0.02658262103796005249 114 | 20468.701000000000931, 0.038386054337024688721 115 | 20468.888999999999214, 0.043524142354726791382 116 | 20469.097999999998137, 0.046157598495483398438 117 | 20469.304000000000087, 0.048733174800872802734 118 | 20469.493999999998778, 0.053723488003015518188 119 | 20469.704000000001543, 0.050900638103485107422 120 | 20469.893000000000029, 0.048464007675647735596 121 | 20470.106999999999971, 0.04953540116548538208 122 | 20470.305999999996857, 0.036411933600902557373 123 | 20470.498999999999796, 0.024924468249082565308 124 | 20470.692999999999302, 0.046143721789121627808 125 | 20470.891999999999825, 0.044918619096279144287 126 | 20471.092000000000553, 0.047789499163627624512 127 | 20471.305000000000291, 0.05837726593017578125 128 | 20471.495999999999185, 0.07043186575174331665 129 | 20471.703000000001339, 0.05934401974081993103 130 | 20471.89600000000064, 0.028822887688875198364 131 | 20472.101999999998952, 0.033553481101989746094 132 | 20472.292000000001281, 0.015488062985241413116 133 | 20472.502000000000407, 0.013063135556876659393 134 | 20472.705000000001746, 0.021432518959045410156 135 | 20472.902000000001863, 0.01533928699791431427 136 | 20473.099000000001979, 0.035632714629173278809 137 | 20473.295999999998457, 0.034836065024137496948 138 | 20473.496999999999389, 0.04206390678882598877 139 | 20473.702000000001135, 0.031492516398429870605 140 | 20473.906999999999243, 0.025804340839385986328 141 | 20474.101999999998952, 0.031913299113512039185 142 | 20474.309000000001106, 0.033693447709083557129 143 | 20474.509000000001834, 0.030075279995799064636 144 | 20474.702000000001135, 0.017192756757140159607 145 | 20474.902999999998428, 0.037607066333293914795 146 | 20475.096999999997934, 0.03674014657735824585 147 | 20475.311999999998079, 0.030526585876941680908 148 | 20475.502000000000407, 0.031988874077796936035 149 | 20475.701000000000931, 0.034122765064239501953 150 | 20475.907999999999447, 0.037800364196300506592 151 | 20476.096000000001368, 0.032486509531736373901 152 | 20476.29399999999805, 0.016865264624357223511 153 | 20476.502000000000407, 0.0340538807213306427 154 | 20476.707999999998719, 0.038717485964298248291 155 | 20476.898000000001048, 0.047082304954528808594 156 | 20477.09400000000096, 0.06642732769250869751 157 | 20477.311000000001513, 0.065994225442409515381 158 | 20477.511000000002241, 0.064137190580368041992 159 | 20477.693999999999505, 0.062868848443031311035 160 | 20477.907000000002881, 0.087596997618675231934 161 | 20478.113000000001193, 0.086196050047874450684 162 | 20478.311999999998079, 0.075041994452476501465 163 | 20478.506999999997788, 0.07230262458324432373 164 | 20478.693999999999505, 0.061485480517148971558 165 | 20478.913000000000466, 0.060565911233425140381 166 | 20479.093999999997322, 0.054660454392433166504 167 | 20479.302000000003318, 0.060497283935546875 168 | 20479.496999999999389, 0.054629370570182800293 169 | 20479.710999999999331, 0.059738226234912872314 170 | 20479.902999999998428, 0.04561986774206161499 171 | 20480.108000000000175, 0.036142230033874511719 172 | 20480.302999999999884, 0.034002073109149932861 173 | 20480.502000000000407, 0.031228290870785713196 174 | 20480.701000000000931, 0.032346669584512710571 175 | 20480.912000000000262, 0.034375276416540145874 176 | 20481.101999999998952, 0.035380247980356216431 177 | 20481.300999999999476, 0.035442378371953964233 178 | 20481.495999999999185, 0.034729368984699249268 179 | 20481.709999999999127, 0.049724336713552474976 180 | 20481.894000000000233, 0.048666074872016906738 181 | 20482.112999999997555, 0.041282113641500473022 182 | 20482.307999999997264, 0.044919367879629135132 183 | 20482.498999999999796, 0.031451854854822158813 184 | 20482.712999999999738, 0.02163493819534778595 185 | 20482.895000000000437, 0.036591552197933197021 186 | 20483.102999999999156, 0.06041172519326210022 187 | 20483.302999999999884, 0.069785445928573608398 188 | 20483.498999999999796, 0.062591701745986938477 189 | 20483.707000000002154, 0.094993129372596740723 190 | 20483.912000000000262, 0.10172472149133682251 191 | 20484.095000000001164, 0.11020205914974212646 192 | 20484.307000000000698, 0.12138915061950683594 193 | 20484.496999999999389, 0.12657608091831207275 194 | 20484.701000000000931, 0.092021383345127105713 195 | 20484.902000000001863, 0.090145185589790344238 196 | 20485.109000000000378, 0.11340399831533432007 197 | 20485.305000000000291, 0.092155463993549346924 198 | 20485.494999999998981, 0.099881954491138458252 199 | 20485.704000000001543, 0.11828607320785522461 200 | 20485.902000000001863, 0.11036288738250732422 201 | 20486.098999999998341, 0.11042261868715286255 202 | 20486.294000000001688, 0.11169844865798950195 203 | 20486.516999999999825, 0.10894085466861724854 204 | 20486.705999999998312, 0.08690503239631652832 205 | 20486.912000000000262, 0.09990581125020980835 206 | 20487.108000000000175, 0.097051791846752166748 207 | 20487.320999999999913, 0.089052267372608184814 208 | 20487.523000000001048, 0.095001220703125 209 | 20487.712999999999738, 0.087050385773181915283 210 | 20487.912000000000262, 0.083171315491199493408 211 | 20488.106999999999971, 0.084268756210803985596 212 | 20488.32300000000032, 0.084476150572299957275 213 | 20488.519000000000233, 0.086317457258701324463 214 | 20488.704000000001543, 0.092465169727802276611 215 | 20488.913000000000466, 0.08068968355655670166 216 | 20489.104999999999563, 0.078477196395397186279 217 | 20489.316999999999098, 0.083642378449440002441 218 | 20489.506999999997788, 0.071209780871868133545 219 | 20489.711999999999534, 0.069528378546237945557 220 | 20489.906999999999243, 0.062876164913177490234 221 | 20490.106999999999971, 0.06150703132152557373 222 | 20490.315000000002328, 0.056352950632572174072 223 | 20490.51299999999901, 0.045935876667499542236 224 | 20490.709999999999127, 0.044618140906095504761 225 | 20490.907999999999447, 0.047727596014738082886 226 | 20491.104999999999563, 0.053619872778654098511 227 | 20491.307000000000698, 0.069058693945407867432 228 | 20491.518000000000029, 0.082312509417533874512 229 | 20491.71900000000096, 0.073935240507125854492 230 | 20491.916000000001077, 0.07801698148250579834 231 | 20492.108000000000175, 0.06862856447696685791 232 | 20492.318999999999505, 0.07327903062105178833 233 | 20492.507999999997992, 0.090060472488403320313 234 | 20492.722999999998137, 0.090804472565650939941 235 | 20492.919999999998254, 0.11075903475284576416 236 | 20493.11200000000099, 0.08831249922513961792 237 | 20493.309000000001106, 0.090394929051399230957 238 | 20493.519000000000233, 0.10673406720161437988 239 | 20493.709999999999127, 0.08403717726469039917 240 | 20493.922999999998865, 0.080171898007392883301 241 | 20494.10399999999936, 0.093863777816295623779 242 | 20494.317999999999302, 0.089014165103435516357 243 | 20494.513999999999214, 0.10087516903877258301 244 | 20494.72099999999773, 0.11290594190359115601 245 | 20494.922000000002299, 0.1144898533821105957 246 | 20495.109000000000378, 0.11025234311819076538 247 | 20495.31499999999869, 0.078025110065937042236 248 | 20495.51299999999901, 0.083274014294147491455 249 | 20495.706999999998516, 0.087494783103466033936 250 | 20495.915999999997439, 0.097689174115657806396 251 | 20496.104999999999563, 0.09166847914457321167 252 | 20496.312000000001717, 0.084314987063407897949 253 | 20496.505000000001019, 0.086529627442359924316 254 | 20496.715000000000146, 0.082579933106899261475 255 | 20496.908999999999651, 0.075838029384613037109 256 | 20497.116000000001804, 0.062830820679664611816 257 | 20497.304000000000087, 0.041641067713499069214 258 | 20497.52100000000064, 0.055184241384267807007 259 | 20497.703999999997905, 0.059851847589015960693 260 | 20497.904999999998836, 0.051440116018056869507 261 | 20498.113000000001193, 0.052024312317371368408 262 | 20498.306999999997061, 0.054972432553768157959 263 | 20498.516999999999825, 0.050485439598560333252 264 | 20498.709999999999127, 0.050705727189779281616 265 | 20498.911000000000058, 0.053954292088747024536 266 | 20499.121999999999389, 0.045669618993997573853 267 | 20499.320999999999913, 0.037667512893676757813 268 | 20499.52100000000064, 0.041698932647705078125 269 | 20499.706999999998516, 0.045488253235816955566 270 | 20499.921000000002095, 0.024790911003947257996 271 | 20500.104999999999563, 0.029794866219162940979 272 | 20500.320999999999913, 0.023597978055477142334 273 | 20500.505000000001019, 0.028940808027982711792 274 | 20500.711999999999534, 0.040916804224252700806 275 | 20500.915000000000873, 0.047019414603710174561 276 | 20501.133999999998196, 0.023758763447403907776 277 | 20501.305000000000291, 0.027715440839529037476 278 | 20501.52100000000064, 0.027040174230933189392 279 | 20501.703999999997905, 0.030934875831007957458 280 | 20501.914999999997235, 0.037670113146305084229 281 | 20502.104999999999563, 0.039806406944990158081 282 | 20502.316999999999098, 0.047786429524421691895 283 | 20502.513999999999214, 0.042617287486791610718 284 | 20502.707999999998719, 0.021713035181164741516 285 | 20502.911000000000058, 0.039002764970064163208 286 | 20503.113000000001193, 0.02713927440345287323 287 | 20503.31000000000131, 0.017561616376042366028 288 | 20503.506999999997788, 0.020762512460350990295 289 | -------------------------------------------------------------------------------- /dependencies.sh: -------------------------------------------------------------------------------- 1 | pip install numpy 2 | pip install numpy-quaternion 3 | pip install scikit-fuzzy 4 | cd .. 5 | sudo apt-get install ros-melodic-rqt-multiplot 6 | rospack find gazebosensorplugins && echo sensor plugin already downloaded || git clone https://github.com/valentinbarral/gazebosensorplugins.git 7 | rospack find gtec_msgs && echo gtec messages already downloaded || git clone https://github.com/valentinbarral/rosmsgs.git 8 | catkin build -------------------------------------------------------------------------------- /launch/control.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /launch/description.launch: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /launch/spawn_husky_uwb.launch: -------------------------------------------------------------------------------- 1 | 2 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | target_frame: base_link # Leave empty to output scan in the pointcloud frame 80 | tolerance: 1.0 81 | min_height: 0.05 82 | max_height: 1.0 83 | 84 | angle_min: -0.52 # -30.0*M_PI/180.0 85 | angle_max: 0.52 # 30.0*M_PI/180.0 86 | angle_increment: 0.005 # M_PI/360.0 87 | scan_time: 0.3333 88 | range_min: 0.45 89 | range_max: 4.0 90 | use_inf: true 91 | 92 | # Concurrency level, affects number of pointclouds queued for processing and number of threads used 93 | # 0 : Detect number of cores 94 | # 1 : Single threaded 95 | # 2->inf : Parallelism level 96 | concurrency_level: 1 97 | 98 | 99 | 100 | 101 | 102 | 103 | 112 | 113 | 114 | 115 | 116 | -------------------------------------------------------------------------------- /launch/uwb.launch: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /launch/uwb_empty.launch: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 33 | 34 | -------------------------------------------------------------------------------- /launch/world_uwb.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 49 | 50 | 51 | 52 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /models/husky_uwb.urdf.xacro: -------------------------------------------------------------------------------- 1 | 2 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | $(arg robot_namespace) 169 | true 170 | 171 | 172 | 173 | 174 | 175 | $(arg robot_namespace) 176 | 100.0 177 | base_link 178 | imu/data 179 | 0.1 0.07 0.12 180 | 0.06 0.06 0.06 181 | 0.0 0.0 0.0 182 | 0.0 0.0 0.1 183 | 0.00 184 | 0.00 185 | 186 | 187 | 188 | 189 | 190 | 191 | 5.0 192 | 0.25 193 | 0.0 194 | base_link 195 | uwb_anchor 196 | true 197 | 0 198 | 199 | 200 | 201 | 202 | 203 | $(arg robot_namespace) 204 | 40 205 | base_link 206 | base_link 207 | navsat/fix 208 | navsat/vel 209 | 49.9 210 | 8.9 211 | 0 212 | 0 213 | 0.0001 0.0001 0.0001 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | -------------------------------------------------------------------------------- /package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | ins_uwb_positioning 4 | 0.0.0 5 | The ins_uwb_positioning package 6 | 7 | 8 | 9 | 10 | lorenzo 11 | 12 | 13 | 14 | 15 | 16 | TODO 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | catkin 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # INS/UWB Integrated Positioning 2 | This ROS package is the implementation of the navigation algorithm illustrated in 3 | the article [**An Approach to Robust INS/UWB IntegratedPositioning for 4 | Autonomous Indoor Mobile Robots**](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6412300/pdf/sensors-19-00950.pdf), *Liu J, Pu J, Sun L, He Z.*, *Sensors (Basel). 5 | 2019;19(4):950. Published 2019 Feb 23. doi:10.3390/s19040950* using Husky platform 6 | as benchmark 7 | 8 | ## Dependencies 9 | In order to use this package you should have [ROS](http://wiki.ros.org/melodic/Installation/Ubuntu) installed in your system. 10 | Additionally this package depends on some standard python libraries and two other packages used for the UWB Gazebo plugin which are [gazebosensorplugins](https://github.com/valentinbarral/gazebosensorplugins) and [gtech_msgs](https://github.com/valentinbarral/rosmsgs) both by valentinbarral. 11 | Script dependencies.sh should set everything you need 12 | ``` 13 | chmod +x ./dependencies.sh && ./dependencies.sh 14 | ``` 15 | ## Run the simulation 16 | You should first set all the environmental variables for Gazebo to work correctly by running *setup.bash* in your workspace root folder 17 | ``` 18 | chmod +x ./setup.bash && ./setup.bash 19 | ``` 20 | And then launch the script *start_all.sh* which will start: 21 | * Gazebo with Husky model in an empty world with UWB antennas 22 | * The navigation node *node_sage-husa.py* 23 | * rqt_multiplot with *rqt_multiplot.xml* config in order to monitor the filter behaviour 24 | * Publisher for Husky velocity command in order to keep the robot in a circular uniform motion 25 | ``` 26 | chmod +x ./start_all.sh && ./start_all.sh 27 | ``` 28 | In order to start visualizing data in rqt plot you should hit the play button on the top right of each graph 29 | ## Folders 30 | 31 | ### src 32 | Contains Python scripts which performs navigation. In particular *node_sage-husa.py* sets the node up and *shfaf.py* contains the filter class. 33 | 34 | ### data 35 | Contains data exported as csv of simulation run with different filter configurations 36 | 37 | ## launch 38 | Contains roslaunch script to spawn husky with IMU and UWB tag (*spawn_husky_uwb.launch, description.launch*), 39 | Husky controls (*control.launch*), and to launch the empty world with UWB antennas in place (*uwb_empty.launch*) 40 | 41 | ## models 42 | Contains Husky urdf xacro model 43 | 44 | ## worlds 45 | Contains different world configuration -------------------------------------------------------------------------------- /rqt_multiplot.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | #ffffff 5 | #000000 6 | false 7 | false 8 | 9 | 10 | 11 | 12 | 13 | 14 | x(m) 15 | 1 16 | true 17 | 18 | 19 | y(m) 20 | 1 21 | true 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | pose/pose/position/x 30 | 0 31 | 32 | 1000 33 | 0 34 | 0 35 | -1000 36 | 0 37 | 38 | /filter_position 39 | nav_msgs/Odometry 40 | 41 | 42 | pose/pose/position/y 43 | 0 44 | 45 | 1000 46 | 0 47 | 0 48 | -1000 49 | 0 50 | 51 | /filter_position 52 | nav_msgs/Odometry 53 | 54 | 55 | 56 | #000000 57 | 0 58 | 59 | 60 | 1000 61 | 10 62 | 2 63 | 64 | 74 | 100 75 | Estimated 76 | 77 | 78 | 79 | 80 | pose/5/position/x 81 | 0 82 | 83 | 1000 84 | 0 85 | 0 86 | -1000 87 | 0 88 | 89 | /gazebo/model_states 90 | gazebo_msgs/ModelStates 91 | 92 | 93 | pose/5/position/y 94 | 0 95 | 96 | 1000 97 | 0 98 | 0 99 | -1000 100 | 0 101 | 102 | /gazebo/model_states 103 | gazebo_msgs/ModelStates 104 | 105 | 106 | 107 | #000000 108 | 0 109 | 110 | 111 | 1000 112 | 10 113 | 2 114 | 115 | 125 | 100 126 | True 127 | 128 | 129 | 130 | 131 | pose/pose/position/x 132 | 0 133 | 134 | 1000 135 | 0 136 | 0 137 | -1000 138 | 0 139 | 140 | /uwb_position 141 | nav_msgs/Odometry 142 | 143 | 144 | pose/pose/position/y 145 | 0 146 | 147 | 1000 148 | 0 149 | 0 150 | -1000 151 | 0 152 | 153 | /uwb_position 154 | nav_msgs/Odometry 155 | 156 | 157 | 158 | #000000 159 | 0 160 | 161 | 162 | 300 163 | 10 164 | 2 165 | 166 | 176 | 100 177 | UWB 178 | 179 | 180 | 181 | true 182 | 183 | 30 184 | Plan view 185 | 186 | 187 | 188 | 189 | 190 | Time(s) 191 | 1 192 | true 193 | 194 | 195 | bias(m/s^2) 196 | 1 197 | true 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 1 207 | 208 | 1000 209 | 0 210 | 0 211 | -1000 212 | 0 213 | 214 | /imu/data/bias 215 | sensor_msgs/Imu 216 | 217 | 218 | linear_acceleration/x 219 | 0 220 | 221 | 1000 222 | 0 223 | 0 224 | -1000 225 | 0 226 | 227 | /imu/data/bias 228 | sensor_msgs/Imu 229 | 230 | 231 | 232 | #000000 233 | 0 234 | 235 | 236 | 1000 237 | 10 238 | 0 239 | 240 | 250 | 100 251 | bias x 252 | 253 | 254 | 255 | 256 | 257 | 1 258 | 259 | 1000 260 | 0 261 | 0 262 | -1000 263 | 0 264 | 265 | /filter_bias 266 | geometry_msgs/Vector3 267 | 268 | 269 | x 270 | 0 271 | 272 | 1000 273 | 0 274 | 0 275 | -1000 276 | 0 277 | 278 | /filter_bias 279 | geometry_msgs/Vector3 280 | 281 | 282 | 283 | #000000 284 | 0 285 | 286 | 287 | 1000 288 | 10 289 | 0 290 | 291 | 301 | 100 302 | Estimated bias x 303 | 304 | 305 | 306 | 307 | 308 | 1 309 | 310 | 1000 311 | 0 312 | 0 313 | -1000 314 | 0 315 | 316 | /filter_bias 317 | geometry_msgs/Vector3 318 | 319 | 320 | y 321 | 0 322 | 323 | 1000 324 | 0 325 | 0 326 | -1000 327 | 0 328 | 329 | /filter_bias 330 | geometry_msgs/Vector3 331 | 332 | 333 | 334 | #000000 335 | 0 336 | 337 | 338 | 1000 339 | 10 340 | 0 341 | 342 | 352 | 100 353 | Estimated bias y 354 | 355 | 356 | 357 | 358 | 359 | 1 360 | 361 | 1000 362 | 0 363 | 0 364 | -1000 365 | 0 366 | 367 | /imu/data/bias 368 | sensor_msgs/Imu 369 | 370 | 371 | linear_acceleration/y 372 | 0 373 | 374 | 1000 375 | 0 376 | 0 377 | -1000 378 | 0 379 | 380 | /imu/data/bias 381 | sensor_msgs/Imu 382 | 383 | 384 | 385 | #000000 386 | 0 387 | 388 | 389 | 1000 390 | 10 391 | 0 392 | 393 | 403 | 100 404 | bias y 405 | 406 | 407 | 408 | 409 | 410 | 1 411 | 412 | 1000 413 | 0 414 | 0 415 | -1000 416 | 0 417 | 418 | /imu/data/bias 419 | sensor_msgs/Imu 420 | 421 | 422 | linear_acceleration/z 423 | 0 424 | 425 | 1000 426 | 0 427 | 0 428 | -1000 429 | 0 430 | 431 | /imu/data/bias 432 | sensor_msgs/Imu 433 | 434 | 435 | 436 | #000000 437 | 0 438 | 439 | 440 | 1000 441 | 10 442 | 0 443 | 444 | 454 | 100 455 | Estimated bias z 456 | 457 | 458 | 459 | 460 | 461 | 1 462 | 463 | 1000 464 | 0 465 | 0 466 | -1000 467 | 0 468 | 469 | /filter_bias 470 | geometry_msgs/Vector3 471 | 472 | 473 | z 474 | 0 475 | 476 | 1000 477 | 0 478 | 0 479 | -1000 480 | 0 481 | 482 | /filter_bias 483 | geometry_msgs/Vector3 484 | 485 | 486 | 487 | #000000 488 | 0 489 | 490 | 491 | 1000 492 | 10 493 | 0 494 | 495 | 505 | 100 506 | bias z 507 | 508 | 509 | 510 | true 511 | 512 | 30 513 | Bias estimation 514 | 515 | 516 | 517 | 518 | 519 | Untitled Axis 520 | 0 521 | true 522 | 523 | 524 | Untitled Axis 525 | 0 526 | true 527 | 528 | 529 | 530 | 531 | 532 | 533 | 534 | 535 | 1 536 | 537 | 1000 538 | 0 539 | 0 540 | -1000 541 | 0 542 | 543 | /gazebo/model_states 544 | gazebo_msgs/ModelStates 545 | 546 | 547 | twist/5/linear/x 548 | 0 549 | 550 | 1000 551 | 0 552 | 0 553 | -1000 554 | 0 555 | 556 | /gazebo/model_states 557 | gazebo_msgs/ModelStates 558 | 559 | 560 | 561 | #000000 562 | 0 563 | 564 | 565 | 1000 566 | 10 567 | 0 568 | 569 | 579 | 100 580 | Vx 581 | 582 | 583 | 584 | 585 | 586 | 1 587 | 588 | 1000 589 | 0 590 | 0 591 | -1000 592 | 0 593 | 594 | /filter_position 595 | nav_msgs/Odometry 596 | 597 | 598 | twist/twist/linear/x 599 | 0 600 | 601 | 1000 602 | 0 603 | 0 604 | -1000 605 | 0 606 | 607 | /filter_position 608 | nav_msgs/Odometry 609 | 610 | 611 | 612 | #000000 613 | 0 614 | 615 | 616 | 1000 617 | 10 618 | 0 619 | 620 | 630 | 100 631 | Estimated Vx 632 | 633 | 634 | 635 | 636 | 637 | 1 638 | 639 | 1000 640 | 0 641 | 0 642 | -1000 643 | 0 644 | 645 | /gazebo/model_states 646 | gazebo_msgs/ModelStates 647 | 648 | 649 | twist/5/linear/y 650 | 0 651 | 652 | 1000 653 | 0 654 | 0 655 | -1000 656 | 0 657 | 658 | /gazebo/model_states 659 | gazebo_msgs/ModelStates 660 | 661 | 662 | 663 | #000000 664 | 0 665 | 666 | 667 | 1000 668 | 10 669 | 0 670 | 671 | 681 | 100 682 | Vy 683 | 684 | 685 | 686 | 687 | 688 | 1 689 | 690 | 1000 691 | 0 692 | 0 693 | -1000 694 | 0 695 | 696 | /filter_position 697 | nav_msgs/Odometry 698 | 699 | 700 | twist/twist/linear/y 701 | 0 702 | 703 | 1000 704 | 0 705 | 0 706 | -1000 707 | 0 708 | 709 | /filter_position 710 | nav_msgs/Odometry 711 | 712 | 713 | 714 | #000000 715 | 0 716 | 717 | 718 | 1000 719 | 10 720 | 0 721 | 722 | 732 | 100 733 | Estimated Vy 734 | 735 | 736 | 737 | 738 | 739 | 1 740 | 741 | 1000 742 | 0 743 | 0 744 | -1000 745 | 0 746 | 747 | /uwb_position 748 | nav_msgs/Odometry 749 | 750 | 751 | twist/twist/linear/x 752 | 0 753 | 754 | 1000 755 | 0 756 | 0 757 | -1000 758 | 0 759 | 760 | /uwb_position 761 | nav_msgs/Odometry 762 | 763 | 764 | 765 | #000000 766 | 0 767 | 768 | 769 | 1000 770 | 10 771 | 0 772 | 773 | 783 | 100 784 | Vx UWB 785 | 786 | 787 | 788 | 789 | 790 | 1 791 | 792 | 1000 793 | 0 794 | 0 795 | -1000 796 | 0 797 | 798 | /uwb_position 799 | nav_msgs/Odometry 800 | 801 | 802 | twist/twist/linear/y 803 | 0 804 | 805 | 1000 806 | 0 807 | 0 808 | -1000 809 | 0 810 | 811 | /uwb_position 812 | nav_msgs/Odometry 813 | 814 | 815 | 816 | #000000 817 | 0 818 | 819 | 820 | 1000 821 | 10 822 | 0 823 | 824 | 834 | 100 835 | Vy UWB 836 | 837 | 838 | 839 | true 840 | 841 | 30 842 | Velocity 843 | 844 | 845 | 846 | 847 | 848 | 849 | 850 | Time(s) 851 | 1 852 | true 853 | 854 | 855 | error(m) 856 | 1 857 | true 858 | 859 | 860 | 861 | 862 | 863 | 864 | 865 | pose/5/position/x 866 | 1 867 | 868 | 1000 869 | 0 870 | 0 871 | -1000 872 | 0 873 | 874 | /gazebo/link_states 875 | gazebo_msgs/LinkStates 876 | 877 | 878 | data 879 | 0 880 | 881 | 1000 882 | 0 883 | 0 884 | -1000 885 | 0 886 | 887 | /filter_error 888 | std_msgs/Float32 889 | 890 | 891 | 892 | #000000 893 | 0 894 | 895 | 896 | 1000 897 | 10 898 | 0 899 | 900 | 910 | 100 911 | Error 912 | 913 | 914 | 915 | true 916 | 917 | 30 918 | Error norm 919 | 920 | 921 | 922 | 923 | 924 | Time(s) 925 | 1 926 | true 927 | 928 | 929 | heading(rad) 930 | 1 931 | true 932 | 933 | 934 | 935 | 936 | 937 | 938 | 939 | data 940 | 1 941 | 942 | 1000 943 | 0 944 | 0 945 | -1000 946 | 0 947 | 948 | /filter_heading 949 | std_msgs/Float32 950 | 951 | 952 | data 953 | 0 954 | 955 | 1000 956 | 0 957 | 0 958 | -1000 959 | 0 960 | 961 | /filter_heading 962 | std_msgs/Float32 963 | 964 | 965 | 966 | #000000 967 | 0 968 | 969 | 970 | 1000 971 | 10 972 | 0 973 | 974 | 984 | 100 985 | Estimated 986 | 987 | 988 | 989 | 990 | 991 | 1 992 | 993 | 1000 994 | 0 995 | 0 996 | -1000 997 | 0 998 | 999 | /true_heading 1000 | std_msgs/Float32 1001 | 1002 | 1003 | data 1004 | 0 1005 | 1006 | 1000 1007 | 0 1008 | 0 1009 | -1000 1010 | 0 1011 | 1012 | /true_heading 1013 | std_msgs/Float32 1014 | 1015 | 1016 | 1017 | #000000 1018 | 0 1019 | 1020 | 1021 | 1000 1022 | 10 1023 | 0 1024 | 1025 | 1035 | 100 1036 | True 1037 | 1038 | 1039 | 1040 | true 1041 | 1042 | 30 1043 | Heading 1044 | 1045 | 1046 | 1047 | 1048 | 1049 | Untitled Axis 1050 | 0 1051 | true 1052 | 1053 | 1054 | Untitled Axis 1055 | 0 1056 | true 1057 | 1058 | 1059 | 1060 | 1061 | true 1062 | 1063 | 30 1064 | Untitled Plot 1065 | 1066 | 1067 | 1068 | false 1069 |
1070 |
1071 | -------------------------------------------------------------------------------- /src/fuzzy_demo.py: -------------------------------------------------------------------------------- 1 | 2 | import skfuzzy as fuzz 3 | from skfuzzy import control as ctrl 4 | import numpy as np 5 | 6 | r = 0.6 7 | 8 | # Fuzzy inference 9 | 10 | input = ctrl.Antecedent(np.arange(0, 0.9, 0.1), 'r') 11 | output = ctrl.Consequent(np.arange(0.8, 2.1, 0.1), 's') 12 | 13 | # Define membership functions 14 | input['less'] = fuzz.trimf(input.universe, [0, 0, 0.3]) 15 | input['equal'] = fuzz.trimf(input.universe, [0.1, 0.4, 0.7]) 16 | input['more'] = fuzz.trimf(input.universe, [0.5, 0.8, 0.8]) 17 | 18 | output['less'] = fuzz.trimf(output.universe, [0.8, 0.8, 1.2]) 19 | output['equal'] = fuzz.trimf(output.universe, [1, 1.4, 1.8]) 20 | output['more'] = fuzz.trimf(output.universe, [1.6, 2.0, 2.0]) 21 | 22 | # Fuzzy rules 23 | rule1 = ctrl.Rule(input['equal'], output['equal']) 24 | rule2 = ctrl.Rule(input['more'], output['more']) 25 | rule3 = ctrl.Rule(input['less'], output['less']) 26 | 27 | fuzzy_control = ctrl.ControlSystem([rule1, rule2, rule3]) 28 | fuzzy = ctrl.ControlSystemSimulation(fuzzy_control) 29 | 30 | fuzzy.input['r'] = r 31 | fuzzy.compute() 32 | 33 | input.view() 34 | output.view() 35 | 36 | output.view(sim = fuzzy) 37 | input.view(sim = fuzzy) 38 | 39 | -------------------------------------------------------------------------------- /src/node_sage-husa.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # coding=utf-8 3 | # /gtec/toa/ranging /imu/data 4 | 5 | 6 | import rospy 7 | import quaternion 8 | import numpy as np 9 | from sensor_msgs.msg import Imu 10 | from nav_msgs.msg import Odometry 11 | from gazebo_msgs.msg import LinkStates 12 | from geometry_msgs.msg import Vector3 13 | from gtec_msgs.msg import Ranging 14 | from std_msgs.msg import Int8 15 | from std_msgs.msg import Float32 16 | from shfaf import shfaf 17 | 18 | pub_filter = rospy.Publisher('filter_position', Odometry, queue_size=1) 19 | pub_uwb = rospy.Publisher('uwb_position', Odometry, queue_size=1) 20 | pub_heading = rospy.Publisher('filter_heading', Float32 , queue_size=1) 21 | pub_heading_true = rospy.Publisher('true_heading', Float32 , queue_size=1) 22 | pub_error = rospy.Publisher('filter_error', Float32 , queue_size=1) 23 | pub_bias = rospy.Publisher('filter_bias', Vector3 , queue_size=1) 24 | init = 1 25 | count = 0 26 | 27 | def imu_callback(data): 28 | 29 | if init == 0: 30 | 31 | w = np.array([data.angular_velocity.x, data.angular_velocity.y, data.angular_velocity.z]) 32 | a = np.array([data.linear_acceleration.x, data.linear_acceleration.y, data.linear_acceleration.z]) 33 | t = data.header.stamp.secs + data.header.stamp.nsecs*1e-9 34 | filter.prediction(a,w,t) 35 | x = filter.x_ 36 | q = filter.q_ 37 | # rospy.loginfo(filter.posOld) 38 | odom = Odometry() 39 | odom.pose.pose.position.x = x[0] 40 | odom.pose.pose.position.y = x[1] 41 | odom.pose.pose.position.z = x[2] 42 | odom.pose.pose.orientation.x = q[0] 43 | odom.pose.pose.orientation.y = q[1] 44 | odom.pose.pose.orientation.z = q[2] 45 | odom.pose.pose.orientation.w = q[3] 46 | odom.twist.twist.linear.x = x[3] 47 | odom.twist.twist.linear.y = x[4] 48 | odom.twist.twist.linear.z = x[5] 49 | odom.twist.twist.angular.x = 0 50 | odom.twist.twist.angular.y = 0 51 | odom.twist.twist.angular.z = 0 52 | pub_filter.publish(odom) 53 | 54 | bias = Vector3() 55 | bias.x = filter.x_[6,0] 56 | bias.y = filter.x_[7,0] 57 | bias.z = filter.x_[8,0] 58 | pub_bias.publish(bias) 59 | 60 | heading = quaternion.as_euler_angles(quaternion.from_float_array(q)) 61 | pub_heading.publish(heading[2]) 62 | 63 | x_uwb = filter.posOld 64 | vel_uwb = filter.velOld 65 | odom_uwb = Odometry() 66 | odom_uwb.pose.pose.position.x = x_uwb[0] 67 | odom_uwb.pose.pose.position.y = x_uwb[1] 68 | odom_uwb.pose.pose.position.z = x_uwb[2] 69 | odom_uwb.twist.twist.linear.x = vel_uwb[0] 70 | odom_uwb.twist.twist.linear.y = vel_uwb[1] 71 | odom_uwb.twist.twist.linear.z = vel_uwb[2] 72 | odom_uwb.twist.twist.angular.x = 0 73 | odom_uwb.twist.twist.angular.y = 0 74 | odom_uwb.twist.twist.angular.z = 0 75 | pub_uwb.publish(odom_uwb) 76 | 77 | 78 | 79 | def uwb_callback(data): 80 | if init == 2: 81 | i = data.anchorId 82 | r = data.range*0.001 83 | filter.range[i] = r 84 | filter.uwbCeck[i] = 1 85 | if sum(filter.uwbCeck) == filter.nAnchors: 86 | filter.correction() 87 | filter.uwbCeck = np.zeros(4) 88 | 89 | def activation_callback(data): 90 | global filter 91 | filter.mode = data.data 92 | # if data.data == 3: 93 | # filter.x_[6:9, :] = 0 94 | 95 | 96 | def model_callback(data): 97 | global init 98 | global filter 99 | global count 100 | count = count + 1 101 | pos_true = np.zeros(3) 102 | if init == 1: 103 | q = np.zeros(4) 104 | x = np.zeros(12) 105 | x[0] = data.pose[5].position.x 106 | x[1] = data.pose[5].position.y 107 | x[3] = data.twist[5].linear.x 108 | x[4] = data.twist[5].linear.y 109 | x[6:9] = 0.0 110 | q[0] = data.pose[5].orientation.w 111 | q[1] = 0 112 | q[2] = 0 113 | q[3] = data.pose[5].orientation.z 114 | filter = shfaf(R=None, Q=None, P=None, x=x, q=q, window_width=100, a=0.9784) 115 | filter.nAnchors = 4 116 | filter.anchorPos = np.array([[-1, -1], 117 | [9, -1], 118 | [-1, 9], 119 | [9, 9], 120 | ]) 121 | rospy.loginfo('Filter initialized at x: ') 122 | rospy.loginfo(filter.x) 123 | rospy.loginfo('q: ') 124 | rospy.loginfo(filter.q) 125 | init = 0 126 | true_q = np.array([data.pose[5].orientation.w, 0, 0, data.pose[5].orientation.z]) 127 | heading_true = quaternion.as_euler_angles(quaternion.from_float_array(true_q)) 128 | pub_heading_true.publish(heading_true[2]) 129 | if count % 200 == 0 and init==0: 130 | out = np.greater(np.random.rand(), 0.95).astype(int) 131 | pos_outlier = out * (np.random.rand(3)-0.5)*4 132 | pos_true[0] = data.pose[5].position.x 133 | pos_true[1] = data.pose[5].position.y 134 | pos_true[2] = data.pose[5].position.z 135 | uwb_noise = np.random.normal(0,0.1,3) 136 | filter.posOld = pos_true + uwb_noise + pos_outlier 137 | filter.velOld[0] = data.twist[5].linear.x + np.random.normal(0.0, 0.1) + uwb_noise[0]*5 + pos_outlier[0]*5 138 | filter.velOld[1] = data.twist[5].linear.y + np.random.normal(0.0, 0.1) + uwb_noise[1]*5 + pos_outlier[1]*5 139 | filter.velOld[2] = data.twist[5].linear.z + np.random.normal(0.0, 0.1) + uwb_noise[2]*5 + pos_outlier[2]*5 140 | error = np.linalg.norm(pos_true - filter.x_[:3,0]) 141 | pub_error.publish(error) 142 | if filter.mode != 3: 143 | filter.correction() 144 | count = 0 145 | 146 | 147 | 148 | 149 | 150 | 151 | def node(): 152 | 153 | rospy.init_node('estimator', anonymous=True) 154 | 155 | rospy.Subscriber("/imu/data", Imu, imu_callback) 156 | rospy.Subscriber("/gtec/toa/ranging", Ranging, uwb_callback) 157 | rospy.Subscriber("/filter_mode", Int8, activation_callback) 158 | rospy.Subscriber("/gazebo/model_states", LinkStates, model_callback) 159 | 160 | # spin() simply keeps python from exiting until this node is stopped 161 | rospy.spin() 162 | 163 | if __name__ == '__main__': 164 | node() 165 | 166 | -------------------------------------------------------------------------------- /src/shfaf.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import quaternion 3 | import rospy 4 | import skfuzzy as fuzz 5 | from skfuzzy import control as ctrl 6 | import scipy as sp 7 | 8 | 9 | def skew(x): 10 | return np.array([[0, -x[2], x[1]], 11 | [x[2], 0, -x[0]], 12 | [-x[1], x[0], 0]]) 13 | 14 | 15 | def push(x, y): 16 | x[:, :-1] = x[:, 1:] 17 | x[:, -1:] = y # .reshape(-1,1) 18 | return x 19 | 20 | 21 | class shfaf(object): 22 | def __init__(self, R=None, Q=None, P=None, x=None, q=None, window_width=12, a=0.95): 23 | 24 | if R is None: 25 | R = np.diag([1, 1, 1, 1 * 5, 1 * 5, 1 * 5]) * 1e-1 26 | if Q is None: 27 | Q = np.diag([0.06 ** 2, 0.06 ** 2, 0.06 ** 2, 0, 0, 0, 0.1, 0.1, 0.1, 0, 0, 0]) 28 | if P is None: 29 | P = np.diag([0.1, 0.1, 0.1, 0.05, 0.05, 0.05, 0, 0, 0, 0.01, 0.01, 0.01, 0, 0, 0]) 30 | if x is None: 31 | x = np.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 32 | np.float) # position, velocity, acceleration bias, omega bias 33 | if q is None: 34 | q = quaternion.from_rotation_vector(np.array([0, 0, 0.701], np.float)) 35 | q = quaternion.as_float_array(q) 36 | 37 | ''' 38 | Filter mode must be set to: 39 | 0 - for Sage-Husa Fuzzy Adaptive Filter 40 | 1 - for Sage-Husa Adaptive Filter 41 | 2 - for EKF 42 | 3 - for Inertial Navigation 43 | ''' 44 | self.mode = 0 45 | self.on = True 46 | 47 | self.lamb = np.block([[np.zeros((3, 12), np.float)], 48 | [np.identity(12, np.float)]]) 49 | self.H = np.block([[np.identity(6, np.float), np.zeros((6, 9), np.float)]]) 50 | self.threshold = 4.5 51 | a_v = np.ones(window_width, np.float) * a 52 | j = np.arange(0, window_width) 53 | s = np.power(a_v, j) * (1 - a_v) / (1 - np.power(a_v, window_width)) 54 | self.sigma = np.diag(s) 55 | self.time = 0 56 | self.uwbTime = 0 57 | self.nAnchors = 4 58 | self.anchorPos = np.zeros((2, self.nAnchors), np.float) 59 | self.range = np.ones(self.nAnchors, np.float) * 99 60 | self.uwbCeck = np.zeros(self.nAnchors) # check if all anchors' signals arrived 61 | self.uwbInit = 0 # flag for uwb velocity initialization 62 | self.pred = 0 # flag which states if prediction or correction has been performed last 63 | beta = 0 64 | self.G = 1 - np.square(beta) 65 | self.H_uwb = np.square(1 - beta) 66 | 67 | self.R = R 68 | self.Q = Q 69 | self.P = P 70 | self.P_ = P 71 | self.x = x[np.newaxis].T 72 | self.x_ = x[np.newaxis].T 73 | self.posOld = x[:3] 74 | self.velOld = x[3:6] 75 | self.q = q 76 | self.q_ = q 77 | self.dx = np.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], np.float)[ 78 | np.newaxis].T # position, velocity, orientation, acceleration bias, omega bias 79 | self.dx_ = np.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], np.float)[ 80 | np.newaxis].T # position, velocity, orientation, acceleration bias, omega bias 81 | self.innovation = np.random.normal(0.0, 0.1, (6, window_width)) 82 | self.error = (np.random.rand(15, window_width) - 1) * 0.1 83 | # self.innovation_ = np.zeros((6,window_width), np.float) 84 | self.k = 0 # Iteration counter 85 | self.lambda_ = 1.0119 # Sage Huza ICW coefficent 86 | self.b = 0.9976 # Sage Huza ICW coefficent 87 | self.alpha = 0.48 # Sage Huza ICW coefficent 88 | H = self.H 89 | self.K = H.T.dot(np.linalg.inv(H.dot(H.T))) # Kalman gain 90 | 91 | # Fuzzy inference 92 | 93 | input = ctrl.Antecedent(np.arange(0, 0.9, 0.1), 'r') 94 | output = ctrl.Consequent(np.arange(0.8, 2.1, 0.1), 's') 95 | 96 | # Define membership functions 97 | input['less'] = fuzz.trimf(input.universe, [0, 0, 0.3]) 98 | input['equal'] = fuzz.trimf(input.universe, [0.1, 0.4, 0.7]) 99 | input['more'] = fuzz.trimf(input.universe, [0.5, 0.8, 0.8]) 100 | 101 | output['less'] = fuzz.trimf(output.universe, [0.8, 0.8, 1.2]) 102 | output['equal'] = fuzz.trimf(output.universe, [1, 1.4, 1.8]) 103 | output['more'] = fuzz.trimf(output.universe, [1.6, 2.0, 2.0]) 104 | 105 | # Fuzzy rules 106 | rule1 = ctrl.Rule(input['equal'], output['equal']) 107 | rule2 = ctrl.Rule(input['more'], output['more']) 108 | rule3 = ctrl.Rule(input['less'], output['less']) 109 | 110 | fuzzy_control = ctrl.ControlSystem([rule1, rule2, rule3]) 111 | self.fuzzy = ctrl.ControlSystemSimulation(fuzzy_control) 112 | 113 | def _rotationMatrix(self, q): 114 | q = quaternion.from_float_array(q) 115 | C = quaternion.as_rotation_matrix(q) 116 | return C 117 | 118 | def prediction(self, am, wm, t): 119 | 120 | am = am[np.newaxis].T 121 | wm = wm[np.newaxis].T 122 | wm[:2, :] = 0 123 | if self.uwbInit: 124 | dt = t - self.time 125 | else: 126 | dt = 0.01 127 | 128 | if self.pred: 129 | x = self.x_ 130 | P = self.P_ 131 | q = self.q_ 132 | else: 133 | x = self.x 134 | P = self.P 135 | q = self.q 136 | C = self._rotationMatrix(q) 137 | self.Q = sp.linalg.block_diag(np.eye(3) * ((0.06 * dt) ** 2), np.eye(3) * ((0.0 * dt) ** 2), 138 | np.eye(3) * ((0.001 * dt) ** 2), np.eye(3) * ((0.0 * dt) ** 2)) 139 | Q = self.Q 140 | w = wm * dt 141 | g = np.array([0, 0, 9.8])[np.newaxis].T 142 | x_dot = np.concatenate([x[3:6, :], 143 | C.dot((am - x[6:9, :])) - g, 144 | np.zeros(6)[np.newaxis].T 145 | ]) 146 | x_next = x + x_dot * dt 147 | 148 | if np.linalg.norm(w) != 0: 149 | qq = quaternion.as_quat_array(q) 150 | wq = quaternion.from_rotation_vector(w[:, 0] * np.array((0, 0, 1))) 151 | q_next = quaternion.as_float_array(qq * wq) 152 | else: 153 | q_next = q 154 | F = np.block([[np.identity(3, np.float), np.identity(3, np.float) * dt, np.zeros((3, 9))], 155 | [np.zeros((3, 3), np.float), np.identity(3, np.float), -(C.dot(skew(am - x[6:9, :]))) * dt, 156 | -C * dt, np.zeros((3, 3), np.float)], 157 | [np.zeros((3, 6), np.float), self._rotationMatrix( 158 | quaternion.as_float_array(quaternion.from_euler_angles(((wm - x[9:12, :]) * dt)[:, 0]))), 159 | np.zeros((3, 3), np.float), 160 | -np.identity(3, np.float) * dt], 161 | [np.zeros((3, 9), np.float), np.identity(3, np.float), np.zeros((3, 3), np.float)], 162 | [np.zeros((3, 12), np.float), np.identity(3, np.float)]]) 163 | self.P_ = (F.dot(P.dot(F.T)) + self.lamb.dot(Q.dot(self.lamb.T))) 164 | self.dx_ = F.dot(self.dx) 165 | self.k = self.k + 1 166 | self.x_ = x_next 167 | self.q_ = q_next 168 | self.time = t 169 | self.pred = 1 170 | self.uwbInit = 1 171 | 172 | return x_next, q_next 173 | 174 | def fuzzyInference(self, r): 175 | 176 | self.fuzzy.input['r'] = r 177 | self.fuzzy.compute() 178 | 179 | return self.fuzzy.output['s'] 180 | 181 | def correction(self): 182 | pos = self.posOld 183 | vel = self.velOld 184 | measure = np.concatenate((pos, vel))[np.newaxis].T 185 | H = self.H 186 | z = measure - self.x_[:6, :] 187 | check = np.ones(6, int)[np.newaxis].T 188 | S_teo = H.dot(self.P_.dot(H.T)) + self.R 189 | 190 | # Filter outliers 191 | while sum(check)[0] != 0: 192 | inn = z - H.dot(self.dx_) 193 | ep = push(self.innovation, inn) 194 | S = ep.dot(self.sigma.dot(ep.T)) 195 | if self.mode == 2: 196 | break 197 | D = S_teo + H.dot(self.dx_.dot(self.dx_.T.dot(H.T))) 198 | G = S + H.dot(self.dx_.dot(self.dx_.T.dot(H.T))) 199 | m = (np.abs(np.diagonal(G) / np.diagonal(D)))[np.newaxis].T 200 | check = np.greater(m, self.threshold).astype(int)[np.newaxis].T 201 | z = (z * (check * (1 / np.sqrt(m) - 1) + 1)).reshape(-1, 1) 202 | 203 | self.innovation = ep 204 | if self.mode == 0: 205 | r = np.abs(np.trace(S) / np.trace(S_teo) - 1) 206 | s = self.fuzzyInference(r) 207 | elif self.mode == 1: 208 | s = 1 209 | elif self.mode == 2: 210 | s = 0 211 | self.R = np.diag([1, 1, 1, 1, 1, 1]) * 1e-1 212 | 213 | d = (self.lambda_ - self.b) / (self.lambda_ - np.power(self.b, self.k + 1)) 214 | 215 | # Estimate measurement noise covariance 216 | self.R = (1 - np.power(s, self.alpha) * d) * self.R + np.power(s, self.alpha) * d * ( 217 | S - H.dot(self.P_.dot(H.T))) 218 | 219 | # Calculate Kalman gain 220 | self.K = self.P_.dot(H.T.dot(np.linalg.inv(H.dot(self.P_.dot(H.T)) + self.R))) 221 | 222 | # Update error state and its covariance 223 | self.dx = self.K.dot(inn) 224 | self.error = push(self.error, self.dx) 225 | self.P = (np.identity(15, float) - self.K.dot(H)).dot(self.P_) 226 | 227 | # Update the nominal state 228 | dx_pos = np.concatenate((self.dx[:6], self.dx[9:])) 229 | self.x = self.x_ + dx_pos 230 | dq = quaternion.from_euler_angles(np.concatenate((np.zeros(2), self.dx[8]))) 231 | self.q = quaternion.as_float_array(quaternion.from_float_array(self.q_) * dq) 232 | 233 | 234 | # Reset the error state 235 | self.dx = np.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], np.float)[np.newaxis].T 236 | self.dx_ = np.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], np.float)[np.newaxis].T 237 | self.pred = 0 238 | self.k = 0 239 | 240 | def uwbRange2Pos(self): 241 | r = self.range 242 | anc = self.anchorPos 243 | t = rospy.get_time() 244 | dt = t - self.uwbTime 245 | G = anc[0, :] - anc[1:, :] 246 | b = np.square(r[1:]) - np.square(r[0]) + np.square(anc[0, 0]) - np.square(anc[1:, 0]) + np.square( 247 | anc[0, 1]) - np.square(anc[1:, 1]) # + np.square(anc[0,2]) - np.square(anc[1:,2]) 248 | pos_ = 0.5 * np.linalg.inv(G.T.dot(G)).dot(G.T.dot(b)) 249 | pos = self.posOld + self.velOld * dt + self.G * (pos_ - (self.posOld + self.velOld * dt)) 250 | vel = self.velOld + self.H_uwb / dt * (pos_ - (self.posOld + self.velOld * dt)) 251 | self.uwbTime = t 252 | self.posOld = pos 253 | self.velOld = vel 254 | return pos, vel 255 | -------------------------------------------------------------------------------- /src/shfaf.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lorenzoferrini/ins_uwb_positioning/57b9cd87d93a1eb03be54c8b79fd1a10547252a1/src/shfaf.pyc -------------------------------------------------------------------------------- /start_all.sh: -------------------------------------------------------------------------------- 1 | gnome-terminal -- roslaunch ins_uwb_positioning uwb_empty.launch 2 | sleep 5 3 | gnome-terminal -- rosrun ins_uwb_positioning node_sage-husa.py 4 | gnome-terminal -- rosrun rqt_multiplot rqt_multiplot --multiplot-config file://$(rospack find ins_uwb_positioning)/rqt_multiplot.xml 5 | gnome-terminal -- rostopic pub /husky_velocity_controller/cmd_vel geometry_msgs/Twist "linear: 6 | x: 0.5 7 | y: 0.0 8 | z: 0.0 9 | angular: 10 | x: 0.0 11 | y: 0.0 12 | z: 0.2" -r10 13 | 14 | 15 | -------------------------------------------------------------------------------- /worlds/uwb_empty.world: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | model://sun 7 | 8 | 9 | 10 | model://ground_plane 11 | 12 | 13 | 14 | -1 -1 0.5 0 0 0 15 | 1 16 | 17 | 18 | 19 | 20 | 0.2 0.01 0.2 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 9 -1 0.5 0 0 0 29 | 1 30 | 31 | 32 | 33 | 34 | 0.2 0.01 0.2 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | -1 9 0.5 0 0 0 43 | 1 44 | 45 | 46 | 47 | 48 | 0.2 0.01 0.2 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 9 9 0.5 0 0 0 57 | 1 58 | 59 | 60 | 61 | 62 | 0.2 0.01 0.2 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | --------------------------------------------------------------------------------